mirror of https://github.com/webpack/webpack.git
refactor(types): Improve module type strictness and refactor module type string usages in module subclasses
This commit is contained in:
parent
1018ca80b3
commit
e958ac552b
|
|
@ -49,6 +49,7 @@ const ModuleProfile = require("./ModuleProfile");
|
||||||
const ModuleRestoreError = require("./ModuleRestoreError");
|
const ModuleRestoreError = require("./ModuleRestoreError");
|
||||||
const ModuleStoreError = require("./ModuleStoreError");
|
const ModuleStoreError = require("./ModuleStoreError");
|
||||||
const ModuleTemplate = require("./ModuleTemplate");
|
const ModuleTemplate = require("./ModuleTemplate");
|
||||||
|
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("./RuntimeGlobals");
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
||||||
const RuntimeTemplate = require("./RuntimeTemplate");
|
const RuntimeTemplate = require("./RuntimeTemplate");
|
||||||
const Stats = require("./Stats");
|
const Stats = require("./Stats");
|
||||||
|
|
@ -5121,7 +5122,7 @@ This prevents using hashes of each other and should be avoided.`);
|
||||||
const usedIds = new Set();
|
const usedIds = new Set();
|
||||||
|
|
||||||
for (const module of this.modules) {
|
for (const module of this.modules) {
|
||||||
if (module.type === "runtime") continue;
|
if (module.type === WEBPACK_MODULE_TYPE_RUNTIME) continue;
|
||||||
const moduleId = chunkGraph.getModuleId(module);
|
const moduleId = chunkGraph.getModuleId(module);
|
||||||
if (moduleId === null) continue;
|
if (moduleId === null) continue;
|
||||||
if (usedIds.has(moduleId)) {
|
if (usedIds.has(moduleId)) {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,14 @@ const makeSerializable = require("./util/makeSerializable");
|
||||||
|
|
||||||
/** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */
|
/** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DependenciesBlock is the base class for all Module classes in webpack. It describes a
|
||||||
|
* "block" of dependencies which are pointers to other DependenciesBlock instances. For example
|
||||||
|
* when a Module has a CommonJs require statement, the DependencyBlock for the CommonJs module
|
||||||
|
* would be added as a dependency to the Module. DependenciesBlock is inherited by two types of classes:
|
||||||
|
* Module subclasses and AsyncDependenciesBlock subclasses. The only difference between the two is that
|
||||||
|
* AsyncDependenciesBlock subclasses are used for code-splitting (async boundary) and Module subclasses are not.
|
||||||
|
*/
|
||||||
class DependenciesBlock {
|
class DependenciesBlock {
|
||||||
constructor() {
|
constructor() {
|
||||||
/** @type {Dependency[]} */
|
/** @type {Dependency[]} */
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,8 @@ const {
|
||||||
const {
|
const {
|
||||||
JAVASCRIPT_MODULE_TYPE_AUTO,
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
||||||
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
||||||
JAVASCRIPT_MODULE_TYPE_ESM
|
JAVASCRIPT_MODULE_TYPE_ESM,
|
||||||
|
WEBPACK_MODULE_TYPE_RUNTIME
|
||||||
} = require("./ModuleTypeConstants");
|
} = require("./ModuleTypeConstants");
|
||||||
|
|
||||||
/** @typedef {import("./Chunk")} Chunk */
|
/** @typedef {import("./Chunk")} Chunk */
|
||||||
|
|
@ -564,7 +565,7 @@ class HotModuleReplacementPlugin {
|
||||||
newRuntime
|
newRuntime
|
||||||
);
|
);
|
||||||
if (hash !== oldHash) {
|
if (hash !== oldHash) {
|
||||||
if (module.type === "runtime") {
|
if (module.type === WEBPACK_MODULE_TYPE_RUNTIME) {
|
||||||
newRuntimeModules = newRuntimeModules || [];
|
newRuntimeModules = newRuntimeModules || [];
|
||||||
newRuntimeModules.push(
|
newRuntimeModules.push(
|
||||||
/** @type {RuntimeModule} */ (module)
|
/** @type {RuntimeModule} */ (module)
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ const makeSerializable = require("./util/makeSerializable");
|
||||||
/** @typedef {import("./ExportsInfo").UsageStateType} UsageStateType */
|
/** @typedef {import("./ExportsInfo").UsageStateType} UsageStateType */
|
||||||
/** @typedef {import("./FileSystemInfo")} FileSystemInfo */
|
/** @typedef {import("./FileSystemInfo")} FileSystemInfo */
|
||||||
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
||||||
|
/** @typedef {import("./ModuleTypeConstants").ModuleTypes} ModuleTypes */
|
||||||
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
||||||
/** @typedef {import("./RequestShortener")} RequestShortener */
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
||||||
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
||||||
|
|
@ -129,14 +130,14 @@ const deprecatedNeedRebuild = util.deprecate(
|
||||||
|
|
||||||
class Module extends DependenciesBlock {
|
class Module extends DependenciesBlock {
|
||||||
/**
|
/**
|
||||||
* @param {string} type the module type
|
* @param {ModuleTypes | ""} type the module type, when deserializing the type is not known and is an empty string
|
||||||
* @param {string=} context an optional context
|
* @param {string=} context an optional context
|
||||||
* @param {string=} layer an optional layer in which the module is
|
* @param {string=} layer an optional layer in which the module is
|
||||||
*/
|
*/
|
||||||
constructor(type, context = null, layer = null) {
|
constructor(type, context = null, layer = null) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
/** @type {string} */
|
/** @type {ModuleTypes | ""} */
|
||||||
this.type = type;
|
this.type = type;
|
||||||
/** @type {string | null} */
|
/** @type {string | null} */
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,88 @@ const CSS_MODULE_TYPE_GLOBAL = "css/global";
|
||||||
*/
|
*/
|
||||||
const CSS_MODULE_TYPE_MODULE = "css/module";
|
const CSS_MODULE_TYPE_MODULE = "css/module";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"asset">}
|
||||||
|
* This is the module type used for automatically choosing between `asset/inline`, `asset/resource` based on asset size limit (8096).
|
||||||
|
*/
|
||||||
|
const ASSET_MODULE_TYPE = "asset";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"asset/inline">}
|
||||||
|
* This is the module type used for assets that are inlined as a data URI. This is the equivalent of `url-loader`.
|
||||||
|
*/
|
||||||
|
const ASSET_MODULE_TYPE_INLINE = "asset/inline";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"asset/resource">}
|
||||||
|
* This is the module type used for assets that are copied to the output directory. This is the equivalent of `file-loader`.
|
||||||
|
*/
|
||||||
|
const ASSET_MODULE_TYPE_RESOURCE = "asset/resource";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"asset/source">}
|
||||||
|
* This is the module type used for assets that are imported as source code. This is the equivalent of `raw-loader`.
|
||||||
|
*/
|
||||||
|
const ASSET_MODULE_TYPE_SOURCE = "asset/source";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"asset/raw-data-url">}
|
||||||
|
* TODO: Document what this asset type is for. See css-loader tests for its usage.
|
||||||
|
*/
|
||||||
|
const ASSET_MODULE_TYPE_RAW_DATA_URL = "asset/raw-data-url";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"runtime">}
|
||||||
|
* This is the module type used for the webpack runtime abstractions.
|
||||||
|
*/
|
||||||
|
const WEBPACK_MODULE_TYPE_RUNTIME = "runtime";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"fallback-module">}
|
||||||
|
* This is the module type used for the ModuleFederation feature's FallbackModule class.
|
||||||
|
* TODO: Document this better.
|
||||||
|
*/
|
||||||
|
const WEBPACK_MODULE_TYPE_FALLBACK = "fallback-module";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"remote-module">}
|
||||||
|
* This is the module type used for the ModuleFederation feature's RemoteModule class.
|
||||||
|
* TODO: Document this better.
|
||||||
|
*/
|
||||||
|
const WEBPACK_MODULE_TYPE_REMOTE = "remote-module";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"provide-module">}
|
||||||
|
* This is the module type used for the ModuleFederation feature's ProvideModule class.
|
||||||
|
* TODO: Document this better.
|
||||||
|
*/
|
||||||
|
const WEBPACK_MODULE_TYPE_PROVIDE = "provide-module";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"consume-shared-module">}
|
||||||
|
* This is the module type used for the ModuleFederation feature's ConsumeSharedModule class.
|
||||||
|
*/
|
||||||
|
const WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE = "consume-shared-module";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Readonly<"lazy-compilation-proxy">}
|
||||||
|
* Module type used for `experiments.lazyCompilation` feature. See `LazyCompilationPlugin` for more information.
|
||||||
|
*/
|
||||||
|
const WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY = "lazy-compilation-proxy";
|
||||||
|
|
||||||
|
/** @typedef {"javascript/auto" | "javascript/dynamic" | "javascript/esm"} JavaScriptModuleTypes */
|
||||||
|
/** @typedef {"json"} JSONModuleType */
|
||||||
|
/** @typedef {"webassembly/async" | "webassembly/sync"} WebAssemblyModuleTypes */
|
||||||
|
/** @typedef {"css" | "css/global" | "css/module"} CSSModuleTypes */
|
||||||
|
/** @typedef {"asset" | "asset/inline" | "asset/resource" | "asset/source" | "asset/raw-data-url"} AssetModuleTypes */
|
||||||
|
/** @typedef {"runtime" | "fallback-module" | "remote-module" | "provide-module" | "consume-shared-module" | "lazy-compilation-proxy"} WebpackModuleTypes */
|
||||||
|
/** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CSSModuleTypes | AssetModuleTypes | WebpackModuleTypes} ModuleTypes */
|
||||||
|
|
||||||
|
exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
|
||||||
|
exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
|
||||||
|
exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
|
||||||
|
exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
|
||||||
|
exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
|
||||||
exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
|
exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
|
||||||
exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
|
exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
|
||||||
exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
|
exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
|
||||||
|
|
@ -69,3 +151,11 @@ exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC;
|
||||||
exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
|
exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
|
||||||
exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
|
exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
|
||||||
exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
|
exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
|
||||||
|
exports.WEBPACK_MODULE_TYPE_RUNTIME = WEBPACK_MODULE_TYPE_RUNTIME;
|
||||||
|
exports.WEBPACK_MODULE_TYPE_FALLBACK = WEBPACK_MODULE_TYPE_FALLBACK;
|
||||||
|
exports.WEBPACK_MODULE_TYPE_REMOTE = WEBPACK_MODULE_TYPE_REMOTE;
|
||||||
|
exports.WEBPACK_MODULE_TYPE_PROVIDE = WEBPACK_MODULE_TYPE_PROVIDE;
|
||||||
|
exports.WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE =
|
||||||
|
WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE;
|
||||||
|
exports.WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY =
|
||||||
|
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY;
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ const memoize = require("./util/memoize");
|
||||||
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
||||||
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
||||||
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
||||||
|
/** @typedef {import("./ModuleTypeConstants").JavaScriptModuleTypes} JavaScriptModuleTypes */
|
||||||
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
||||||
/** @typedef {import("./Parser")} Parser */
|
/** @typedef {import("./Parser")} Parser */
|
||||||
/** @typedef {import("./RequestShortener")} RequestShortener */
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
||||||
|
|
@ -201,7 +202,7 @@ makeSerializable(
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} NormalModuleCreateData
|
* @typedef {Object} NormalModuleCreateData
|
||||||
* @property {string=} layer an optional layer in which the module is
|
* @property {string=} layer an optional layer in which the module is
|
||||||
* @property {string} type module type
|
* @property {JavaScriptModuleTypes | ""} type module type
|
||||||
* @property {string} request request string
|
* @property {string} request request string
|
||||||
* @property {string} userRequest request intended by user (without loaders from config)
|
* @property {string} userRequest request intended by user (without loaders from config)
|
||||||
* @property {string} rawRequest request without resolving
|
* @property {string} rawRequest request without resolving
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
const { RawSource } = require("webpack-sources");
|
const { RawSource } = require("webpack-sources");
|
||||||
const OriginalSource = require("webpack-sources").OriginalSource;
|
const OriginalSource = require("webpack-sources").OriginalSource;
|
||||||
const Module = require("./Module");
|
const Module = require("./Module");
|
||||||
|
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
|
||||||
|
|
||||||
/** @typedef {import("webpack-sources").Source} Source */
|
/** @typedef {import("webpack-sources").Source} Source */
|
||||||
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
||||||
|
|
@ -24,7 +25,7 @@ const Module = require("./Module");
|
||||||
/** @typedef {import("./util/Hash")} Hash */
|
/** @typedef {import("./util/Hash")} Hash */
|
||||||
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
||||||
|
|
||||||
const TYPES = new Set(["runtime"]);
|
const TYPES = new Set([WEBPACK_MODULE_TYPE_RUNTIME]);
|
||||||
|
|
||||||
class RuntimeModule extends Module {
|
class RuntimeModule extends Module {
|
||||||
/**
|
/**
|
||||||
|
|
@ -32,7 +33,7 @@ class RuntimeModule extends Module {
|
||||||
* @param {number=} stage an optional stage
|
* @param {number=} stage an optional stage
|
||||||
*/
|
*/
|
||||||
constructor(name, stage = 0) {
|
constructor(name, stage = 0) {
|
||||||
super("runtime");
|
super(WEBPACK_MODULE_TYPE_RUNTIME);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.stage = stage;
|
this.stage = stage;
|
||||||
this.buildMeta = {};
|
this.buildMeta = {};
|
||||||
|
|
@ -137,7 +138,7 @@ class RuntimeModule extends Module {
|
||||||
const generatedCode = this.getGeneratedCode();
|
const generatedCode = this.getGeneratedCode();
|
||||||
if (generatedCode) {
|
if (generatedCode) {
|
||||||
sources.set(
|
sources.set(
|
||||||
"runtime",
|
WEBPACK_MODULE_TYPE_RUNTIME,
|
||||||
this.useSourceMap || this.useSimpleSourceMap
|
this.useSourceMap || this.useSimpleSourceMap
|
||||||
? new OriginalSource(generatedCode, this.identifier())
|
? new OriginalSource(generatedCode, this.identifier())
|
||||||
: new RawSource(generatedCode)
|
: new RawSource(generatedCode)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const { ConcatSource, PrefixSource } = require("webpack-sources");
|
const { ConcatSource, PrefixSource } = require("webpack-sources");
|
||||||
|
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
|
||||||
|
|
||||||
/** @typedef {import("webpack-sources").Source} Source */
|
/** @typedef {import("webpack-sources").Source} Source */
|
||||||
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
|
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
|
||||||
|
|
@ -362,7 +363,7 @@ class Template {
|
||||||
runtimeSource = codeGenerationResults.getSource(
|
runtimeSource = codeGenerationResults.getSource(
|
||||||
module,
|
module,
|
||||||
renderContext.chunk.runtime,
|
renderContext.chunk.runtime,
|
||||||
"runtime"
|
WEBPACK_MODULE_TYPE_RUNTIME
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
const codeGenResult = module.codeGeneration({
|
const codeGenResult = module.codeGeneration({
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ const path = require("path");
|
||||||
const { RawSource } = require("webpack-sources");
|
const { RawSource } = require("webpack-sources");
|
||||||
const ConcatenationScope = require("../ConcatenationScope");
|
const ConcatenationScope = require("../ConcatenationScope");
|
||||||
const Generator = require("../Generator");
|
const Generator = require("../Generator");
|
||||||
|
const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const createHash = require("../util/createHash");
|
const createHash = require("../util/createHash");
|
||||||
const { makePathsRelative } = require("../util/identifier");
|
const { makePathsRelative } = require("../util/identifier");
|
||||||
|
|
@ -122,7 +123,7 @@ const decodeDataUriContent = (encoding, content) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const JS_TYPES = new Set(["javascript"]);
|
const JS_TYPES = new Set(["javascript"]);
|
||||||
const JS_AND_ASSET_TYPES = new Set(["javascript", "asset"]);
|
const JS_AND_ASSET_TYPES = new Set(["javascript", ASSET_MODULE_TYPE]);
|
||||||
const DEFAULT_ENCODING = "base64";
|
const DEFAULT_ENCODING = "base64";
|
||||||
|
|
||||||
class AssetGenerator extends Generator {
|
class AssetGenerator extends Generator {
|
||||||
|
|
@ -228,7 +229,7 @@ class AssetGenerator extends Generator {
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "asset":
|
case ASSET_MODULE_TYPE:
|
||||||
return module.originalSource();
|
return module.originalSource();
|
||||||
default: {
|
default: {
|
||||||
let content;
|
let content;
|
||||||
|
|
@ -406,7 +407,7 @@ class AssetGenerator extends Generator {
|
||||||
*/
|
*/
|
||||||
getSize(module, type) {
|
getSize(module, type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "asset": {
|
case ASSET_MODULE_TYPE: {
|
||||||
const originalSource = module.originalSource();
|
const originalSource = module.originalSource();
|
||||||
|
|
||||||
if (!originalSource) {
|
if (!originalSource) {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,12 @@
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
const {
|
||||||
|
ASSET_MODULE_TYPE_RESOURCE,
|
||||||
|
ASSET_MODULE_TYPE_INLINE,
|
||||||
|
ASSET_MODULE_TYPE,
|
||||||
|
ASSET_MODULE_TYPE_SOURCE
|
||||||
|
} = require("../ModuleTypeConstants");
|
||||||
const { cleverMerge } = require("../util/cleverMerge");
|
const { cleverMerge } = require("../util/cleverMerge");
|
||||||
const { compareModulesByIdentifier } = require("../util/comparators");
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
||||||
const createSchemaValidation = require("../util/create-schema-validation");
|
const createSchemaValidation = require("../util/create-schema-validation");
|
||||||
|
|
@ -61,7 +67,7 @@ const getAssetSourceGenerator = memoize(() =>
|
||||||
require("./AssetSourceGenerator")
|
require("./AssetSourceGenerator")
|
||||||
);
|
);
|
||||||
|
|
||||||
const type = "asset";
|
const type = ASSET_MODULE_TYPE;
|
||||||
const plugin = "AssetModulesPlugin";
|
const plugin = "AssetModulesPlugin";
|
||||||
|
|
||||||
class AssetModulesPlugin {
|
class AssetModulesPlugin {
|
||||||
|
|
@ -75,7 +81,7 @@ class AssetModulesPlugin {
|
||||||
plugin,
|
plugin,
|
||||||
(compilation, { normalModuleFactory }) => {
|
(compilation, { normalModuleFactory }) => {
|
||||||
normalModuleFactory.hooks.createParser
|
normalModuleFactory.hooks.createParser
|
||||||
.for("asset")
|
.for(ASSET_MODULE_TYPE)
|
||||||
.tap(plugin, parserOptions => {
|
.tap(plugin, parserOptions => {
|
||||||
validateParserOptions(parserOptions);
|
validateParserOptions(parserOptions);
|
||||||
parserOptions = cleverMerge(
|
parserOptions = cleverMerge(
|
||||||
|
|
@ -96,35 +102,39 @@ class AssetModulesPlugin {
|
||||||
return new AssetParser(dataUrlCondition);
|
return new AssetParser(dataUrlCondition);
|
||||||
});
|
});
|
||||||
normalModuleFactory.hooks.createParser
|
normalModuleFactory.hooks.createParser
|
||||||
.for("asset/inline")
|
.for(ASSET_MODULE_TYPE_INLINE)
|
||||||
.tap(plugin, parserOptions => {
|
.tap(plugin, parserOptions => {
|
||||||
const AssetParser = getAssetParser();
|
const AssetParser = getAssetParser();
|
||||||
|
|
||||||
return new AssetParser(true);
|
return new AssetParser(true);
|
||||||
});
|
});
|
||||||
normalModuleFactory.hooks.createParser
|
normalModuleFactory.hooks.createParser
|
||||||
.for("asset/resource")
|
.for(ASSET_MODULE_TYPE_RESOURCE)
|
||||||
.tap(plugin, parserOptions => {
|
.tap(plugin, parserOptions => {
|
||||||
const AssetParser = getAssetParser();
|
const AssetParser = getAssetParser();
|
||||||
|
|
||||||
return new AssetParser(false);
|
return new AssetParser(false);
|
||||||
});
|
});
|
||||||
normalModuleFactory.hooks.createParser
|
normalModuleFactory.hooks.createParser
|
||||||
.for("asset/source")
|
.for(ASSET_MODULE_TYPE_SOURCE)
|
||||||
.tap(plugin, parserOptions => {
|
.tap(plugin, parserOptions => {
|
||||||
const AssetSourceParser = getAssetSourceParser();
|
const AssetSourceParser = getAssetSourceParser();
|
||||||
|
|
||||||
return new AssetSourceParser();
|
return new AssetSourceParser();
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const type of ["asset", "asset/inline", "asset/resource"]) {
|
for (const type of [
|
||||||
|
ASSET_MODULE_TYPE,
|
||||||
|
ASSET_MODULE_TYPE_INLINE,
|
||||||
|
ASSET_MODULE_TYPE_RESOURCE
|
||||||
|
]) {
|
||||||
normalModuleFactory.hooks.createGenerator
|
normalModuleFactory.hooks.createGenerator
|
||||||
.for(type)
|
.for(type)
|
||||||
.tap(plugin, generatorOptions => {
|
.tap(plugin, generatorOptions => {
|
||||||
validateGeneratorOptions[type](generatorOptions);
|
validateGeneratorOptions[type](generatorOptions);
|
||||||
|
|
||||||
let dataUrl = undefined;
|
let dataUrl = undefined;
|
||||||
if (type !== "asset/resource") {
|
if (type !== ASSET_MODULE_TYPE_RESOURCE) {
|
||||||
dataUrl = generatorOptions.dataUrl;
|
dataUrl = generatorOptions.dataUrl;
|
||||||
if (!dataUrl || typeof dataUrl === "object") {
|
if (!dataUrl || typeof dataUrl === "object") {
|
||||||
dataUrl = {
|
dataUrl = {
|
||||||
|
|
@ -138,7 +148,7 @@ class AssetModulesPlugin {
|
||||||
let filename = undefined;
|
let filename = undefined;
|
||||||
let publicPath = undefined;
|
let publicPath = undefined;
|
||||||
let outputPath = undefined;
|
let outputPath = undefined;
|
||||||
if (type !== "asset/inline") {
|
if (type !== ASSET_MODULE_TYPE_INLINE) {
|
||||||
filename = generatorOptions.filename;
|
filename = generatorOptions.filename;
|
||||||
publicPath = generatorOptions.publicPath;
|
publicPath = generatorOptions.publicPath;
|
||||||
outputPath = generatorOptions.outputPath;
|
outputPath = generatorOptions.outputPath;
|
||||||
|
|
@ -156,7 +166,7 @@ class AssetModulesPlugin {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
normalModuleFactory.hooks.createGenerator
|
normalModuleFactory.hooks.createGenerator
|
||||||
.for("asset/source")
|
.for(ASSET_MODULE_TYPE_SOURCE)
|
||||||
.tap(plugin, () => {
|
.tap(plugin, () => {
|
||||||
const AssetSourceGenerator = getAssetSourceGenerator();
|
const AssetSourceGenerator = getAssetSourceGenerator();
|
||||||
|
|
||||||
|
|
@ -169,7 +179,7 @@ class AssetModulesPlugin {
|
||||||
|
|
||||||
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
||||||
chunk,
|
chunk,
|
||||||
"asset",
|
ASSET_MODULE_TYPE,
|
||||||
compareModulesByIdentifier
|
compareModulesByIdentifier
|
||||||
);
|
);
|
||||||
if (modules) {
|
if (modules) {
|
||||||
|
|
@ -207,7 +217,7 @@ class AssetModulesPlugin {
|
||||||
"AssetModulesPlugin",
|
"AssetModulesPlugin",
|
||||||
(options, context) => {
|
(options, context) => {
|
||||||
const { codeGenerationResult } = options;
|
const { codeGenerationResult } = options;
|
||||||
const source = codeGenerationResult.sources.get("asset");
|
const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE);
|
||||||
if (source === undefined) return;
|
if (source === undefined) return;
|
||||||
context.assets.set(codeGenerationResult.data.get("filename"), {
|
context.assets.set(codeGenerationResult.data.get("filename"), {
|
||||||
source,
|
source,
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
const { RawSource } = require("webpack-sources");
|
const { RawSource } = require("webpack-sources");
|
||||||
const Module = require("../Module");
|
const Module = require("../Module");
|
||||||
|
const { ASSET_MODULE_TYPE_RAW_DATA_URL } = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const makeSerializable = require("../util/makeSerializable");
|
const makeSerializable = require("../util/makeSerializable");
|
||||||
|
|
||||||
|
|
@ -33,7 +34,7 @@ class RawDataUrlModule extends Module {
|
||||||
* @param {string=} readableIdentifier readable identifier
|
* @param {string=} readableIdentifier readable identifier
|
||||||
*/
|
*/
|
||||||
constructor(url, identifier, readableIdentifier) {
|
constructor(url, identifier, readableIdentifier) {
|
||||||
super("asset/raw-data-url", null);
|
super(ASSET_MODULE_TYPE_RAW_DATA_URL, null);
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this.urlBuffer = url ? Buffer.from(url) : undefined;
|
this.urlBuffer = url ? Buffer.from(url) : undefined;
|
||||||
this.identifierStr = identifier || this.url;
|
this.identifierStr = identifier || this.url;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@ const {
|
||||||
WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
||||||
JAVASCRIPT_MODULE_TYPE_ESM,
|
JAVASCRIPT_MODULE_TYPE_ESM,
|
||||||
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
||||||
WEBASSEMBLY_MODULE_TYPE_SYNC
|
WEBASSEMBLY_MODULE_TYPE_SYNC,
|
||||||
|
ASSET_MODULE_TYPE
|
||||||
} = require("../ModuleTypeConstants");
|
} = require("../ModuleTypeConstants");
|
||||||
const Template = require("../Template");
|
const Template = require("../Template");
|
||||||
const { cleverMerge } = require("../util/cleverMerge");
|
const { cleverMerge } = require("../util/cleverMerge");
|
||||||
|
|
@ -511,7 +512,7 @@ const applyModuleDefaults = (
|
||||||
D(module, "unsafeCache", false);
|
D(module, "unsafeCache", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
F(module.parser, "asset", () => ({}));
|
F(module.parser, ASSET_MODULE_TYPE, () => ({}));
|
||||||
F(module.parser.asset, "dataUrlCondition", () => ({}));
|
F(module.parser.asset, "dataUrlCondition", () => ({}));
|
||||||
if (typeof module.parser.asset.dataUrlCondition === "object") {
|
if (typeof module.parser.asset.dataUrlCondition === "object") {
|
||||||
D(module.parser.asset.dataUrlCondition, "maxSize", 8096);
|
D(module.parser.asset.dataUrlCondition, "maxSize", 8096);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
const { RawSource } = require("webpack-sources");
|
const { RawSource } = require("webpack-sources");
|
||||||
const Module = require("../Module");
|
const Module = require("../Module");
|
||||||
|
const { WEBPACK_MODULE_TYPE_FALLBACK } = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const Template = require("../Template");
|
const Template = require("../Template");
|
||||||
const makeSerializable = require("../util/makeSerializable");
|
const makeSerializable = require("../util/makeSerializable");
|
||||||
|
|
@ -37,7 +38,7 @@ class FallbackModule extends Module {
|
||||||
* @param {string[]} requests list of requests to choose one
|
* @param {string[]} requests list of requests to choose one
|
||||||
*/
|
*/
|
||||||
constructor(requests) {
|
constructor(requests) {
|
||||||
super("fallback-module");
|
super(WEBPACK_MODULE_TYPE_FALLBACK);
|
||||||
this.requests = requests;
|
this.requests = requests;
|
||||||
this._identifier = `fallback ${this.requests.join(" ")}`;
|
this._identifier = `fallback ${this.requests.join(" ")}`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
const { RawSource } = require("webpack-sources");
|
const { RawSource } = require("webpack-sources");
|
||||||
const Module = require("../Module");
|
const Module = require("../Module");
|
||||||
|
const { WEBPACK_MODULE_TYPE_REMOTE } = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const makeSerializable = require("../util/makeSerializable");
|
const makeSerializable = require("../util/makeSerializable");
|
||||||
const FallbackDependency = require("./FallbackDependency");
|
const FallbackDependency = require("./FallbackDependency");
|
||||||
|
|
@ -39,7 +40,7 @@ class RemoteModule extends Module {
|
||||||
* @param {string} shareScope the used share scope name
|
* @param {string} shareScope the used share scope name
|
||||||
*/
|
*/
|
||||||
constructor(request, externalRequests, internalRequest, shareScope) {
|
constructor(request, externalRequests, internalRequest, shareScope) {
|
||||||
super("remote-module");
|
super(WEBPACK_MODULE_TYPE_REMOTE);
|
||||||
this.request = request;
|
this.request = request;
|
||||||
this.externalRequests = externalRequests;
|
this.externalRequests = externalRequests;
|
||||||
this.internalRequest = internalRequest;
|
this.internalRequest = internalRequest;
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,9 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
||||||
const Dependency = require("../Dependency");
|
const Dependency = require("../Dependency");
|
||||||
const Module = require("../Module");
|
const Module = require("../Module");
|
||||||
const ModuleFactory = require("../ModuleFactory");
|
const ModuleFactory = require("../ModuleFactory");
|
||||||
|
const {
|
||||||
|
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY
|
||||||
|
} = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const Template = require("../Template");
|
const Template = require("../Template");
|
||||||
const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
|
const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
|
||||||
|
|
@ -95,7 +98,11 @@ registerNotSerializable(LazyCompilationDependency);
|
||||||
|
|
||||||
class LazyCompilationProxyModule extends Module {
|
class LazyCompilationProxyModule extends Module {
|
||||||
constructor(context, originalModule, request, client, data, active) {
|
constructor(context, originalModule, request, client, data, active) {
|
||||||
super("lazy-compilation-proxy", context, originalModule.layer);
|
super(
|
||||||
|
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY,
|
||||||
|
context,
|
||||||
|
originalModule.layer
|
||||||
|
);
|
||||||
this.originalModule = originalModule;
|
this.originalModule = originalModule;
|
||||||
this.request = request;
|
this.request = request;
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
|
@ -107,7 +114,7 @@ class LazyCompilationProxyModule extends Module {
|
||||||
* @returns {string} a unique identifier of the module
|
* @returns {string} a unique identifier of the module
|
||||||
*/
|
*/
|
||||||
identifier() {
|
identifier() {
|
||||||
return `lazy-compilation-proxy|${this.originalModule.identifier()}`;
|
return `${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY}|${this.originalModule.identifier()}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -115,7 +122,7 @@ class LazyCompilationProxyModule extends Module {
|
||||||
* @returns {string} a user readable identifier of the module
|
* @returns {string} a user readable identifier of the module
|
||||||
*/
|
*/
|
||||||
readableIdentifier(requestShortener) {
|
readableIdentifier(requestShortener) {
|
||||||
return `lazy-compilation-proxy ${this.originalModule.readableIdentifier(
|
return `${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY} ${this.originalModule.readableIdentifier(
|
||||||
requestShortener
|
requestShortener
|
||||||
)}`;
|
)}`;
|
||||||
}
|
}
|
||||||
|
|
@ -142,7 +149,9 @@ class LazyCompilationProxyModule extends Module {
|
||||||
* @returns {string | null} an identifier for library inclusion
|
* @returns {string | null} an identifier for library inclusion
|
||||||
*/
|
*/
|
||||||
libIdent(options) {
|
libIdent(options) {
|
||||||
return `${this.originalModule.libIdent(options)}!lazy-compilation-proxy`;
|
return `${this.originalModule.libIdent(
|
||||||
|
options
|
||||||
|
)}!${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,8 @@ const InitFragment = require("../InitFragment");
|
||||||
const {
|
const {
|
||||||
JAVASCRIPT_MODULE_TYPE_AUTO,
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
||||||
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
||||||
JAVASCRIPT_MODULE_TYPE_ESM
|
JAVASCRIPT_MODULE_TYPE_ESM,
|
||||||
|
WEBPACK_MODULE_TYPE_RUNTIME
|
||||||
} = require("../ModuleTypeConstants");
|
} = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const Template = require("../Template");
|
const Template = require("../Template");
|
||||||
|
|
@ -394,7 +395,7 @@ class JavascriptModulesPlugin {
|
||||||
}
|
}
|
||||||
const runtimeModules = chunkGraph.getChunkModulesIterableBySourceType(
|
const runtimeModules = chunkGraph.getChunkModulesIterableBySourceType(
|
||||||
chunk,
|
chunk,
|
||||||
"runtime"
|
WEBPACK_MODULE_TYPE_RUNTIME
|
||||||
);
|
);
|
||||||
if (runtimeModules) {
|
if (runtimeModules) {
|
||||||
const xor = new StringXor();
|
const xor = new StringXor();
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
const { RawSource } = require("webpack-sources");
|
const { RawSource } = require("webpack-sources");
|
||||||
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
||||||
const Module = require("../Module");
|
const Module = require("../Module");
|
||||||
|
const {
|
||||||
|
WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE
|
||||||
|
} = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const makeSerializable = require("../util/makeSerializable");
|
const makeSerializable = require("../util/makeSerializable");
|
||||||
const { rangeToString, stringifyHoley } = require("../util/semver");
|
const { rangeToString, stringifyHoley } = require("../util/semver");
|
||||||
|
|
@ -52,7 +55,7 @@ class ConsumeSharedModule extends Module {
|
||||||
* @param {ConsumeOptions} options consume options
|
* @param {ConsumeOptions} options consume options
|
||||||
*/
|
*/
|
||||||
constructor(context, options) {
|
constructor(context, options) {
|
||||||
super("consume-shared-module", context);
|
super(WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE, context);
|
||||||
this.options = options;
|
this.options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,7 +72,7 @@ class ConsumeSharedModule extends Module {
|
||||||
singleton,
|
singleton,
|
||||||
eager
|
eager
|
||||||
} = this.options;
|
} = this.options;
|
||||||
return `consume-shared-module|${shareScope}|${shareKey}|${
|
return `${WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE}|${shareScope}|${shareKey}|${
|
||||||
requiredVersion && rangeToString(requiredVersion)
|
requiredVersion && rangeToString(requiredVersion)
|
||||||
}|${strictVersion}|${importResolved}|${singleton}|${eager}`;
|
}|${strictVersion}|${importResolved}|${singleton}|${eager}`;
|
||||||
}
|
}
|
||||||
|
|
@ -88,7 +91,7 @@ class ConsumeSharedModule extends Module {
|
||||||
singleton,
|
singleton,
|
||||||
eager
|
eager
|
||||||
} = this.options;
|
} = this.options;
|
||||||
return `consume shared module (${shareScope}) ${shareKey}@${
|
return `${WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE} (${shareScope}) ${shareKey}@${
|
||||||
requiredVersion ? rangeToString(requiredVersion) : "*"
|
requiredVersion ? rangeToString(requiredVersion) : "*"
|
||||||
}${strictVersion ? " (strict)" : ""}${singleton ? " (singleton)" : ""}${
|
}${strictVersion ? " (strict)" : ""}${singleton ? " (singleton)" : ""}${
|
||||||
importResolved
|
importResolved
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
||||||
const Module = require("../Module");
|
const Module = require("../Module");
|
||||||
|
const { WEBPACK_MODULE_TYPE_PROVIDE } = require("../ModuleTypeConstants");
|
||||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||||
const makeSerializable = require("../util/makeSerializable");
|
const makeSerializable = require("../util/makeSerializable");
|
||||||
const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
||||||
|
|
@ -39,7 +40,7 @@ class ProvideSharedModule extends Module {
|
||||||
* @param {boolean} eager include the module in sync way
|
* @param {boolean} eager include the module in sync way
|
||||||
*/
|
*/
|
||||||
constructor(shareScope, name, version, request, eager) {
|
constructor(shareScope, name, version, request, eager) {
|
||||||
super("provide-module");
|
super(WEBPACK_MODULE_TYPE_PROVIDE);
|
||||||
this._shareScope = shareScope;
|
this._shareScope = shareScope;
|
||||||
this._name = name;
|
this._name = name;
|
||||||
this._version = version;
|
this._version = version;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const util = require("util");
|
const util = require("util");
|
||||||
|
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("../ModuleTypeConstants");
|
||||||
const ModuleDependency = require("../dependencies/ModuleDependency");
|
const ModuleDependency = require("../dependencies/ModuleDependency");
|
||||||
const formatLocation = require("../formatLocation");
|
const formatLocation = require("../formatLocation");
|
||||||
const { LogType } = require("../logging/Logger");
|
const { LogType } = require("../logging/Logger");
|
||||||
|
|
@ -2093,19 +2094,21 @@ const MODULES_GROUPERS = type => ({
|
||||||
if (!module.moduleType) return;
|
if (!module.moduleType) return;
|
||||||
if (groupModulesByType) {
|
if (groupModulesByType) {
|
||||||
return [module.moduleType.split("/", 1)[0]];
|
return [module.moduleType.split("/", 1)[0]];
|
||||||
} else if (module.moduleType === "runtime") {
|
} else if (module.moduleType === WEBPACK_MODULE_TYPE_RUNTIME) {
|
||||||
return ["runtime"];
|
return [WEBPACK_MODULE_TYPE_RUNTIME];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getOptions: key => {
|
getOptions: key => {
|
||||||
const exclude = key === "runtime" && !options.runtimeModules;
|
const exclude =
|
||||||
|
key === WEBPACK_MODULE_TYPE_RUNTIME && !options.runtimeModules;
|
||||||
return {
|
return {
|
||||||
groupChildren: !exclude,
|
groupChildren: !exclude,
|
||||||
force: exclude
|
force: exclude
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
createGroup: (key, children, modules) => {
|
createGroup: (key, children, modules) => {
|
||||||
const exclude = key === "runtime" && !options.runtimeModules;
|
const exclude =
|
||||||
|
key === WEBPACK_MODULE_TYPE_RUNTIME && !options.runtimeModules;
|
||||||
return {
|
return {
|
||||||
type: `${key} modules`,
|
type: `${key} modules`,
|
||||||
moduleType: key,
|
moduleType: key,
|
||||||
|
|
|
||||||
|
|
@ -6871,8 +6871,54 @@ declare interface MinChunkSizePluginOptions {
|
||||||
minChunkSize: number;
|
minChunkSize: number;
|
||||||
}
|
}
|
||||||
declare class Module extends DependenciesBlock {
|
declare class Module extends DependenciesBlock {
|
||||||
constructor(type: string, context?: string, layer?: string);
|
constructor(
|
||||||
type: string;
|
type:
|
||||||
|
| ""
|
||||||
|
| "runtime"
|
||||||
|
| "javascript/auto"
|
||||||
|
| "javascript/dynamic"
|
||||||
|
| "javascript/esm"
|
||||||
|
| "json"
|
||||||
|
| "webassembly/async"
|
||||||
|
| "webassembly/sync"
|
||||||
|
| "css"
|
||||||
|
| "css/global"
|
||||||
|
| "css/module"
|
||||||
|
| "asset"
|
||||||
|
| "asset/inline"
|
||||||
|
| "asset/resource"
|
||||||
|
| "asset/source"
|
||||||
|
| "asset/raw-data-url"
|
||||||
|
| "fallback-module"
|
||||||
|
| "remote-module"
|
||||||
|
| "provide-module"
|
||||||
|
| "consume-shared-module"
|
||||||
|
| "lazy-compilation-proxy",
|
||||||
|
context?: string,
|
||||||
|
layer?: string
|
||||||
|
);
|
||||||
|
type:
|
||||||
|
| ""
|
||||||
|
| "runtime"
|
||||||
|
| "javascript/auto"
|
||||||
|
| "javascript/dynamic"
|
||||||
|
| "javascript/esm"
|
||||||
|
| "json"
|
||||||
|
| "webassembly/async"
|
||||||
|
| "webassembly/sync"
|
||||||
|
| "css"
|
||||||
|
| "css/global"
|
||||||
|
| "css/module"
|
||||||
|
| "asset"
|
||||||
|
| "asset/inline"
|
||||||
|
| "asset/resource"
|
||||||
|
| "asset/source"
|
||||||
|
| "asset/raw-data-url"
|
||||||
|
| "fallback-module"
|
||||||
|
| "remote-module"
|
||||||
|
| "provide-module"
|
||||||
|
| "consume-shared-module"
|
||||||
|
| "lazy-compilation-proxy";
|
||||||
context: null | string;
|
context: null | string;
|
||||||
layer: null | string;
|
layer: null | string;
|
||||||
needId: boolean;
|
needId: boolean;
|
||||||
|
|
@ -7833,7 +7879,7 @@ declare interface NormalModuleCreateData {
|
||||||
/**
|
/**
|
||||||
* module type
|
* module type
|
||||||
*/
|
*/
|
||||||
type: string;
|
type: "" | "javascript/auto" | "javascript/dynamic" | "javascript/esm";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* request string
|
* request string
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue