Created
June 16, 2017 08:24
-
-
Save RhinoLu/4f84673617e58a4373662c2f8d7c37fb to your computer and use it in GitHub Desktop.
SCSS > CSS , with POSTCSS
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 plugin = autoprefixer({ browsers: ["> 1%", "last 2 version"] }); // browserslist 瀏覽器支援 (市佔大於 1% 的瀏覽器版本 或 所有瀏覽器最新兩個版本 要廣泛滿足所有條件) | |
//let plugin = autoprefixer({ browsers: ["last 2 version"] }); // browserslist 瀏覽器支援 (所有瀏覽器最新兩個版本) | |
//let plugin = autoprefixer({ browsers: ["> 0%"] }); | |
//let plugin = autoprefixer({ browsers: [""] }); // 不加 prefix | |
//let plugin = autoprefixer({ }); // defaults | |
let plugin = autoprefixer({ browsers: browserslist}); // 使用 package.json | |
let postcss = require('postcss'); // 增加瀏覽器支援 | |
let CleanCSS = require('clean-css'); // 壓縮 minify | |
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 { | |
sass.render({ | |
file: scss_filename | |
}, (err, result) => { | |
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") | |
}); | |
} |
Author
RhinoLu
commented
Jun 16, 2017
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment