Skip to content

Commit cf58bd2

Browse files
committed
Merge branch 'release/1.0.2'
2 parents 1393f8c + 48d8173 commit cf58bd2

12 files changed

+816
-112
lines changed

README.md

+12-3
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ Just like [optimize-css-assets-webpack-plugin](http://github.com/NMFR/optimize-c
99

1010
Using npm:
1111
```shell
12-
$ npm install --save-dev optimize-cssnano-plugin
12+
$ npm install --save-dev @intervolga/optimize-cssnano-plugin
1313
```
1414

1515
## Configuration:
1616

1717
``` javascript
18-
var OptimizeCssnanoPlugin = require('@intervolga/optimize-cssnano-plugin');
18+
const OptimizeCssnanoPlugin = require('@intervolga/optimize-cssnano-plugin');
1919
module.exports = {
2020
module: {
2121
loaders: [
@@ -25,7 +25,16 @@ module.exports = {
2525
plugins: [
2626
new ExtractTextPlugin("styles.css"),
2727

28-
new OptimizeCssnanoPlugin()
28+
new OptimizeCssnanoPlugin({
29+
sourceMap: nextSourceMap,
30+
cssnanoOptions: {
31+
preset: ['default', {
32+
discardComments: {
33+
removeAll: true,
34+
},
35+
}],
36+
},
37+
}),
2938
]
3039
}
3140
```

index.js

+17-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const cssnano = require('cssnano');
2+
const postcss = require('postcss');
23

34
/**
45
* Optimize cssnano plugin
@@ -10,14 +11,13 @@ function OptimizeCssnanoPlugin(options) {
1011
sourceMap: false,
1112
cssnanoOptions: {
1213
preset: 'default',
13-
map: false,
1414
},
1515
}, options);
1616

1717
if (this.options.sourceMap) {
18-
this.options.cssnanoOptions.map = Object.assign(
18+
this.options.sourceMap = Object.assign(
1919
{inline: false},
20-
this.options.cssnanoOptions.map || {});
20+
this.options.sourceMap || {});
2121
}
2222
}
2323

@@ -41,27 +41,36 @@ OptimizeCssnanoPlugin.prototype.apply = function(compiler) {
4141
const originalCss = asset.source();
4242

4343
// Options for particalar cssnano call
44-
const options = JSON.parse(JSON.stringify(self.options.cssnanoOptions));
45-
options.to = assetName;
44+
const postCssOptions = {
45+
from: assetName,
46+
to: assetName,
47+
map: false,
48+
};
49+
const cssnanoOptions = self.options.cssnanoOptions;
4650

4751
// Extract or remove previous map
4852
const mapName = assetName + '.map';
49-
if (options.map) {
53+
if (self.options.sourceMap) {
5054
// Use previous map if exist...
5155
if (compilation.assets[mapName]) {
5256
const mapObject = JSON.parse(compilation.assets[mapName].source());
5357

5458
// ... and not empty
5559
if (mapObject.sources.length > 0 || mapObject.mappings.length > 0) {
56-
options.map.prev = compilation.assets[mapName].source();
60+
postCssOptions.map = Object.assign({
61+
prev: compilation.assets[mapName].source(),
62+
}, self.options.sourceMap);
63+
} else {
64+
postCssOptions.map = Object.assign({}, self.options.sourceMap);
5765
}
5866
}
5967
} else {
6068
delete compilation.assets[mapName];
6169
}
6270

6371
// Run minification
64-
const promise = cssnano.process(originalCss, options)
72+
const promise = postcss([cssnano(cssnanoOptions)])
73+
.process(originalCss, postCssOptions)
6574
.then((result) => {
6675
if (hasErrors) {
6776
return;

0 commit comments

Comments
 (0)