From 35c8097b6ae30834a0b25fd07fb2935bb8871801 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 25 Jul 2017 12:53:18 +0200 Subject: [PATCH] Make sure it's a real module when choosing for ModuleConcatenation fixes #5095 --- lib/optimize/ModuleConcatenationPlugin.js | 3 ++- .../scope-hoisting/dll-plugin/index.js | 5 +++++ .../dll-plugin/webpack.config.js | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/configCases/scope-hoisting/dll-plugin/index.js create mode 100644 test/configCases/scope-hoisting/dll-plugin/webpack.config.js diff --git a/lib/optimize/ModuleConcatenationPlugin.js b/lib/optimize/ModuleConcatenationPlugin.js index 174cdbaa89f..6ae7dc61492 100644 --- a/lib/optimize/ModuleConcatenationPlugin.js +++ b/lib/optimize/ModuleConcatenationPlugin.js @@ -7,6 +7,7 @@ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency"); const ConcatenatedModule = require("./ConcatenatedModule"); const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency"); +const HarmonyCompatibilityDependency = require("../dependencies/HarmonyCompatibilityDependency"); class ModuleConcatenationPlugin { constructor(options) { @@ -39,7 +40,7 @@ class ModuleConcatenationPlugin { const possibleInners = new Set(); for(const module of modules) { // Only harmony modules are valid for optimization - if(!module.meta || !module.meta.harmonyModule) { + if(!module.meta || !module.meta.harmonyModule || !module.dependencies.some(d => d instanceof HarmonyCompatibilityDependency)) { continue; } diff --git a/test/configCases/scope-hoisting/dll-plugin/index.js b/test/configCases/scope-hoisting/dll-plugin/index.js new file mode 100644 index 00000000000..90b28ea4e68 --- /dev/null +++ b/test/configCases/scope-hoisting/dll-plugin/index.js @@ -0,0 +1,5 @@ +import value from "dll/module"; + +it("should not scope hoist delegated modules", function() { + value.should.be.eql("ok"); +}); diff --git a/test/configCases/scope-hoisting/dll-plugin/webpack.config.js b/test/configCases/scope-hoisting/dll-plugin/webpack.config.js new file mode 100644 index 00000000000..07ad2bf34a4 --- /dev/null +++ b/test/configCases/scope-hoisting/dll-plugin/webpack.config.js @@ -0,0 +1,19 @@ +var webpack = require("../../../../"); +module.exports = { + plugins: [ + new webpack.DllReferencePlugin({ + name: "function(id) { return {default: 'ok'}; }", + scope: "dll", + content: { + "./module": { + id: 1, + meta: { + harmonyModule: true + }, + exports: ["default"] + } + } + }), + new webpack.optimize.ModuleConcatenationPlugin() + ] +};