diff --git a/package-lock.json b/package-lock.json index 734f5f26..46110843 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "requires": true, "packages": { "": { - "version": "1.3.6", + "version": "1.3.7", "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", diff --git a/src/index.js b/src/index.js index a30914fb..526da124 100644 --- a/src/index.js +++ b/src/index.js @@ -535,7 +535,11 @@ class MiniCssExtractPlugin { ? Array.from(this.getChunkModules(chunk, chunkGraph)).filter( (module) => module.type === MODULE_TYPE ) - : chunkGraph.getChunkModulesIterableBySourceType(chunk, MODULE_TYPE); + : chunkGraph.getOrderedChunkModulesIterableBySourceType( + chunk, + MODULE_TYPE, + webpack.util.comparators.compareModulesByIdentifier + ); if (modules) { const { hashFunction, hashDigest, hashDigestLength } = outputOptions; diff --git a/test/cases/content-entries-with-same-import/expected/1.a2e2caac15fbc316194f.css b/test/cases/content-entries-with-same-import/expected/1.a2e2caac15fbc316194f.css new file mode 100644 index 00000000..f6a43c7e --- /dev/null +++ b/test/cases/content-entries-with-same-import/expected/1.a2e2caac15fbc316194f.css @@ -0,0 +1,8 @@ +.a { + width: 100px; +} + +.b { + width: 100px; +} + diff --git a/test/cases/content-entries-with-same-import/expected/2.a2e2caac15fbc316194f.css b/test/cases/content-entries-with-same-import/expected/2.a2e2caac15fbc316194f.css new file mode 100644 index 00000000..c40231b8 --- /dev/null +++ b/test/cases/content-entries-with-same-import/expected/2.a2e2caac15fbc316194f.css @@ -0,0 +1,8 @@ +.b { + width: 100px; +} + +.a { + width: 100px; +} + diff --git a/test/cases/content-entries-with-same-import/index.js b/test/cases/content-entries-with-same-import/index.js new file mode 100644 index 00000000..f3b5f43e --- /dev/null +++ b/test/cases/content-entries-with-same-import/index.js @@ -0,0 +1,7 @@ +const app1 = import('./one'); +const app2 = import('./two'); + +// eslint-disable-next-line no-console +console.log(app1); +// eslint-disable-next-line no-console +console.log(app2); diff --git a/test/cases/content-entries-with-same-import/one.js b/test/cases/content-entries-with-same-import/one.js new file mode 100644 index 00000000..f9f16b34 --- /dev/null +++ b/test/cases/content-entries-with-same-import/one.js @@ -0,0 +1,4 @@ +import './style1.css'; +import './style2.css'; + +export default 'one'; diff --git a/test/cases/content-entries-with-same-import/style1.css b/test/cases/content-entries-with-same-import/style1.css new file mode 100644 index 00000000..6e0b4761 --- /dev/null +++ b/test/cases/content-entries-with-same-import/style1.css @@ -0,0 +1,3 @@ +.a { + width: 100px; +} diff --git a/test/cases/content-entries-with-same-import/style2.css b/test/cases/content-entries-with-same-import/style2.css new file mode 100644 index 00000000..16518354 --- /dev/null +++ b/test/cases/content-entries-with-same-import/style2.css @@ -0,0 +1,3 @@ +.b { + width: 100px; +} diff --git a/test/cases/content-entries-with-same-import/two.js b/test/cases/content-entries-with-same-import/two.js new file mode 100644 index 00000000..ea6f0b50 --- /dev/null +++ b/test/cases/content-entries-with-same-import/two.js @@ -0,0 +1,4 @@ +import './style2.css'; +import './style1.css'; + +export default 'two'; diff --git a/test/cases/content-entries-with-same-import/webpack.config.js b/test/cases/content-entries-with-same-import/webpack.config.js new file mode 100644 index 00000000..b317ec1c --- /dev/null +++ b/test/cases/content-entries-with-same-import/webpack.config.js @@ -0,0 +1,21 @@ +import Self from '../../../src'; + +module.exports = { + entry: './index.js', + module: { + rules: [ + { + test: /\.css$/, + use: [Self.loader, 'css-loader'], + }, + ], + }, + output: { + filename: '[name].[contenthash].js', + }, + plugins: [ + new Self({ + filename: '[name].[contenthash].css', + }), + ], +};