Buckets:
| /* | |
| MIT License http://www.opensource.org/licenses/mit-license.php | |
| Author Tobias Koppers @sokra | |
| */ | |
| ; | |
| /** @typedef {import("../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescription */ | |
| /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} Entry */ | |
| /** @typedef {import("./Compiler")} Compiler */ | |
| /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */ | |
| const PLUGIN_NAME = "EntryOptionPlugin"; | |
| class EntryOptionPlugin { | |
| /** | |
| * @param {Compiler} compiler the compiler instance one is tapping into | |
| * @returns {void} | |
| */ | |
| apply(compiler) { | |
| compiler.hooks.entryOption.tap(PLUGIN_NAME, (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 | |
| ); | |
| const descImport = | |
| /** @type {Exclude<EntryDescription["import"], undefined>} */ | |
| (desc.import); | |
| for (const entry of descImport) { | |
| 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.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; | |
Xet Storage Details
- Size:
- 2.8 kB
- Xet hash:
- 7efaf92beb928d1faecfd974c12f7acc54b8f7eb391b839349ff2a533da36cdb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.