From be7936df6b947788f6294864ebfa67c95a0cf06b Mon Sep 17 00:00:00 2001 From: Joshua Wiens Date: Fri, 7 Jul 2017 00:16:32 -0500 Subject: [PATCH] refactor: Update deprecated `chunk.modules` functions (#553) - refactor: Replace usage of chunk.modules with forEachModule, mapModules ect.. BREAKING CHANGE: Updates to `Chunk.mapModules | forEachModule | getNumberOfModules`. This release is not backwards compatible with `Webpack 2.x` due to breaking changes in webpack/webpack#4764 --- package.json | 2 +- src/index.js | 11 ++++++----- test/cases/chunk-modules-ordered-by-id/a.js | 1 + test/cases/chunk-modules-ordered-by-id/b.txt | 3 +++ test/cases/chunk-modules-ordered-by-id/c.txt | 3 +++ .../chunk-modules-ordered-by-id/expected/file.css | 6 ++++++ test/cases/chunk-modules-ordered-by-id/index.js | 2 ++ .../chunk-modules-ordered-by-id/webpack.config.js | 7 +++++++ 8 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 test/cases/chunk-modules-ordered-by-id/a.js create mode 100644 test/cases/chunk-modules-ordered-by-id/b.txt create mode 100644 test/cases/chunk-modules-ordered-by-id/c.txt create mode 100644 test/cases/chunk-modules-ordered-by-id/expected/file.css create mode 100644 test/cases/chunk-modules-ordered-by-id/index.js create mode 100644 test/cases/chunk-modules-ordered-by-id/webpack.config.js diff --git a/package.json b/package.json index 975a6b8b..c2cf23fd 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "node": ">= 4.3 < 5.0.0 || >= 5.10" }, "peerDependencies": { - "webpack": "^3.0.0" + "webpack": "^3.1.0" }, "homepage": "http://github.com/webpack-contrib/extract-text-webpack-plugin", "repository": { diff --git a/src/index.js b/src/index.js index 6105992e..02f061de 100644 --- a/src/index.js +++ b/src/index.js @@ -64,7 +64,7 @@ class ExtractTextPlugin { }, this); } else if (checkedChunks.indexOf(chunk) < 0) { checkedChunks.push(chunk); - chunk.modules.slice().forEach((module) => { + chunk.forEachModule((module) => { intoChunk.addModule(module); module.addChunk(intoChunk); }); @@ -77,7 +77,7 @@ class ExtractTextPlugin { renderExtractedChunk(chunk) { const source = new ConcatSource(); - chunk.modules.forEach((module) => { + chunk.forEachModule((module) => { const moduleSource = module.source(); source.add(this.applyAdditionalInformation(moduleSource, module.additionalInformation)); }, this); @@ -144,7 +144,8 @@ class ExtractTextPlugin { async.forEach(chunks, (chunk, callback) => { // eslint-disable-line no-shadow const extractedChunk = extractedChunks[chunks.indexOf(chunk)]; const shouldExtract = !!(options.allChunks || isInitialOrHasNoParents(chunk)); - async.forEach(chunk.mapModules((c) => { return c; }), (module, callback) => { // eslint-disable-line no-shadow, arrow-body-style + 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)) { const wasExtracted = Array.isArray(meta.content); @@ -181,7 +182,7 @@ class ExtractTextPlugin { }, this); extractedChunks.forEach((extractedChunk) => { if (!isInitialOrHasNoParents(extractedChunk)) { - extractedChunk.modules.slice().forEach((module) => { + extractedChunk.forEachModule((module) => { extractedChunk.removeModule(module); }); } @@ -192,7 +193,7 @@ class ExtractTextPlugin { }); compilation.plugin('additional-assets', (callback) => { extractedChunks.forEach((extractedChunk) => { - if (extractedChunk.modules.length) { + if (extractedChunk.getNumberOfModules()) { extractedChunk.modules.sort((a, b) => { if (!options.ignoreOrder && isInvalidOrder(a, b)) { compilation.errors.push(new OrderUndefinedError(a.getOriginalModule())); diff --git a/test/cases/chunk-modules-ordered-by-id/a.js b/test/cases/chunk-modules-ordered-by-id/a.js new file mode 100644 index 00000000..e72da909 --- /dev/null +++ b/test/cases/chunk-modules-ordered-by-id/a.js @@ -0,0 +1 @@ +require('./c.txt'); diff --git a/test/cases/chunk-modules-ordered-by-id/b.txt b/test/cases/chunk-modules-ordered-by-id/b.txt new file mode 100644 index 00000000..6b0f2b45 --- /dev/null +++ b/test/cases/chunk-modules-ordered-by-id/b.txt @@ -0,0 +1,3 @@ +.block { + color: tomato; +} diff --git a/test/cases/chunk-modules-ordered-by-id/c.txt b/test/cases/chunk-modules-ordered-by-id/c.txt new file mode 100644 index 00000000..b0fb26a3 --- /dev/null +++ b/test/cases/chunk-modules-ordered-by-id/c.txt @@ -0,0 +1,3 @@ +.App { + color: black; +} diff --git a/test/cases/chunk-modules-ordered-by-id/expected/file.css b/test/cases/chunk-modules-ordered-by-id/expected/file.css new file mode 100644 index 00000000..cf83e47d --- /dev/null +++ b/test/cases/chunk-modules-ordered-by-id/expected/file.css @@ -0,0 +1,6 @@ +.block { + color: tomato; +} +.App { + color: black; +} diff --git a/test/cases/chunk-modules-ordered-by-id/index.js b/test/cases/chunk-modules-ordered-by-id/index.js new file mode 100644 index 00000000..5a240449 --- /dev/null +++ b/test/cases/chunk-modules-ordered-by-id/index.js @@ -0,0 +1,2 @@ +require('./a'); +require('./b.txt'); diff --git a/test/cases/chunk-modules-ordered-by-id/webpack.config.js b/test/cases/chunk-modules-ordered-by-id/webpack.config.js new file mode 100644 index 00000000..0fbc2d5c --- /dev/null +++ b/test/cases/chunk-modules-ordered-by-id/webpack.config.js @@ -0,0 +1,7 @@ +var ExtractTextPlugin = require("../../../"); +module.exports = { + entry: "./index", + plugins: [ + new ExtractTextPlugin("file.css") + ] +};