UNPKG

1.59 kBJavaScriptView Raw
1const fs = require('fs');
2const autoprefixer = require('autoprefixer');
3const postcss = require('postcss');
4const sass = require('node-sass');
5const CleanCSS = require('clean-css');
6
7// configuration
8const inputCSSFile = './src/scss/phonon.scss';
9const outputDir = './dist/css';
10const outputCSSFile = `${outputDir}/phonon.css`;
11const outputSourceMapFile = `${outputCSSFile}.map`;
12const outputCSSFileMinified = `${outputDir}/phonon.min.css`;
13const outputSourceMapFileMinified = `${outputCSSFileMinified}.map`;
14
15module.exports = async function () {
16 console.log('Building CSS...');
17
18 try {
19 const sassResult = sass.renderSync({
20 file: inputCSSFile,
21 sourceMap: true,
22 outFile: outputCSSFile, // keep file path for source map
23 });
24
25 // auto
26 const cssResult = await postcss([ autoprefixer ]).process(sassResult.css, {
27 from: outputCSSFile,
28 to: outputCSSFile,
29 map: { inline: false } // not embedded in the output CSS
30 });
31
32 cssResult.warnings().forEach(function (warn) {
33 console.warn(warn.toString());
34 });
35
36 // Real disk write
37
38 // CSS
39 fs.writeFileSync(outputCSSFile, cssResult.css);
40
41 // SourceMap
42 fs.writeFileSync(outputSourceMapFile, cssResult.map);
43
44 // minify CSS
45 const output = new CleanCSS({sourceMap: true, rebaseTo: outputDir}).minify(cssResult.css, cssResult.map.toString());
46
47 // write minified CSS
48 fs.writeFileSync(outputCSSFileMinified, output.styles);
49
50 // Source maps
51 fs.writeFileSync(outputSourceMapFileMinified, output.sourceMap);
52 } catch (e) {
53 console.trace(e);
54 }
55}