| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| const SingleEntryDependency = require("./dependencies/SingleEntryDependency"); |
| |
| /** @typedef {import("./Compiler")} Compiler */ |
| |
| class SingleEntryPlugin { |
| /** |
| * An entry plugin which will handle |
| * creation of the SingleEntryDependency |
| * |
| * @param {string} context context path |
| * @param {string} entry entry path |
| * @param {string} name entry key name |
| */ |
| constructor(context, entry, name) { |
| this.context = context; |
| this.entry = entry; |
| this.name = name; |
| } |
| |
| /** |
| * @param {Compiler} compiler the compiler instance |
| * @returns {void} |
| */ |
| apply(compiler) { |
| compiler.hooks.compilation.tap( |
| "SingleEntryPlugin", |
| (compilation, { normalModuleFactory }) => { |
| compilation.dependencyFactories.set( |
| SingleEntryDependency, |
| normalModuleFactory |
| ); |
| } |
| ); |
| |
| compiler.hooks.make.tapAsync( |
| "SingleEntryPlugin", |
| (compilation, callback) => { |
| const { entry, name, context } = this; |
| |
| const dep = SingleEntryPlugin.createDependency(entry, name); |
| compilation.addEntry(context, dep, name, callback); |
| } |
| ); |
| } |
| |
| /** |
| * @param {string} entry entry request |
| * @param {string} name entry name |
| * @returns {SingleEntryDependency} the dependency |
| */ |
| static createDependency(entry, name) { |
| const dep = new SingleEntryDependency(entry); |
| dep.loc = { name }; |
| return dep; |
| } |
| } |
| |
| module.exports = SingleEntryPlugin; |