Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joneff/baka
Dead stupid sass inline importer (inliner)
https://github.com/joneff/baka
inline-importer inliner sass sass-importer
Last synced: 7 days ago
JSON representation
Dead stupid sass inline importer (inliner)
- Host: GitHub
- URL: https://github.com/joneff/baka
- Owner: joneff
- License: mit
- Created: 2019-09-19T13:34:35.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2024-03-01T16:10:58.000Z (10 months ago)
- Last Synced: 2024-11-17T04:53:55.173Z (about 1 month ago)
- Topics: inline-importer, inliner, sass, sass-importer
- Language: TypeScript
- Size: 1.82 MB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# baka
[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.
## Installation
```shell
npm install @joneff/baka --save-dev
```## Usage
```js
// compile
const baka = require('@joneff/baka');
const result = baka.compile('src/style.scss');
console.log(result.content);// build
const baka = require('@joneff/baka');
baka.build('src/style.scss', 'dist/style.scss');// build files
const baka = require('@joneff/baka');
baka.buildFiles('src/**/*.scss', { path: 'dist', filename: '[name].scss'});
```## API
The api is modeled after sass js api with some inspiration from webpack.
### compile
```ts
function compile( 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].
### build
```ts
function build( file: string, outFile: string, options?: BuildOptions ) : void;
```Internally calls [compile] for `file` and if successful, writes the content of [CompileResult] result to `outFile`.
### buildFiles
```ts
function buildFiles( 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`](#outputoptions).
### Options
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:
#### OutputOptions
```ts
type OutputOptions = {
path: string;
filename: string
};
```Instructs baka on how and where it should output the result of compilation. Similar to [webpack output configuration](https://webpack.js.org/configuration/output), but only supports `path` and `filename`. Both are optional.
* `path` specifies the output directory. Preferably a relative path, though absolute paths are accepted as well. Defaults to `path.resolve(process.cwd(), 'dist')`.
* `filename` specifies the name of the output file. It supports the following [template strings](https://webpack.js.org/configuration/output/#template-strings): `[file]`, `[path]`, `[base]`, `[name]` and `[ext]` and they have the same meaning as with webpack. Defaults to `[name]-flat[ext]`.## Bugs
I am not really a fan of complex regex for simple tasks, like parsing `@import`. The following is valid syntax:
```scss
/**/ @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.
## Contributing?
Sure.
[baka]: https://github.com/joneff/baka
[compile]: #compile
[build]: #build
[buildFiles]: #buildfiles
[options]: #options
[CompileResult]: #compileresult
[Exception]: #exception