Created
July 20, 2017 04:30
-
-
Save RhinoLu/42aec764e43d34c8aa93e4f7778e311a to your computer and use it in GitHub Desktop.
Node render SASS/SCSS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <reference path="../node_modules/@types/node/index.d.ts" /> | |
let path = require("path"); | |
let fs = require("fs"); | |
let sass = require('node-sass'); // SCSS 轉 CSS | |
let browserslist = require('../package.json').browserslist; | |
let autoprefixer = require('autoprefixer'); // 增加瀏覽器支援,依賴 postcss | |
let postcss = require('postcss'); // 增加瀏覽器支援 | |
let CleanCSS = require('clean-css'); // 壓縮 minify | |
let plugin = autoprefixer({ browsers: browserslist}); // 使用 package.json | |
let target_scss: string; | |
/*process.argv.forEach((val, index) => { | |
console.log(`${index}: ${val}`); | |
});*/ | |
if(process.argv.length > 2 && process.argv[2].indexOf(".scss") > -1){ | |
// console.time("postcss"); | |
target_scss = process.argv[2]; | |
convertToOriginalCSS(target_scss); | |
} else { | |
console.log("?"); | |
} | |
function convertToOriginalCSS(scss_filename: string): void { | |
// console.log("convertToOriginalCSS : " + scss_filename); | |
sass.render({ | |
file: scss_filename | |
}, (err, result) => { | |
if(err){ | |
console.log(err); | |
} else { | |
convertToPostCSS(result.css.toString()); | |
} | |
}); | |
} | |
function convertToPostCSS(css: string): void { | |
// console.log(css); | |
postcss([plugin ]).process(css).then(function (result) { | |
result.warnings().forEach(function (warn) { | |
console.warn(warn.toString()); | |
}); | |
//console.log(result.css); | |
//console.log(new CleanCSS({}).minify(result.css).styles); | |
saveFile(result.css, target_scss.replace(".scss", ".css")); // 未壓縮 | |
// saveFile(new CleanCSS({}).minify(result.css).styles, target_scss.replace(".scss", ".css")); // 壓縮 | |
}); | |
} | |
// save output css | |
function saveFile(res: any, outputPath: string): void { | |
// console.log(res); | |
fs.writeFile(outputPath, res, function(err) { | |
if(err) { return console.log(err); } | |
console.log(outputPath + " was saved!"); | |
console.timeEnd("postcss") | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment