aboutsummaryrefslogtreecommitdiff
path: root/node_modules/optimize-css-assets-webpack-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/optimize-css-assets-webpack-plugin')
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/.babelrc25
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/.nvmrc1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/LICENSE21
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/README.md57
l---------node_modules/optimize-css-assets-webpack-plugin/node_modules/.bin/webpack1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/package.json51
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/src/index.js72
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/__snapshots__/webpack-integration.test.js.snap22
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/a_optimize-me.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/b_optimize-me.css7
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/c.css9
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/expected/file.css1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/index.js10
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/webpack.config.js26
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/a.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/b.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/expected/file.css1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/index.js2
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/webpack.config.js23
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/a.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/b.css4
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/expected/file.css1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/index.js2
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/webpack.config.js24
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/a_optimize-me.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/b_optimize-me.css7
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/c_as-is.css9
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/as_is.css9
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/optimize.css1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/index.js3
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/webpack.config.js40
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/a.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/b.css6
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/expected/file.css1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/index.js2
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/webpack.config.js24
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/plugin.test.js26
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/util/default.css1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/util/helpers.js40
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/util/index.js1
-rw-r--r--node_modules/optimize-css-assets-webpack-plugin/test/webpack-integration.test.js82
41 files changed, 648 insertions, 0 deletions
diff --git a/node_modules/optimize-css-assets-webpack-plugin/.babelrc b/node_modules/optimize-css-assets-webpack-plugin/.babelrc
new file mode 100644
index 00000000..bd4aa184
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/.babelrc
@@ -0,0 +1,25 @@
+{
+ "presets": [
+ [
+ "env",
+ {
+ "useBuiltIns": true,
+ "targets": {
+ "node": "current"
+ },
+ "exclude": [
+ "transform-async-to-generator",
+ "transform-regenerator"
+ ]
+ }
+ ]
+ ],
+ "plugins": [
+ [
+ "transform-object-rest-spread",
+ {
+ "useBuiltIns": true
+ }
+ ]
+ ]
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/.nvmrc b/node_modules/optimize-css-assets-webpack-plugin/.nvmrc
new file mode 100644
index 00000000..641c7df3
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/.nvmrc
@@ -0,0 +1 @@
+v8.9.4
diff --git a/node_modules/optimize-css-assets-webpack-plugin/LICENSE b/node_modules/optimize-css-assets-webpack-plugin/LICENSE
new file mode 100644
index 00000000..1973738e
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Nuno Rodrigues
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/optimize-css-assets-webpack-plugin/README.md b/node_modules/optimize-css-assets-webpack-plugin/README.md
new file mode 100644
index 00000000..71e2bf48
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/README.md
@@ -0,0 +1,57 @@
+# Optimize CSS Assets Webpack Plugin
+
+A Webpack plugin to optimize \ minimize CSS assets.
+
+## What does the plugin do?
+
+It will search for CSS assets during the Webpack build and will optimize \ minimize the CSS (by default it uses [cssnano](http://github.com/ben-eb/cssnano) but a custom CSS processor can be specified).
+
+### Solves [extract-text-webpack-plugin](http://github.com/webpack/extract-text-webpack-plugin) CSS duplication problem:
+
+Since [extract-text-webpack-plugin](http://github.com/webpack/extract-text-webpack-plugin) only bundles (merges) text chunks, if its used to bundle CSS, the bundle might have duplicate entries (chunks can be duplicate free but when merged, duplicate CSS can be created).
+
+## Installation:
+
+Using npm:
+```shell
+$ npm install --save-dev optimize-css-assets-webpack-plugin
+```
+
+> :warning: For webpack v3 or below please use `optimize-css-assets-webpack-plugin@3.2.0`. The `optimize-css-assets-webpack-plugin@4.0.0` version and above supports webpack v4.
+
+## Configuration:
+
+The plugin can receive the following options (all of them are optional):
+* assetNameRegExp: A regular expression that indicates the names of the assets that should be optimized \ minimized. The regular expression provided is run against the filenames of the files exported by the ExtractTextPlugin instances in your configuration, not the filenames of your source CSS files. Defaults to `/\.css$/g`
+* cssProcessor: The CSS processor used to optimize \ minimize the CSS, defaults to [cssnano](http://github.com/ben-eb/cssnano). This should be a function that follows cssnano.process interface (receives a CSS and options parameters and returns a Promise).
+* cssProcessorOptions: The options passed to the cssProcessor, defaults to `{}`
+* canPrint: A boolean indicating if the plugin can print messages to the console, defaults to `true`
+
+## Example:
+
+``` javascript
+var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
+ }
+ ]
+ },
+ plugins: [
+ new ExtractTextPlugin('styles.css'),
+ new OptimizeCssAssetsPlugin({
+ assetNameRegExp: /\.optimize\.css$/g,
+ cssProcessor: require('cssnano'),
+ cssProcessorOptions: { safe: true, discardComments: { removeAll: true } },
+ canPrint: true
+ })
+ ]
+};
+```
+
+## License
+
+MIT (http://www.opensource.org/licenses/mit-license.php)
diff --git a/node_modules/optimize-css-assets-webpack-plugin/node_modules/.bin/webpack b/node_modules/optimize-css-assets-webpack-plugin/node_modules/.bin/webpack
new file mode 120000
index 00000000..8a1900f6
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/node_modules/.bin/webpack
@@ -0,0 +1 @@
+../../../webpack/bin/webpack.js \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/package.json b/node_modules/optimize-css-assets-webpack-plugin/package.json
new file mode 100644
index 00000000..79d69236
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "optimize-css-assets-webpack-plugin",
+ "version": "4.0.3",
+ "description": "A Webpack plugin to optimize \\ minimize CSS assets.",
+ "keywords": [
+ "CSS",
+ "duplicate",
+ "extract-text-webpack-plugin",
+ "minimize",
+ "optimize",
+ "remove",
+ "webpack"
+ ],
+ "homepage": "http://github.com/NMFR/optimize-css-assets-webpack-plugin",
+ "license": "MIT",
+ "author": "Nuno Rodrigues",
+ "main": "src/index.js",
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/NMFR/optimize-css-assets-webpack-plugin.git"
+ },
+ "scripts": {
+ "test": "jest",
+ "test:watch": "jest --watch"
+ },
+ "jest": {
+ "testEnvironment": "node",
+ "watchPathIgnorePatterns": [
+ "<rootDir>/test/js/*.*"
+ ]
+ },
+ "dependencies": {
+ "cssnano": "^3.10.0",
+ "last-call-webpack-plugin": "^3.0.0"
+ },
+ "devDependencies": {
+ "babel-core": "^6.26.0",
+ "babel-jest": "^22.1.0",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-polyfill": "^6.26.0",
+ "babel-preset-env": "^1.6.1",
+ "css-loader": "^0.28.9",
+ "extract-text-webpack-plugin": "next",
+ "jest": "^22.1.4",
+ "style-loader": "^0.20.1",
+ "webpack": "^4.9.1"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0"
+ }
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/src/index.js b/node_modules/optimize-css-assets-webpack-plugin/src/index.js
new file mode 100644
index 00000000..4cfb8a50
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/src/index.js
@@ -0,0 +1,72 @@
+const LastCallWebpackPlugin = require('last-call-webpack-plugin');
+
+class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
+ constructor(options) {
+ super({
+ assetProcessors: [
+ {
+ phase: LastCallWebpackPlugin.PHASES.OPTIMIZE_CHUNK_ASSETS,
+ regExp: (options && options.assetNameRegExp) || /\.css$/g,
+ processor: (assetName, asset, assets) =>
+ this.processCss(assetName, asset, assets),
+ }
+ ],
+ canPrint: options && options.canPrint,
+ });
+
+ this.options.assetNameRegExp = !options || !options.assetNameRegExp ?
+ /\.css$/g :
+ options.assetNameRegExp;
+ this.options.cssProcessor = !options || !options.cssProcessor ?
+ require('cssnano') :
+ options.cssProcessor;
+ this.options.cssProcessorOptions = !options || options.cssProcessorOptions === undefined ?
+ {} :
+ options.cssProcessorOptions;
+ }
+
+ buildPluginDescriptor() {
+ return { name: 'OptimizeCssAssetsWebpackPlugin' };
+ }
+
+ processCss(assetName, asset, assets) {
+ const css = asset.sourceAndMap ? asset.sourceAndMap() : { source: asset.source() };
+ const processOptions = Object.assign(
+ { from: assetName, to: assetName },
+ this.options.cssProcessorOptions
+ );
+
+ if (processOptions.map && !processOptions.map.prev) {
+ try {
+ let map = css.map;
+ if (!map) {
+ const mapJson = assets.getAsset(assetName + '.map');
+ if (mapJson) {
+ map = JSON.parse(mapJson);
+ }
+ }
+ if (
+ map &&
+ (
+ (map.sources && map.sources.length > 0) ||
+ (map.mappings && map.mappings.length > 0)
+ )
+ ) {
+ processOptions.map = Object.assign({ prev: map }, processOptions.map);
+ }
+ } catch (err) {
+ console.warn('OptimizeCssAssetsPlugin.processCss() Error getting previous source map', err);
+ }
+ }
+ return this.options
+ .cssProcessor.process(css.source, processOptions)
+ .then(r => {
+ if (processOptions.map && r.map && r.map.toString) {
+ assets.setAsset(assetName + '.map', r.map.toString());
+ }
+ return r.css;
+ });
+ }
+}
+
+module.exports = OptimizeCssAssetsWebpackPlugin;
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/__snapshots__/webpack-integration.test.js.snap b/node_modules/optimize-css-assets-webpack-plugin/test/__snapshots__/webpack-integration.test.js.snap
new file mode 100644
index 00000000..b3b3b515
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/__snapshots__/webpack-integration.test.js.snap
@@ -0,0 +1,22 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Webpack Integration Tests assetNameRegExp-no-source 1`] = `"body{color:red}a{color:blue}body{margin:0;color:red}p{margin:1000px}body{color:red;padding:0;margin:0}p{padding:500px;padding:1000px}"`;
+
+exports[`Webpack Integration Tests duplicate-css-exists-without-plugin 1`] = `"body{color:red}a{color:blue}body{color:red}p{color:green}"`;
+
+exports[`Webpack Integration Tests only-assetNameRegExp-processed 1`] = `
+"body {
+ color: red;
+ padding: 0;
+ margin: 0;
+}
+p {
+ padding: 500px;
+ padding: 1000px;
+}
+"
+`;
+
+exports[`Webpack Integration Tests only-assetNameRegExp-processed 2`] = `"a{color:blue}body{margin:0;color:red}p{margin:1000px}"`;
+
+exports[`Webpack Integration Tests removes-duplicate-css 1`] = `"a{color:blue}body{color:red}p{color:green}"`;
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/a_optimize-me.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/a_optimize-me.css
new file mode 100644
index 00000000..8e7ce09f
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/a_optimize-me.css
@@ -0,0 +1,6 @@
+body {
+ color: red;
+}
+a {
+ color: blue;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/b_optimize-me.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/b_optimize-me.css
new file mode 100644
index 00000000..e2dbd7e5
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/b_optimize-me.css
@@ -0,0 +1,7 @@
+body {
+ margin: 0;
+ color: red;
+}
+p {
+ margin: 1000px;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/c.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/c.css
new file mode 100644
index 00000000..a26aba2e
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/c.css
@@ -0,0 +1,9 @@
+body {
+ color: red;
+ padding: 0;
+ margin: 0;
+}
+p {
+ padding: 500px;
+ padding: 1000px;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/expected/file.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/expected/file.css
new file mode 100644
index 00000000..5d659bfb
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/expected/file.css
@@ -0,0 +1 @@
+body{color:red}a{color:blue}body{margin:0;color:red}p{margin:1000px}body{color:red;padding:0;margin:0}p{padding:500px;padding:1000px} \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/index.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/index.js
new file mode 100644
index 00000000..3d11b7fc
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/index.js
@@ -0,0 +1,10 @@
+/*
+
+ This test is here to confirm that assetNameRegExp option will apply
+ only to the names of the files exported byt ExtractTextPlugin
+
+*/
+
+require('./a_optimize-me.css');
+require('./b_optimize-me.css');
+require('./c.css');
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/webpack.config.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/webpack.config.js
new file mode 100644
index 00000000..69d62ed4
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/assetNameRegExp-no-source/webpack.config.js
@@ -0,0 +1,26 @@
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import OptimizeCssAssetsPlugin from '../../../src/';
+
+module.exports = {
+ entry: './index',
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: ExtractTextPlugin.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: true }
+ }
+ })
+ },
+ ],
+ },
+ plugins: [
+ new ExtractTextPlugin('file.css'),
+ new OptimizeCssAssetsPlugin({
+ assetNameRegExp: /optimize-me\.css/g
+ })
+ ],
+};
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/a.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/a.css
new file mode 100644
index 00000000..8e7ce09f
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/a.css
@@ -0,0 +1,6 @@
+body {
+ color: red;
+}
+a {
+ color: blue;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/b.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/b.css
new file mode 100644
index 00000000..a286d3e3
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/b.css
@@ -0,0 +1,6 @@
+body {
+ color: red;
+}
+p {
+ color: green;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/expected/file.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/expected/file.css
new file mode 100644
index 00000000..060a716e
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/expected/file.css
@@ -0,0 +1 @@
+body{color:red}a{color:blue}body{color:red}p{color:green} \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/index.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/index.js
new file mode 100644
index 00000000..a2a7578a
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/index.js
@@ -0,0 +1,2 @@
+require('./a.css');
+require('./b.css');
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/webpack.config.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/webpack.config.js
new file mode 100644
index 00000000..c1b29d44
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/duplicate-css-exists-without-plugin/webpack.config.js
@@ -0,0 +1,23 @@
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import OptimizeCssAssetsPlugin from '../../../src/';
+
+module.exports = {
+ entry: './index',
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: ExtractTextPlugin.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: true }
+ }
+ })
+ },
+ ],
+ },
+ plugins: [
+ new ExtractTextPlugin('file.css')
+ ],
+};
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/a.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/a.css
new file mode 100644
index 00000000..443957a6
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/a.css
@@ -0,0 +1,6 @@
+#root {
+ background-color: #f00;
+}
+body {
+ text-align: center;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/b.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/b.css
new file mode 100644
index 00000000..b67b6bd8
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/b.css
@@ -0,0 +1,4 @@
+#root {
+ width: 640px;
+ height: 360px;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/expected/file.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/expected/file.css
new file mode 100644
index 00000000..d3173b78
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/expected/file.css
@@ -0,0 +1 @@
+#root{width:640px;height:360px;background-color:red}body{text-align:center} \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/index.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/index.js
new file mode 100644
index 00000000..a2a7578a
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/index.js
@@ -0,0 +1,2 @@
+require('./a.css');
+require('./b.css');
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/webpack.config.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/webpack.config.js
new file mode 100644
index 00000000..bc01d74f
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/mergePropertiesForSelectorWithOtherStylesPresentIssue52/webpack.config.js
@@ -0,0 +1,24 @@
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import OptimizeCssAssetsPlugin from '../../../src/';
+
+module.exports = {
+ entry: './index',
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: ExtractTextPlugin.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: true }
+ }
+ })
+ },
+ ],
+ },
+ plugins: [
+ new ExtractTextPlugin('file.css'),
+ new OptimizeCssAssetsPlugin()
+ ],
+};
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/a_optimize-me.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/a_optimize-me.css
new file mode 100644
index 00000000..8e7ce09f
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/a_optimize-me.css
@@ -0,0 +1,6 @@
+body {
+ color: red;
+}
+a {
+ color: blue;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/b_optimize-me.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/b_optimize-me.css
new file mode 100644
index 00000000..e2dbd7e5
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/b_optimize-me.css
@@ -0,0 +1,7 @@
+body {
+ margin: 0;
+ color: red;
+}
+p {
+ margin: 1000px;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/c_as-is.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/c_as-is.css
new file mode 100644
index 00000000..a26aba2e
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/c_as-is.css
@@ -0,0 +1,9 @@
+body {
+ color: red;
+ padding: 0;
+ margin: 0;
+}
+p {
+ padding: 500px;
+ padding: 1000px;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/as_is.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/as_is.css
new file mode 100644
index 00000000..a26aba2e
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/as_is.css
@@ -0,0 +1,9 @@
+body {
+ color: red;
+ padding: 0;
+ margin: 0;
+}
+p {
+ padding: 500px;
+ padding: 1000px;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/optimize.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/optimize.css
new file mode 100644
index 00000000..3f7a2e9b
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/expected/optimize.css
@@ -0,0 +1 @@
+a{color:blue}body{margin:0;color:red}p{margin:1000px} \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/index.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/index.js
new file mode 100644
index 00000000..d889e4ce
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/index.js
@@ -0,0 +1,3 @@
+require('./a_optimize-me.css');
+require('./b_optimize-me.css');
+require('./c_as-is.css');
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/webpack.config.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/webpack.config.js
new file mode 100644
index 00000000..38701c3b
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/only-assetNameRegExp-processed/webpack.config.js
@@ -0,0 +1,40 @@
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import OptimizeCssAssetsPlugin from '../../../src/';
+
+const notToProcess = new ExtractTextPlugin('as_is.css');
+const toProcess = new ExtractTextPlugin('optimize.css');
+
+module.exports = {
+ entry: './index',
+ module: {
+ rules: [
+ {
+ test: /as-is\.css$/,
+ use: notToProcess.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: false }
+ }
+ })
+ },
+ {
+ test: /optimize-me\.css$/,
+ use: toProcess.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: false }
+ }
+ })
+ }
+ ],
+ },
+ plugins: [
+ notToProcess,
+ toProcess,
+ new OptimizeCssAssetsPlugin({
+ assetNameRegExp: /optimize\.css/g
+ })
+ ],
+};
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/a.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/a.css
new file mode 100644
index 00000000..8e7ce09f
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/a.css
@@ -0,0 +1,6 @@
+body {
+ color: red;
+}
+a {
+ color: blue;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/b.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/b.css
new file mode 100644
index 00000000..a286d3e3
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/b.css
@@ -0,0 +1,6 @@
+body {
+ color: red;
+}
+p {
+ color: green;
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/expected/file.css b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/expected/file.css
new file mode 100644
index 00000000..9f0b4d55
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/expected/file.css
@@ -0,0 +1 @@
+a{color:blue}body{color:red}p{color:green} \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/index.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/index.js
new file mode 100644
index 00000000..a2a7578a
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/index.js
@@ -0,0 +1,2 @@
+require('./a.css');
+require('./b.css');
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/webpack.config.js b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/webpack.config.js
new file mode 100644
index 00000000..bc01d74f
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/cases/removes-duplicate-css/webpack.config.js
@@ -0,0 +1,24 @@
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import OptimizeCssAssetsPlugin from '../../../src/';
+
+module.exports = {
+ entry: './index',
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: ExtractTextPlugin.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: true }
+ }
+ })
+ },
+ ],
+ },
+ plugins: [
+ new ExtractTextPlugin('file.css'),
+ new OptimizeCssAssetsPlugin()
+ ],
+};
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/plugin.test.js b/node_modules/optimize-css-assets-webpack-plugin/test/plugin.test.js
new file mode 100644
index 00000000..1284ba6e
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/plugin.test.js
@@ -0,0 +1,26 @@
+import OptimizeCssAssetsPlugin from '../src/';
+
+describe('plugin test', () => {
+ it('does not throw when called', () => {
+ expect(() => {
+ new OptimizeCssAssetsPlugin();
+ }).not.toThrow();
+ });
+
+ it('can override default parameters', () => {
+ const assetNameRegExp = /\.optimize\.css$/
+ const cssProcessor = {};
+ const cssProcessorOptions = { discardComments: { removeAll: true } };
+ const canPrint = false;
+ const plugin = new OptimizeCssAssetsPlugin({
+ assetNameRegExp,
+ cssProcessor,
+ cssProcessorOptions,
+ canPrint
+ });
+ expect(plugin.options.assetNameRegExp).toEqual(assetNameRegExp);
+ expect(plugin.options.cssProcessor).toEqual(cssProcessor);
+ expect(plugin.options.cssProcessorOptions).toEqual(cssProcessorOptions);
+ expect(plugin.options.canPrint).toEqual(canPrint);
+ });
+});
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/util/default.css b/node_modules/optimize-css-assets-webpack-plugin/test/util/default.css
new file mode 100644
index 00000000..b1c34c27
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/util/default.css
@@ -0,0 +1 @@
+html{display:none} \ No newline at end of file
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/util/helpers.js b/node_modules/optimize-css-assets-webpack-plugin/test/util/helpers.js
new file mode 100644
index 00000000..4dc5e74b
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/util/helpers.js
@@ -0,0 +1,40 @@
+import fs from 'fs';
+import path from 'path';
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+
+export function readFileOrEmpty(path) {
+ try {
+ return fs.readFileSync(path, 'utf-8');
+ } catch (e) {
+ return '';
+ }
+}
+
+export const defaultConfig = {
+ entry: './index',
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: ExtractTextPlugin.extract({
+ fallback: { loader: 'style-loader' },
+ use: {
+ loader: 'css-loader',
+ options: { minimize: true }
+ }
+ })
+ },
+ ],
+ },
+ plugins: [],
+ context: __dirname,
+ output: {
+ filename: 'destination.js',
+ path: path.resolve(__dirname, '../', 'js', 'default-exports')
+ }
+};
+
+export function checkForWebpackErrors({err, stats, done}) {
+ if (err) return done(err);
+ if (stats.hasErrors()) return done(new Error(stats.toString()));
+}
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/util/index.js b/node_modules/optimize-css-assets-webpack-plugin/test/util/index.js
new file mode 100644
index 00000000..060068b7
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/util/index.js
@@ -0,0 +1 @@
+require('./default.css');
diff --git a/node_modules/optimize-css-assets-webpack-plugin/test/webpack-integration.test.js b/node_modules/optimize-css-assets-webpack-plugin/test/webpack-integration.test.js
new file mode 100644
index 00000000..424a74c4
--- /dev/null
+++ b/node_modules/optimize-css-assets-webpack-plugin/test/webpack-integration.test.js
@@ -0,0 +1,82 @@
+/* eslint-disable import/no-dynamic-require, global-require */
+import fs from 'fs';
+import path from 'path';
+import webpack from 'webpack';
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import OptimizeCssAssetsPlugin from '../src/';
+import { readFileOrEmpty, defaultConfig, checkForWebpackErrors } from './util/helpers';
+
+const cases = process.env.CASES ? process.env.CASES.split(',') : fs.readdirSync(path.join(__dirname, 'cases'));
+
+describe('Webpack Integration Tests', () => {
+ cases.forEach((testCase) => {
+ if (/^_skip_/.test(testCase)) return;
+ it(testCase, (done) => {
+ const testDirectory = path.join(__dirname, 'cases', testCase);
+ const outputDirectory = path.join(__dirname, 'js', testCase);
+ const expectedDirectory = path.join(testDirectory, 'expected');
+
+ const configFile = path.join(testDirectory, 'webpack.config.js');
+ const config = Object.assign(
+ fs.existsSync(configFile) ? require(configFile) : { entry: { test: './index.js' } },
+ {
+ context: testDirectory,
+ output: {
+ filename: '[name].js',
+ path: outputDirectory
+ }
+ }
+ );
+
+ webpack(config, (err, stats) => {
+ checkForWebpackErrors({ err, stats, done });
+ fs.readdirSync(expectedDirectory).forEach((file) => {
+ const expectedFile = readFileOrEmpty(path.join(expectedDirectory, file));
+ const actualFile = readFileOrEmpty(path.join(outputDirectory, file));
+ expect(actualFile).toEqual(expectedFile);
+ expect(actualFile).toMatchSnapshot();
+ });
+ done();
+ });
+ });
+ });
+
+ it('calls cssProcessor with correct arguments', (done) => {
+ const destination = 'destination.css';
+ const expectedCss = readFileOrEmpty(__dirname + '/util/default.css');
+ const cssProcessorOptions = { discardComments: { removeAll: true } };
+ const cssProcessor = {
+ process: (actualCss, options) => {
+ expect(options).toEqual(expect.objectContaining(cssProcessorOptions));
+ expect(actualCss).toEqual(expectedCss);
+ return Promise.resolve({ css: actualCss });
+ }
+ };
+ const plugin = new OptimizeCssAssetsPlugin({ cssProcessor, cssProcessorOptions });
+ const config = Object.assign(defaultConfig, {plugins: [plugin, new ExtractTextPlugin(destination)]});
+
+ webpack(config, (err, stats) => {
+ checkForWebpackErrors({ err, stats, done });
+ done();
+ });
+ });
+
+ it('writes processed css to destination', (done) => {
+ const destination = 'destination.css';
+ const expectedCss = '.inifinity-pool{overflow:hidden;}';
+ const fakeCssProcessor = {
+ process: jest.fn().mockReturnValue(Promise.resolve({ css: expectedCss }))
+ };
+ const plugin = new OptimizeCssAssetsPlugin({ cssProcessor: fakeCssProcessor });
+ const config = Object.assign(defaultConfig, {plugins: [plugin, new ExtractTextPlugin(destination)]});
+
+ webpack(config, (err, stats) => {
+ checkForWebpackErrors({ err, stats, done });
+ const actualCss = readFileOrEmpty(__dirname + '/js/default-exports/destination.css');
+
+ expect(fakeCssProcessor.process).toHaveBeenCalled();
+ expect(actualCss).toEqual(expectedCss);
+ done();
+ });
+ });
+});