Skip to content

Commit 08ddad2

Browse files
committed
Replace NormalModuleFactory#plugin() calls
1 parent f737b26 commit 08ddad2

24 files changed

+122
-66
lines changed

lib/APIPlugin.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,16 @@ class APIPlugin {
3939
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
4040
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
4141

42-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], parser => {
42+
const handler = parser => {
4343
Object.keys(REPLACEMENTS).forEach(key => {
4444
parser.plugin(`expression ${key}`, NO_WEBPACK_REQUIRE[key] ? ParserHelpers.toConstantDependency(REPLACEMENTS[key]) : ParserHelpers.toConstantDependencyWithWebpackRequire(REPLACEMENTS[key]));
4545
parser.plugin(`evaluate typeof ${key}`, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key]));
4646
});
47-
});
47+
};
48+
49+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("APIPlugin", handler);
50+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("APIPlugin", handler);
51+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("APIPlugin", handler);
4852
});
4953
}
5054
}

lib/CompatibilityPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class CompatibilityPlugin {
1717
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
1818
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
1919

20-
normalModuleFactory.plugin("parser javascript/auto", (parser, parserOptions) => {
20+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("CompatibilityPlugin", (parser, parserOptions) => {
2121

2222
if(typeof parserOptions.browserify !== "undefined" && !parserOptions.browserify)
2323
return;

lib/ConstPlugin.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ConstPlugin {
2020
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
2121
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
2222

23-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], parser => {
23+
const handler = parser => {
2424
parser.plugin("statement if", statement => {
2525
const param = parser.evaluateExpression(statement.test);
2626
const bool = param.asBool();
@@ -54,7 +54,11 @@ class ConstPlugin {
5454
parser.state.current.addVariable("__resourceQuery", JSON.stringify(getQuery(parser.state.module.resource)));
5555
return true;
5656
});
57-
});
57+
};
58+
59+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("ConstPlugin", handler);
60+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("ConstPlugin", handler);
61+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("ConstPlugin", handler);
5862
});
5963
}
6064
}

lib/DefinePlugin.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class DefinePlugin {
3838
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
3939
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
4040

41-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], (parser) => {
41+
const handler = (parser) => {
4242
const walkDefinitions = (definitions, prefix) => {
4343
Object.keys(definitions).forEach((key) => {
4444
const code = definitions[key];
@@ -120,7 +120,11 @@ class DefinePlugin {
120120
};
121121

122122
walkDefinitions(definitions, "");
123-
});
123+
};
124+
125+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("DefinePlugin", handler);
126+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("DefinePlugin", handler);
127+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("DefinePlugin", handler);
124128
});
125129
}
126130
}

lib/ExtendedAPIPlugin.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ExtendedAPIPlugin {
2727
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
2828

2929
const mainTemplate = compilation.mainTemplate;
30-
mainTemplate.plugin("require-extensions", (source, chunk, hash) => {
30+
mainTemplate.hooks.requireExtensions.tap("ExtendedAPIPlugin", (source, chunk, hash) => {
3131
const buf = [source];
3232
buf.push("");
3333
buf.push("// __webpack_hash__");
@@ -37,14 +37,18 @@ class ExtendedAPIPlugin {
3737
buf.push(`${mainTemplate.requireFn}.cn = ${JSON.stringify(chunk.name)};`);
3838
return Template.asString(buf);
3939
});
40-
mainTemplate.plugin("global-hash", () => true);
40+
mainTemplate.hooks.globalHash.tap("ExtendedAPIPlugin", () => true);
4141

42-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], (parser, parserOptions) => {
42+
const handler = (parser, parserOptions) => {
4343
Object.keys(REPLACEMENTS).forEach(key => {
4444
parser.plugin(`expression ${key}`, ParserHelpers.toConstantDependencyWithWebpackRequire(REPLACEMENTS[key]));
4545
parser.plugin(`evaluate typeof ${key}`, ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key]));
4646
});
47-
});
47+
};
48+
49+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("ExtendedAPIPlugin", handler);
50+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("ExtendedAPIPlugin", handler);
51+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("ExtendedAPIPlugin", handler);
4852
});
4953
}
5054
}

lib/HotModuleReplacementPlugin.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,7 @@ module.exports = class HotModuleReplacementPlugin {
192192
]);
193193
});
194194

195-
// TODO add HMR support for javascript/esm
196-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic"], (parser, parserOptions) => {
195+
const handler = (parser, parserOptions) => {
197196
parser.plugin("expression __webpack_hash__", ParserHelpers.toConstantDependencyWithWebpackRequire("__webpack_require__.h()"));
198197
parser.plugin("evaluate typeof __webpack_hash__", ParserHelpers.evaluateToString("string"));
199198
parser.plugin("evaluate Identifier module.hot", expr => {
@@ -252,7 +251,11 @@ module.exports = class HotModuleReplacementPlugin {
252251
}
253252
});
254253
parser.plugin("expression module.hot", ParserHelpers.skipTraversal);
255-
});
254+
};
255+
256+
// TODO add HMR support for javascript/esm
257+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("HotModuleReplacementPlugin", handler);
258+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("HotModuleReplacementPlugin", handler);
256259
});
257260
}
258261

lib/JavascriptModulesPlugin.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@ class JavascriptModulesPlugin {
1111
compiler.hooks.compilation.tap("JavascriptModulesPlugin", (compilation, {
1212
normalModuleFactory
1313
}) => {
14-
normalModuleFactory.plugin(["create-parser javascript/auto", "create-parser javascript/dynamic", "create-parser javascript/esm"], () => {
14+
const createParser = () => {
1515
return new Parser();
16-
});
16+
};
17+
18+
normalModuleFactory.hooks.createParser.for("javascript/auto").tap("JavascriptModulesPlugin", createParser);
19+
normalModuleFactory.hooks.createParser.for("javascript/dynamic").tap("JavascriptModulesPlugin", createParser);
20+
normalModuleFactory.hooks.createParser.for("javascript/esm").tap("JavascriptModulesPlugin", createParser);
1721
});
1822
}
1923
}

lib/JsonModulesPlugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ class JsonModulesPlugin {
1212
compiler.hooks.compilation.tap("JsonModulesPlugin", (compilation, {
1313
normalModuleFactory
1414
}) => {
15-
normalModuleFactory.plugin("create-parser json", () => {
15+
normalModuleFactory.hooks.createParser.for("json").tap("JsonModulesPlugin", () => {
1616
return new JsonParser();
1717
});
18-
compilation.moduleTemplates.javascript.plugin("content", (moduleSource, module) => {
18+
compilation.moduleTemplates.javascript.hooks.content.tap("JsonModulesPlugin", (moduleSource, module) => {
1919
if(module.type && module.type.startsWith("json")) {
2020
const source = new ConcatSource();
2121
source.add(`${module.moduleArgument}.exports = `);

lib/NodeStuffPlugin.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ class NodeStuffPlugin {
2323
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
2424
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
2525

26-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic"], (parser, parserOptions) => {
27-
26+
const handler = (parser, parserOptions) => {
2827
if(parserOptions.node === false)
2928
return;
3029

@@ -92,7 +91,10 @@ class NodeStuffPlugin {
9291
}
9392
return ParserHelpers.addParsedVariableToModule(parser, "module", `require(${JSON.stringify(moduleJsPath)})(module)`);
9493
});
95-
});
94+
};
95+
96+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("NodeStuffPlugin", handler);
97+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("NodeStuffPlugin", handler);
9698
});
9799
}
98100
}

lib/ProvidePlugin.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ class ProvidePlugin {
2121
}) => {
2222
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
2323
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
24-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], (parser, parserOptions) => {
24+
const handler = (parser, parserOptions) => {
2525
Object.keys(definitions).forEach(name => {
2626
var request = [].concat(definitions[name]);
2727
var splittedName = name.split(".");
2828
if(splittedName.length > 0) {
2929
splittedName.slice(1).forEach((_, i) => {
3030
const name = splittedName.slice(0, i + 1).join(".");
31-
parser.plugin(`can-rename ${name}`, ParserHelpers.approve);
31+
parser.hooks.canRename.for(name).tap("ProvidePlugin", ParserHelpers.approve);
3232
});
3333
}
34-
parser.plugin(`expression ${name}`, expr => {
34+
parser.hooks.expression.for(name).tap("ProvidePlugin", expr => {
3535
let nameIdentifier = name;
3636
const scopedName = name.indexOf(".") >= 0;
3737
let expression = `require(${JSON.stringify(request[0])})`;
@@ -50,7 +50,10 @@ class ProvidePlugin {
5050
return true;
5151
});
5252
});
53-
});
53+
};
54+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("ProvidePlugin", handler);
55+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("ProvidePlugin", handler);
56+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("ProvidePlugin", handler);
5457
});
5558
}
5659
}

lib/RequireJsStuffPlugin.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ module.exports = class RequireJsStuffPlugin {
1616
}) => {
1717
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
1818
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
19-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic"], (parser, parserOptions) => {
20-
19+
const handler = (parser, parserOptions) => {
2120
if(typeof parserOptions.requireJs !== "undefined" && !parserOptions.requireJs)
2221
return;
2322

@@ -26,7 +25,9 @@ module.exports = class RequireJsStuffPlugin {
2625

2726
parser.plugin("expression require.version", ParserHelpers.toConstantDependency(JSON.stringify("0.0.0")));
2827
parser.plugin("expression requirejs.onError", ParserHelpers.toConstantDependencyWithWebpackRequire("__webpack_require__.oe"));
29-
});
28+
};
29+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("RequireJsStuffPlugin", handler);
30+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("RequireJsStuffPlugin", handler);
3031
});
3132
}
3233

lib/UseStrictPlugin.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class UseStrictPlugin {
1111
compiler.hooks.compilation.tap("UseStrictPlugin", (compilation, {
1212
normalModuleFactory
1313
}) => {
14-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], (parser) => {
14+
const handler = (parser) => {
1515
const parserInstance = parser;
1616
parser.hooks.program.tap("UseStrictPlugin", (ast) => {
1717
const firstNode = ast.body[0];
@@ -28,7 +28,11 @@ class UseStrictPlugin {
2828
parserInstance.state.module.buildInfo.strict = true;
2929
}
3030
});
31-
});
31+
};
32+
33+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("UseStrictPlugin", handler);
34+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("UseStrictPlugin", handler);
35+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("UseStrictPlugin", handler);
3236
});
3337
}
3438
}

lib/WebAssemblyModulesPlugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class WebAssemblyModulesPlugin {
1111
compiler.hooks.compilation.tap("WebAssemblyModulesPlugin", (compilation, {
1212
normalModuleFactory
1313
}) => {
14-
normalModuleFactory.plugin("create-parser webassembly/experimental", () => {
14+
normalModuleFactory.hooks.createParser.for("webassembly/experimental").tap("WebAssemblyModulesPlugin", () => {
1515
return new WebAssemblyParser();
1616
});
1717
});

lib/WebpackOptionsApply.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,18 +339,18 @@ class WebpackOptionsApply extends OptionsApply {
339339

340340
compiler.hooks.afterPlugins.call(compiler);
341341
if(!compiler.inputFileSystem) throw new Error("No input filesystem provided");
342-
compiler.resolverFactory.plugin("resolve-options normal", resolveOptions => {
342+
compiler.resolverFactory.hooks.resolveOptions.for("normal").tap("WebpackOptionsApply", resolveOptions => {
343343
return Object.assign({
344344
fileSystem: compiler.inputFileSystem
345345
}, options.resolve, resolveOptions);
346346
});
347-
compiler.resolverFactory.plugin("resolve-options context", resolveOptions => {
347+
compiler.resolverFactory.hooks.resolveOptions.for("context").tap("WebpackOptionsApply", resolveOptions => {
348348
return Object.assign({
349349
fileSystem: compiler.inputFileSystem,
350350
resolveToContext: true
351351
}, options.resolve, resolveOptions);
352352
});
353-
compiler.resolverFactory.plugin("resolve-options loader", resolveOptions => {
353+
compiler.resolverFactory.hooks.resolveOptions.for("loader").tap("WebpackOptionsApply", resolveOptions => {
354354
return Object.assign({
355355
fileSystem: compiler.inputFileSystem
356356
}, options.resolveLoader, resolveOptions);

lib/dependencies/AMDPlugin.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ class AMDPlugin {
5656
compilation.dependencyFactories.set(LocalModuleDependency, new NullFactory());
5757
compilation.dependencyTemplates.set(LocalModuleDependency, new LocalModuleDependency.Template());
5858

59-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic"], (parser, parserOptions) => {
60-
59+
const handler = (parser, parserOptions) => {
6160
if(typeof parserOptions.amd !== "undefined" && !parserOptions.amd)
6261
return;
6362

@@ -96,10 +95,13 @@ class AMDPlugin {
9695
});
9796
parser.plugin("typeof require", ParserHelpers.toConstantDependency(JSON.stringify("function")));
9897
parser.plugin("evaluate typeof require", ParserHelpers.evaluateToString("function"));
99-
});
98+
};
99+
100+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("AMDPlugin", handler);
101+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("AMDPlugin", handler);
100102
});
101103
compiler.hooks.afterResolvers.tap("AMDPlugin", () => {
102-
compiler.resolverFactory.plugin("resolver normal", resolver => resolver.apply(
104+
compiler.resolverFactory.hooks.resolver.for("normal").tap("AMDPlugin", resolver => resolver.apply(
103105
new AliasPlugin("described-resolve", {
104106
name: "amdefine",
105107
alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")

lib/dependencies/CommonJsPlugin.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ class CommonJsPlugin {
4747
compilation.dependencyFactories.set(RequireHeaderDependency, new NullFactory());
4848
compilation.dependencyTemplates.set(RequireHeaderDependency, new RequireHeaderDependency.Template());
4949

50-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic"], (parser, parserOptions) => {
51-
50+
const handler = (parser, parserOptions) => {
5251
if(typeof parserOptions.commonjs !== "undefined" && !parserOptions.commonjs)
5352
return;
5453

@@ -82,7 +81,10 @@ class CommonJsPlugin {
8281
new CommonJsRequireDependencyParserPlugin(options),
8382
new RequireResolveDependencyParserPlugin(options)
8483
);
85-
});
84+
};
85+
86+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("CommonJsPlugin", handler);
87+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("CommonJsPlugin", handler);
8688
});
8789
}
8890
}

lib/dependencies/HarmonyModulesPlugin.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ class HarmonyModulesPlugin {
5959
compilation.dependencyFactories.set(HarmonyAcceptImportDependency, normalModuleFactory);
6060
compilation.dependencyTemplates.set(HarmonyAcceptImportDependency, new HarmonyAcceptImportDependency.Template());
6161

62-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/esm"], (parser, parserOptions) => {
63-
62+
const handler = (parser, parserOptions) => {
6463
if(typeof parserOptions.harmony !== "undefined" && !parserOptions.harmony)
6564
return;
6665

@@ -69,7 +68,10 @@ class HarmonyModulesPlugin {
6968
new HarmonyImportDependencyParserPlugin(this.options),
7069
new HarmonyExportDependencyParserPlugin(this.options)
7170
);
72-
});
71+
};
72+
73+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("HarmonyModulesPlugin", handler);
74+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("HarmonyModulesPlugin", handler);
7375
});
7476
}
7577
}

lib/dependencies/ImportPlugin.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,18 @@ class ImportPlugin {
3333
compilation.dependencyFactories.set(ImportContextDependency, contextModuleFactory);
3434
compilation.dependencyTemplates.set(ImportContextDependency, new ImportContextDependency.Template());
3535

36-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic", "parser javascript/esm"], (parser, parserOptions) => {
37-
36+
const handler = (parser, parserOptions) => {
3837
if(typeof parserOptions.import !== "undefined" && !parserOptions.import)
3938
return;
4039

4140
parser.apply(
4241
new ImportParserPlugin(options)
4342
);
44-
});
43+
};
44+
45+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("ImportPlugin", handler);
46+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("ImportPlugin", handler);
47+
normalModuleFactory.hooks.parser.for("javascript/esm").tap("ImportPlugin", handler);
4548
});
4649
}
4750
}

lib/dependencies/RequireContextPlugin.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ class RequireContextPlugin {
3030

3131
compilation.dependencyFactories.set(ContextElementDependency, normalModuleFactory);
3232

33-
normalModuleFactory.plugin(["parser javascript/auto", "parser javascript/dynamic"], (parser, parserOptions) => {
34-
33+
const handler = (parser, parserOptions) => {
3534
if(typeof parserOptions.requireContext !== "undefined" && !parserOptions.requireContext)
3635
return;
3736

3837
parser.apply(new RequireContextDependencyParserPlugin());
39-
});
38+
};
39+
40+
normalModuleFactory.hooks.parser.for("javascript/auto").tap("RequireContextPlugin", handler);
41+
normalModuleFactory.hooks.parser.for("javascript/dynamic").tap("RequireContextPlugin", handler);
4042

4143
contextModuleFactory.hooks.alternatives.tapAsync("RequireContextPlugin", (items, callback) => {
4244
if(items.length === 0) return callback(null, items);

0 commit comments

Comments
 (0)