summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/EntryOptionPlugin.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
commitd1d9f00b1bd660842addf5e6b1d1b64c852a9eea (patch)
tree60fb37ae73a1109d95301de5ec9b61b5726a4b61 /node_modules/webpack/lib/EntryOptionPlugin.js
parent7c85166c4cbdd862fc4252007d2df5befcbc2a58 (diff)
added hover prefixer
Diffstat (limited to 'node_modules/webpack/lib/EntryOptionPlugin.js')
-rw-r--r--node_modules/webpack/lib/EntryOptionPlugin.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/EntryOptionPlugin.js b/node_modules/webpack/lib/EntryOptionPlugin.js
new file mode 100644
index 00000000..357cff69
--- /dev/null
+++ b/node_modules/webpack/lib/EntryOptionPlugin.js
@@ -0,0 +1,93 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+/** @typedef {import("../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescription */
+/** @typedef {import("../declarations/WebpackOptions").EntryNormalized} Entry */
+/** @typedef {import("./Compiler")} Compiler */
+/** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
+
+class EntryOptionPlugin {
+ /**
+ * @param {Compiler} compiler the compiler instance one is tapping into
+ * @returns {void}
+ */
+ apply(compiler) {
+ compiler.hooks.entryOption.tap("EntryOptionPlugin", (context, entry) => {
+ EntryOptionPlugin.applyEntryOption(compiler, context, entry);
+ return true;
+ });
+ }
+
+ /**
+ * @param {Compiler} compiler the compiler
+ * @param {string} context context directory
+ * @param {Entry} entry request
+ * @returns {void}
+ */
+ static applyEntryOption(compiler, context, entry) {
+ if (typeof entry === "function") {
+ const DynamicEntryPlugin = require("./DynamicEntryPlugin");
+ new DynamicEntryPlugin(context, entry).apply(compiler);
+ } else {
+ const EntryPlugin = require("./EntryPlugin");
+ for (const name of Object.keys(entry)) {
+ const desc = entry[name];
+ const options = EntryOptionPlugin.entryDescriptionToOptions(
+ compiler,
+ name,
+ desc
+ );
+ for (const entry of desc.import) {
+ new EntryPlugin(context, entry, options).apply(compiler);
+ }
+ }
+ }
+ }
+
+ /**
+ * @param {Compiler} compiler the compiler
+ * @param {string} name entry name
+ * @param {EntryDescription} desc entry description
+ * @returns {EntryOptions} options for the entry
+ */
+ static entryDescriptionToOptions(compiler, name, desc) {
+ /** @type {EntryOptions} */
+ const options = {
+ name,
+ filename: desc.filename,
+ runtime: desc.runtime,
+ layer: desc.layer,
+ dependOn: desc.dependOn,
+ baseUri: desc.baseUri,
+ publicPath: desc.publicPath,
+ chunkLoading: desc.chunkLoading,
+ asyncChunks: desc.asyncChunks,
+ wasmLoading: desc.wasmLoading,
+ library: desc.library
+ };
+ if (desc.layer !== undefined && !compiler.options.experiments.layers) {
+ throw new Error(
+ "'entryOptions.layer' is only allowed when 'experiments.layers' is enabled"
+ );
+ }
+ if (desc.chunkLoading) {
+ const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
+ EnableChunkLoadingPlugin.checkEnabled(compiler, desc.chunkLoading);
+ }
+ if (desc.wasmLoading) {
+ const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
+ EnableWasmLoadingPlugin.checkEnabled(compiler, desc.wasmLoading);
+ }
+ if (desc.library) {
+ const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
+ EnableLibraryPlugin.checkEnabled(compiler, desc.library.type);
+ }
+ return options;
+ }
+}
+
+module.exports = EntryOptionPlugin;