From e445a0aeb689138a792cfe102c1a1809609004f5 Mon Sep 17 00:00:00 2001 From: Nick Randall Date: Sat, 21 Apr 2018 21:06:02 -0400 Subject: [PATCH] Minify CSS assets with cssnano if compress option is true (#121) --- package.json | 1 + src/index.js | 8 ++++++-- test/__snapshots__/index.test.js.snap | 26 ++++++++++++++++++++++++++ test/fixtures/basic-css/package.json | 3 +++ test/fixtures/basic-css/src/index.js | 7 +++++++ test/fixtures/basic-css/src/two.css | 5 +++++ 6 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/basic-css/package.json create mode 100644 test/fixtures/basic-css/src/index.js create mode 100644 test/fixtures/basic-css/src/two.css diff --git a/package.json b/package.json index 6611735..f67af49 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "babel-polyfill": "^6.26.0", "camelcase": "^5.0.0", "chalk": "^2.3.0", + "cssnano": "^3.10.0", "es6-promisify": "^6.0.0", "glob": "^7.1.2", "gzip-size": "^4.1.0", diff --git a/src/index.js b/src/index.js index d3fcc0a..045d9f4 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ import chalk from 'chalk'; import { map, series } from 'asyncro'; import glob from 'glob'; import autoprefixer from 'autoprefixer'; +import cssnano from 'cssnano'; import { rollup, watch } from 'rollup'; import nodent from 'rollup-plugin-nodent'; import commonjs from 'rollup-plugin-commonjs'; @@ -220,8 +221,11 @@ function createConfig(options, entry, format, writeMeta) { }), postcss({ plugins: [ - autoprefixer() - ], + autoprefixer(), + options.compress!==false && cssnano({ + preset: 'default' + }) + ].filter(Boolean), // only write out CSS for the first bundle (avoids pointless extra files): inject: false, extract: !!writeMeta diff --git a/test/__snapshots__/index.test.js.snap b/test/__snapshots__/index.test.js.snap index 543f56c..1491d79 100644 --- a/test/__snapshots__/index.test.js.snap +++ b/test/__snapshots__/index.test.js.snap @@ -25,6 +25,32 @@ Build \\"basicLib\\" to dist: 300 B: basic-lib.umd.js" `; +exports[`fixtures basic-css 1`] = ` +"Used script: microbundle + +Directory tree: + +basic-css + dist + basic-css.css + basic-css.js + basic-css.js.map + basic-css.m.js + basic-css.m.js.map + basic-css.umd.js + basic-css.umd.js.map + package.json + src + index.js + two.css + + +Build \\"basicCss\\" to dist: +107 B: basic-css.js +107 B: basic-css.m.js +188 B: basic-css.umd.js" +`; + exports[`fixtures basic-ts 1`] = ` "Used script: microbundle diff --git a/test/fixtures/basic-css/package.json b/test/fixtures/basic-css/package.json new file mode 100644 index 0000000..669ccde --- /dev/null +++ b/test/fixtures/basic-css/package.json @@ -0,0 +1,3 @@ +{ + "name": "basic-css" +} diff --git a/test/fixtures/basic-css/src/index.js b/test/fixtures/basic-css/src/index.js new file mode 100644 index 0000000..be164cf --- /dev/null +++ b/test/fixtures/basic-css/src/index.js @@ -0,0 +1,7 @@ +import './two.css'; + +export default function () { + const el = document.createElement('div') + el.className = "testing"; + return el; +} diff --git a/test/fixtures/basic-css/src/two.css b/test/fixtures/basic-css/src/two.css new file mode 100644 index 0000000..77f5bec --- /dev/null +++ b/test/fixtures/basic-css/src/two.css @@ -0,0 +1,5 @@ +.testing { + display: flex; + color: red; + background: blue; +}