From 27e3a28653fc50c98ea082f04687763a58e7604c Mon Sep 17 00:00:00 2001 From: Joshua Wiens Date: Fri, 7 Jul 2017 07:28:39 -0500 Subject: [PATCH] fix: Module sorting --- .babelrc | 3 ++- src/index.js | 3 +-- .../webpack-integration.test.js.snap | 10 ++++++++++ .../cases/chunk-modules-css-wrong-order/a.css | 3 +++ test/cases/chunk-modules-css-wrong-order/a.js | 2 ++ .../cases/chunk-modules-css-wrong-order/b.css | 3 +++ test/cases/chunk-modules-css-wrong-order/b.js | 1 + .../expected/file.css | 6 ++++++ .../chunk-modules-css-wrong-order/index.js | 1 + .../webpack.config.js | 19 +++++++++++++++++++ 10 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 test/cases/chunk-modules-css-wrong-order/a.css create mode 100644 test/cases/chunk-modules-css-wrong-order/a.js create mode 100644 test/cases/chunk-modules-css-wrong-order/b.css create mode 100644 test/cases/chunk-modules-css-wrong-order/b.js create mode 100644 test/cases/chunk-modules-css-wrong-order/expected/file.css create mode 100644 test/cases/chunk-modules-css-wrong-order/index.js create mode 100644 test/cases/chunk-modules-css-wrong-order/webpack.config.js diff --git a/.babelrc b/.babelrc index 11e1c3be..52db72d8 100644 --- a/.babelrc +++ b/.babelrc @@ -27,9 +27,10 @@ "presets": [ "env" ], + "sourceMap" : "inline", "plugins": [ "transform-object-rest-spread" ] } } -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js index 02f061de..2f4259e0 100644 --- a/src/index.js +++ b/src/index.js @@ -144,7 +144,6 @@ class ExtractTextPlugin { async.forEach(chunks, (chunk, callback) => { // eslint-disable-line no-shadow const extractedChunk = extractedChunks[chunks.indexOf(chunk)]; const shouldExtract = !!(options.allChunks || isInitialOrHasNoParents(chunk)); - chunk.sortModules(); async.forEach(chunk.mapModules(c => c), (module, callback) => { // eslint-disable-line no-shadow let meta = module[NS]; if (meta && (!meta.options.id || meta.options.id === id)) { @@ -194,7 +193,7 @@ class ExtractTextPlugin { compilation.plugin('additional-assets', (callback) => { extractedChunks.forEach((extractedChunk) => { if (extractedChunk.getNumberOfModules()) { - extractedChunk.modules.sort((a, b) => { + extractedChunk.sortModules((a, b) => { if (!options.ignoreOrder && isInvalidOrder(a, b)) { compilation.errors.push(new OrderUndefinedError(a.getOriginalModule())); compilation.errors.push(new OrderUndefinedError(b.getOriginalModule())); diff --git a/test/__snapshots__/webpack-integration.test.js.snap b/test/__snapshots__/webpack-integration.test.js.snap index e9fa3bbf..d5b5a1b7 100644 --- a/test/__snapshots__/webpack-integration.test.js.snap +++ b/test/__snapshots__/webpack-integration.test.js.snap @@ -1,5 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Webpack Integration Tests chunk-modules-css-wrong-order 1`] = ` +".block { + font-size: 16px; +} +.App { + text-align: center; +} +" +`; + exports[`Webpack Integration Tests chunk-modules-nested-ordered-by-id 1`] = ` "body { margin: 0; diff --git a/test/cases/chunk-modules-css-wrong-order/a.css b/test/cases/chunk-modules-css-wrong-order/a.css new file mode 100644 index 00000000..49316133 --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/a.css @@ -0,0 +1,3 @@ +.App { + text-align: center; +} diff --git a/test/cases/chunk-modules-css-wrong-order/a.js b/test/cases/chunk-modules-css-wrong-order/a.js new file mode 100644 index 00000000..58a603ab --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/a.js @@ -0,0 +1,2 @@ +require('./b.js'); +require('./a.css'); diff --git a/test/cases/chunk-modules-css-wrong-order/b.css b/test/cases/chunk-modules-css-wrong-order/b.css new file mode 100644 index 00000000..a7aa906f --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/b.css @@ -0,0 +1,3 @@ +.block { + font-size: 16px; +} diff --git a/test/cases/chunk-modules-css-wrong-order/b.js b/test/cases/chunk-modules-css-wrong-order/b.js new file mode 100644 index 00000000..96c31b3d --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/b.js @@ -0,0 +1 @@ +require('./b.css'); diff --git a/test/cases/chunk-modules-css-wrong-order/expected/file.css b/test/cases/chunk-modules-css-wrong-order/expected/file.css new file mode 100644 index 00000000..e4ea19ae --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/expected/file.css @@ -0,0 +1,6 @@ +.block { + font-size: 16px; +} +.App { + text-align: center; +} diff --git a/test/cases/chunk-modules-css-wrong-order/index.js b/test/cases/chunk-modules-css-wrong-order/index.js new file mode 100644 index 00000000..d87ec6cc --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/index.js @@ -0,0 +1 @@ +require('./a.js'); diff --git a/test/cases/chunk-modules-css-wrong-order/webpack.config.js b/test/cases/chunk-modules-css-wrong-order/webpack.config.js new file mode 100644 index 00000000..879e979d --- /dev/null +++ b/test/cases/chunk-modules-css-wrong-order/webpack.config.js @@ -0,0 +1,19 @@ +import ExtractTextPlugin from '../../../src/index'; + +module.exports = { + entry: './index', + module: { + loaders: [ + { + test: /\.css$/, + use: ExtractTextPlugin.extract({ + fallback: { loader: 'style-loader' }, + use: { loader: 'css-loader', }, + }) + }, + ], + }, + plugins: [ + new ExtractTextPlugin('file.css'), + ], +};