baka is a dead stupid inliner / importer for scss files. Meaning after you run it, you'll end up with a single flattened scss file with little external dependencies.
npm install @joneff/baka --save-dev// compileconstbaka=require('@joneff/baka');constresult=baka.compile('src/style.scss');console.log(result.content);// buildconstbaka=require('@joneff/baka');baka.build('src/style.scss','dist/style.scss');// build filesconstbaka=require('@joneff/baka');baka.buildFiles('src/**/*.scss',{path: 'dist',filename: '[name].scss'});The api is modeled after sass js api with some inspiration from webpack.
functioncompile(file: string,options?: CompileOptions) : CompileResult;Synchronously compiles file to inline its imports. If it succeeds it returns CompileResult, and if it fails it throws an Exception.
functionbuild(file: string,outFile: string,options?: BuildOptions) : void;Internally calls compile for file and if successful, writes the content of CompileResult result to outFile.
functionbuildFiles(fileOrGlob: string|string[],output: OutputOptions,options?: BuildOptions) : void;Internally calls build for each glob result of fileOrGlob and if successful, writes the content of CompileResult result to a location determined by output.
Controls how files are loaded and output. There are a four types of options: CompileOptions and BuildOptions that are identical to SharedOption and OutputOptions. Not all matter all the time. Here are the most important ones:
typeOutputOptions={path: string;filename: string};Instructs baka on how and where it should output the result of compilation. Similar to webpack output configuration, but only supports path and filename. Both are optional.
pathspecifies the output directory. Preferably a relative path, though absolute paths are accepted as well. Defaults topath.resolve(process.cwd(), 'dist').filenamespecifies the name of the output file. It supports the following template strings:[file],[path],[base],[name]and[ext]and they have the same meaning as with webpack. Defaults to[name]-flat[ext].
I am not really a fan of complex regex for simple tasks, like parsing @import. The following is valid syntax:
/**/@import"file.css"; /**///Yet, baka will not match it. So you could say that there are intended bugs. Speaking of which, any framework that doesn't terminate @import statements with ; will not be flattened. That means all frameworks using indented syntax.
Sure.