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
}

0 commit comments

Comments
 (0)