Global utility:
npm install -g @adamlui/scss-to-cssDev dependency (for build scripts):
npm install -D @adamlui/scss-to-cssRuntime dependency (for on-the-fly compilation):
npm install @adamlui/scss-to-cssscss-to-cssOutput example:
Note
Source maps are generated by default unless -S or --no-source-maps is passed
scss-to-css [input_path] [output_path]| Parameter | Description |
|---|---|
[input_path] |
Path to SCSS file or directory (relative to current working directory) |
[output_path] |
Output path for CSS + source maps (defaults to css/ if not provided) |
Note
Files are processed recursively by default unless -R or --no-recursion is passed.
Add to your package.json:
{
"scripts": {
"build:css": "scss-to-css [options]"
}
}Then run:
npm run build:css|
Current directory (outputs to scss-to-cssSpecific directory: scss-to-css path/to/your/directory |
Specific file: scss-to-css path/to/your/file.scssCustom output: scss-to-css input_folder output_folder |
Note: Output CSS is minified unless
-Mor--no-minifyis passed.
| Option | Description |
|---|---|
-n, --dry-run |
Don't compile, just show which files will be processed |
-d, --include-dotfolders |
Include dotfolders in file search |
-S, --no-source-maps |
Prevent source map generation |
-M, --no-minify |
Disable CSS minification |
-R, --no-recursion |
Disable recursive file searching |
-c, --copy |
Copy to clipboard instead of writing to file (single file only) |
-q, --quiet |
Suppress all logging except errors |
| Option | Description |
|---|---|
--ignore-files="file1.scss,file2.scss" |
Files to exclude from compilation |
--comment="Your comment" |
Prepend header comment to CSS (use \n for line breaks) |
| Command | Description |
|---|---|
-h, --help |
Display help screen |
-v, --version |
Show version number |
Import scss-to-css into your app as ESM or CommonJS:
ESM (Node.js 14+):
import * as scssToCSS from '@adamlui/scss-to-css';CommonJS:
const scssToCSS = require('@adamlui/scss-to-css');π‘ Compiles SCSS based on the string input supplied.
const srcCode = 'h1 { font-size: 40px; code { font-face: Roboto Mono }}';
const result = scssToCSS.compile(srcCode);
console.log(result.error); // undefined if no error
console.log(result.code); // 'h1{font-size:40px}h1 code{font-face:Roboto Mono}'Returns object containing srcPath + code + srcMap + error.
Searches for SCSS files recursively and returns array of result objects:
const results = scssToCSS.compile('.');
results.forEach(result => console.log(result.srcPath));
console.log(results[1].code); // Compiled CSS from 2nd file// Example: Return unminified CSS
scssToCSS.compile(inputDir, { minify: false });| Option | Type | Description | Default |
|---|---|---|---|
recursive |
Boolean | Recursively search for nested files | true |
verbose |
Boolean | Show logging in console/terminal | true |
dotFolders |
Boolean | Include dotfolders in file search | false |
minify |
Boolean | Minify output CSS | true |
sourceMaps |
Boolean | Generate CSS source maps | true |
ignoreFiles |
Array | Files (by name) to exclude from compilation | [] |
comment |
String | Header comment to prepend (use \n for line breaks) |
'' |
π‘ Searches for all SCSS files within searchDir and returns an array of filepaths.
const results = scssToCSS.findSCSS('assets/scss', { recursive: false });
console.log(results);
/* Output:
[
'E:\\js\\utils\\scss-to-css\\assets\\scss\\foo.scss',
'E:\\js\\utils\\scss-to-css\\assets\\scss\\bar.scss'
]
*/| Option | Type | Description | Default |
|---|---|---|---|
recursive |
Boolean | Recursively search for nested files | true |
verbose |
Boolean | Show logging in console/terminal | true |
dotFolders |
Boolean | Include dotfolders in file search | false |
ignoreFiles |
Array | Files (by name) to exclude from results | [] |
|
Recursively compress all images to WEBPs |
Recursively minify all JavaScript files |
