@rsbuild/core 0.7.0-beta.2 → 0.7.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/rsbuild.js +4 -3
- package/compiled/css-loader/index.js +20 -20
- package/compiled/less-loader/index.js +8 -8
- package/compiled/postcss-loader/index.js +11 -11
- package/compiled/rspack-manifest-plugin/index.js +4 -4
- package/dist/client/{hmr.mjs → hmr.js} +2 -3
- package/dist/client/{overlay.mjs → overlay.js} +2 -6
- package/dist/{rspack/ignoreCssLoader.js → ignoreCssLoader.cjs} +2 -0
- package/dist/index.cjs +7201 -0
- package/dist/index.js +7435 -40
- package/dist/{rspack/transformLoader.js → transformLoader.cjs} +2 -0
- package/dist/{rspack/transformRawLoader.js → transformRawLoader.cjs} +37 -13
- package/{dist → dist-types}/constants.d.ts +3 -0
- package/dist-types/helpers.d.ts +32 -0
- package/{dist → dist-types}/index.d.ts +6 -0
- package/{dist → dist-types}/internal.d.ts +5 -2
- package/dist-types/package.json +1 -0
- package/{dist → dist-types}/plugins/html.d.ts +2 -1
- package/{dist → dist-types}/plugins/index.d.ts +1 -0
- package/dist-types/plugins/minimize.d.ts +12 -0
- package/{dist/provider → dist-types}/plugins/progress.d.ts +1 -1
- package/{dist/provider → dist-types}/plugins/resolve.d.ts +1 -1
- package/{dist/provider → dist-types}/plugins/rspackProfile.d.ts +1 -1
- package/{dist/provider → dist-types}/plugins/swc.d.ts +1 -1
- package/dist-types/server/devMiddleware.d.ts +18 -0
- package/{dist → dist-types}/server/helper.d.ts +11 -0
- package/package.json +14 -16
- package/dist/cli/commands.js +0 -110
- package/dist/cli/init.js +0 -101
- package/dist/cli/prepare.js +0 -43
- package/dist/client/format.js +0 -72
- package/dist/config.js +0 -306
- package/dist/constants.js +0 -40
- package/dist/createContext.js +0 -116
- package/dist/createRsbuild.js +0 -103
- package/dist/initHooks.js +0 -82
- package/dist/initPlugins.js +0 -152
- package/dist/internal.js +0 -79
- package/dist/loadEnv.js +0 -93
- package/dist/mergeConfig.js +0 -80
- package/dist/pluginHelper.js +0 -66
- package/dist/pluginManager.js +0 -180
- package/dist/plugins/asset.js +0 -101
- package/dist/plugins/basic.js +0 -77
- package/dist/plugins/bundleAnalyzer.js +0 -69
- package/dist/plugins/cache.js +0 -116
- package/dist/plugins/cleanOutput.js +0 -68
- package/dist/plugins/css.js +0 -257
- package/dist/plugins/define.js +0 -45
- package/dist/plugins/entry.js +0 -76
- package/dist/plugins/externals.js +0 -48
- package/dist/plugins/fileSize.js +0 -199
- package/dist/plugins/html.js +0 -327
- package/dist/plugins/index.js +0 -66
- package/dist/plugins/inlineChunk.js +0 -69
- package/dist/plugins/less.js +0 -107
- package/dist/plugins/manifest.js +0 -142
- package/dist/plugins/moduleFederation.js +0 -125
- package/dist/plugins/moment.js +0 -43
- package/dist/plugins/nodeAddons.js +0 -74
- package/dist/plugins/output.js +0 -63
- package/dist/plugins/performance.js +0 -56
- package/dist/plugins/resourceHints.js +0 -86
- package/dist/plugins/rsdoctor.js +0 -81
- package/dist/plugins/sass.js +0 -154
- package/dist/plugins/server.js +0 -59
- package/dist/plugins/splitChunks.js +0 -236
- package/dist/plugins/startUrl.js +0 -146
- package/dist/plugins/target.js +0 -54
- package/dist/plugins/wasm.js +0 -51
- package/dist/provider/build.js +0 -84
- package/dist/provider/createCompiler.js +0 -143
- package/dist/provider/initConfigs.js +0 -92
- package/dist/provider/inspectConfig.js +0 -85
- package/dist/provider/plugins/minimize.d.ts +0 -2
- package/dist/provider/plugins/minimize.js +0 -49
- package/dist/provider/plugins/progress.js +0 -49
- package/dist/provider/plugins/resolve.js +0 -42
- package/dist/provider/plugins/rspackProfile.js +0 -112
- package/dist/provider/plugins/swc.js +0 -152
- package/dist/provider/plugins/transition.d.ts +0 -5
- package/dist/provider/plugins/transition.js +0 -35
- package/dist/provider/provider.js +0 -158
- package/dist/provider/rspackConfig.js +0 -144
- package/dist/provider/shared.d.ts +0 -16
- package/dist/provider/shared.js +0 -215
- package/dist/rspack/HtmlAppIconPlugin.js +0 -98
- package/dist/rspack/HtmlBasicPlugin.js +0 -229
- package/dist/rspack/InlineChunkHtmlPlugin.js +0 -196
- package/dist/rspack/preload/HtmlPreloadOrPrefetchPlugin.js +0 -173
- package/dist/rspack/preload/helpers/determineAsValue.js +0 -83
- package/dist/rspack/preload/helpers/doesChunkBelongToHtml.js +0 -77
- package/dist/rspack/preload/helpers/extractChunks.js +0 -83
- package/dist/rspack/preload/helpers/index.js +0 -28
- package/dist/rspack/preload/helpers/type.js +0 -16
- package/dist/server/compilerDevMiddleware.js +0 -129
- package/dist/server/devMiddleware.d.ts +0 -3
- package/dist/server/devMiddleware.js +0 -74
- package/dist/server/devServer.js +0 -195
- package/dist/server/getDevMiddlewares.js +0 -177
- package/dist/server/helper.js +0 -237
- package/dist/server/httpServer.js +0 -45
- package/dist/server/index.js +0 -31
- package/dist/server/middlewares.js +0 -162
- package/dist/server/prodServer.js +0 -196
- package/dist/server/proxy.js +0 -93
- package/dist/server/restart.js +0 -66
- package/dist/server/socketServer.js +0 -178
- package/dist/server/watchFiles.js +0 -90
- package/dist/types.js +0 -16
- /package/{dist → dist-types}/cli/commands.d.ts +0 -0
- /package/{dist → dist-types}/cli/init.d.ts +0 -0
- /package/{dist → dist-types}/cli/prepare.d.ts +0 -0
- /package/{dist → dist-types}/client/format.d.ts +0 -0
- /package/{dist → dist-types}/client/hmr.d.ts +0 -0
- /package/{dist → dist-types}/client/overlay.d.ts +0 -0
- /package/{dist → dist-types}/config.d.ts +0 -0
- /package/{dist → dist-types}/createContext.d.ts +0 -0
- /package/{dist → dist-types}/createRsbuild.d.ts +0 -0
- /package/{dist → dist-types}/initHooks.d.ts +0 -0
- /package/{dist → dist-types}/initPlugins.d.ts +0 -0
- /package/{dist → dist-types}/loadEnv.d.ts +0 -0
- /package/{dist/rspack → dist-types/loader}/ignoreCssLoader.d.ts +0 -0
- /package/{dist/rspack → dist-types/loader}/transformLoader.d.ts +0 -0
- /package/{dist/rspack → dist-types/loader}/transformRawLoader.d.ts +0 -0
- /package/{dist → dist-types}/mergeConfig.d.ts +0 -0
- /package/{dist → dist-types}/pluginHelper.d.ts +0 -0
- /package/{dist → dist-types}/pluginManager.d.ts +0 -0
- /package/{dist → dist-types}/plugins/asset.d.ts +0 -0
- /package/{dist → dist-types}/plugins/basic.d.ts +0 -0
- /package/{dist → dist-types}/plugins/bundleAnalyzer.d.ts +0 -0
- /package/{dist → dist-types}/plugins/cache.d.ts +0 -0
- /package/{dist → dist-types}/plugins/cleanOutput.d.ts +0 -0
- /package/{dist → dist-types}/plugins/css.d.ts +0 -0
- /package/{dist → dist-types}/plugins/define.d.ts +0 -0
- /package/{dist → dist-types}/plugins/entry.d.ts +0 -0
- /package/{dist → dist-types}/plugins/externals.d.ts +0 -0
- /package/{dist → dist-types}/plugins/fileSize.d.ts +0 -0
- /package/{dist → dist-types}/plugins/inlineChunk.d.ts +0 -0
- /package/{dist → dist-types}/plugins/less.d.ts +0 -0
- /package/{dist → dist-types}/plugins/manifest.d.ts +0 -0
- /package/{dist → dist-types}/plugins/moduleFederation.d.ts +0 -0
- /package/{dist → dist-types}/plugins/moment.d.ts +0 -0
- /package/{dist → dist-types}/plugins/nodeAddons.d.ts +0 -0
- /package/{dist → dist-types}/plugins/output.d.ts +0 -0
- /package/{dist → dist-types}/plugins/performance.d.ts +0 -0
- /package/{dist → dist-types}/plugins/resourceHints.d.ts +0 -0
- /package/{dist → dist-types}/plugins/rsdoctor.d.ts +0 -0
- /package/{dist → dist-types}/plugins/sass.d.ts +0 -0
- /package/{dist → dist-types}/plugins/server.d.ts +0 -0
- /package/{dist → dist-types}/plugins/splitChunks.d.ts +0 -0
- /package/{dist → dist-types}/plugins/startUrl.d.ts +0 -0
- /package/{dist → dist-types}/plugins/target.d.ts +0 -0
- /package/{dist → dist-types}/plugins/wasm.d.ts +0 -0
- /package/{dist → dist-types}/provider/build.d.ts +0 -0
- /package/{dist → dist-types}/provider/createCompiler.d.ts +0 -0
- /package/{dist → dist-types}/provider/initConfigs.d.ts +0 -0
- /package/{dist → dist-types}/provider/inspectConfig.d.ts +0 -0
- /package/{dist → dist-types}/provider/provider.d.ts +0 -0
- /package/{dist → dist-types}/provider/rspackConfig.d.ts +0 -0
- /package/{dist → dist-types}/rspack/HtmlAppIconPlugin.d.ts +0 -0
- /package/{dist → dist-types}/rspack/HtmlBasicPlugin.d.ts +0 -0
- /package/{dist → dist-types}/rspack/InlineChunkHtmlPlugin.d.ts +0 -0
- /package/{dist → dist-types}/rspack/preload/HtmlPreloadOrPrefetchPlugin.d.ts +0 -0
- /package/{dist → dist-types}/rspack/preload/helpers/determineAsValue.d.ts +0 -0
- /package/{dist → dist-types}/rspack/preload/helpers/doesChunkBelongToHtml.d.ts +0 -0
- /package/{dist → dist-types}/rspack/preload/helpers/extractChunks.d.ts +0 -0
- /package/{dist → dist-types}/rspack/preload/helpers/index.d.ts +0 -0
- /package/{dist → dist-types}/rspack/preload/helpers/type.d.ts +0 -0
- /package/{dist → dist-types}/server/compilerDevMiddleware.d.ts +0 -0
- /package/{dist → dist-types}/server/devServer.d.ts +0 -0
- /package/{dist → dist-types}/server/getDevMiddlewares.d.ts +0 -0
- /package/{dist → dist-types}/server/httpServer.d.ts +0 -0
- /package/{dist → dist-types}/server/index.d.ts +0 -0
- /package/{dist → dist-types}/server/middlewares.d.ts +0 -0
- /package/{dist → dist-types}/server/prodServer.d.ts +0 -0
- /package/{dist → dist-types}/server/proxy.d.ts +0 -0
- /package/{dist → dist-types}/server/restart.d.ts +0 -0
- /package/{dist → dist-types}/server/socketServer.d.ts +0 -0
- /package/{dist → dist-types}/server/watchFiles.d.ts +0 -0
- /package/{dist → dist-types}/types.d.ts +0 -0
package/dist/plugins/define.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var define_exports = {};
|
|
20
|
-
__export(define_exports, {
|
|
21
|
-
pluginDefine: () => pluginDefine
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(define_exports);
|
|
24
|
-
var import_shared = require("@rsbuild/shared");
|
|
25
|
-
const pluginDefine = () => ({
|
|
26
|
-
name: "rsbuild:define",
|
|
27
|
-
setup(api) {
|
|
28
|
-
api.modifyBundlerChain((chain, { CHAIN_ID, bundler }) => {
|
|
29
|
-
const config = api.getNormalizedConfig();
|
|
30
|
-
const builtinVars = {
|
|
31
|
-
"process.env.NODE_ENV": JSON.stringify((0, import_shared.getNodeEnv)()),
|
|
32
|
-
"process.env.ASSET_PREFIX": JSON.stringify(
|
|
33
|
-
(0, import_shared.getPublicPathFromChain)(chain, false)
|
|
34
|
-
)
|
|
35
|
-
};
|
|
36
|
-
chain.plugin(CHAIN_ID.PLUGIN.DEFINE).use(bundler.DefinePlugin, [
|
|
37
|
-
{ ...builtinVars, ...config.source.define }
|
|
38
|
-
]);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
43
|
-
0 && (module.exports = {
|
|
44
|
-
pluginDefine
|
|
45
|
-
});
|
package/dist/plugins/entry.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var entry_exports = {};
|
|
20
|
-
__export(entry_exports, {
|
|
21
|
-
getEntryObject: () => getEntryObject,
|
|
22
|
-
pluginEntry: () => pluginEntry
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(entry_exports);
|
|
25
|
-
var import_shared = require("@rsbuild/shared");
|
|
26
|
-
function getEntryObject(config, target) {
|
|
27
|
-
if (!config.source?.entry) {
|
|
28
|
-
return {};
|
|
29
|
-
}
|
|
30
|
-
return (0, import_shared.mergeChainedOptions)({
|
|
31
|
-
defaults: {},
|
|
32
|
-
options: config.source?.entry,
|
|
33
|
-
utils: { target },
|
|
34
|
-
useObjectParam: true
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
const pluginEntry = () => ({
|
|
38
|
-
name: "rsbuild:entry",
|
|
39
|
-
setup(api) {
|
|
40
|
-
api.modifyBundlerChain(
|
|
41
|
-
async (chain, { target, isServer, isServiceWorker }) => {
|
|
42
|
-
const config = api.getNormalizedConfig();
|
|
43
|
-
const { preEntry } = config.source;
|
|
44
|
-
const entry = target === "web" ? api.context.entry : getEntryObject(config, target);
|
|
45
|
-
const injectCoreJsEntry = config.output.polyfill === "entry" && !isServer && !isServiceWorker;
|
|
46
|
-
for (const entryName of Object.keys(entry)) {
|
|
47
|
-
const entryPoint = chain.entry(entryName);
|
|
48
|
-
const addEntry = (item) => {
|
|
49
|
-
entryPoint.add(item);
|
|
50
|
-
};
|
|
51
|
-
preEntry.forEach(addEntry);
|
|
52
|
-
if (injectCoreJsEntry) {
|
|
53
|
-
addEntry((0, import_shared.createVirtualModule)('import "core-js";'));
|
|
54
|
-
}
|
|
55
|
-
(0, import_shared.castArray)(entry[entryName]).forEach(addEntry);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
);
|
|
59
|
-
api.onBeforeCreateCompiler(({ bundlerConfigs }) => {
|
|
60
|
-
if (bundlerConfigs.every((config) => !config.entry)) {
|
|
61
|
-
throw new Error(
|
|
62
|
-
`Could not find any entry module, please make sure that ${import_shared.color.cyan(
|
|
63
|
-
"src/index.(ts|js|tsx|jsx|mjs|cjs)"
|
|
64
|
-
)} exists, or customize entry through the ${import_shared.color.cyan(
|
|
65
|
-
"source.entry"
|
|
66
|
-
)} configuration.`
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
-
0 && (module.exports = {
|
|
74
|
-
getEntryObject,
|
|
75
|
-
pluginEntry
|
|
76
|
-
});
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var externals_exports = {};
|
|
20
|
-
__export(externals_exports, {
|
|
21
|
-
pluginExternals: () => pluginExternals
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(externals_exports);
|
|
24
|
-
function pluginExternals() {
|
|
25
|
-
return {
|
|
26
|
-
name: "rsbuild:externals",
|
|
27
|
-
setup(api) {
|
|
28
|
-
api.modifyBundlerChain((chain) => {
|
|
29
|
-
const { externals } = api.getNormalizedConfig().output;
|
|
30
|
-
if (externals) {
|
|
31
|
-
chain.externals(externals);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
api.onBeforeCreateCompiler(({ bundlerConfigs }) => {
|
|
35
|
-
for (const config of bundlerConfigs) {
|
|
36
|
-
const isWebWorker = Array.isArray(config.target) ? config.target.includes("webworker") : config.target === "webworker";
|
|
37
|
-
if (isWebWorker && config.externals) {
|
|
38
|
-
delete config.externals;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
-
0 && (module.exports = {
|
|
47
|
-
pluginExternals
|
|
48
|
-
});
|
package/dist/plugins/fileSize.js
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var fileSize_exports = {};
|
|
30
|
-
__export(fileSize_exports, {
|
|
31
|
-
filterAsset: () => filterAsset,
|
|
32
|
-
pluginFileSize: () => pluginFileSize
|
|
33
|
-
});
|
|
34
|
-
module.exports = __toCommonJS(fileSize_exports);
|
|
35
|
-
var import_node_path = __toESM(require("node:path"));
|
|
36
|
-
var import_shared = require("@rsbuild/shared");
|
|
37
|
-
var import_shared2 = require("@rsbuild/shared");
|
|
38
|
-
const filterAsset = (asset) => !/\.map$/.test(asset) && !/\.LICENSE\.txt$/.test(asset);
|
|
39
|
-
const getAssetColor = (size) => {
|
|
40
|
-
if (size > 300 * 1e3) {
|
|
41
|
-
return import_shared2.color.red;
|
|
42
|
-
}
|
|
43
|
-
if (size > 100 * 1e3) {
|
|
44
|
-
return import_shared2.color.yellow;
|
|
45
|
-
}
|
|
46
|
-
return import_shared2.color.green;
|
|
47
|
-
};
|
|
48
|
-
async function printHeader(longestFileLength, longestLabelLength) {
|
|
49
|
-
const longestLengths = [longestFileLength, longestLabelLength];
|
|
50
|
-
const headerRow = ["File", "Size", "Gzipped"].reduce((prev, cur, index) => {
|
|
51
|
-
const length = longestLengths[index];
|
|
52
|
-
let curLabel = cur;
|
|
53
|
-
if (length) {
|
|
54
|
-
curLabel = cur.length < length ? cur + " ".repeat(length - cur.length) : cur;
|
|
55
|
-
}
|
|
56
|
-
return `${prev + curLabel} `;
|
|
57
|
-
}, " ");
|
|
58
|
-
import_shared2.logger.log(import_shared2.color.bold(import_shared2.color.blue(headerRow)));
|
|
59
|
-
}
|
|
60
|
-
const calcFileSize = (len) => {
|
|
61
|
-
const val = len / 1e3;
|
|
62
|
-
return `${val.toFixed(val < 1 ? 2 : 1)} kB`;
|
|
63
|
-
};
|
|
64
|
-
const coloringAssetName = (assetName) => {
|
|
65
|
-
if (import_shared.JS_REGEX.test(assetName)) {
|
|
66
|
-
return import_shared2.color.cyan(assetName);
|
|
67
|
-
}
|
|
68
|
-
if (import_shared.CSS_REGEX.test(assetName)) {
|
|
69
|
-
return import_shared2.color.yellow(assetName);
|
|
70
|
-
}
|
|
71
|
-
if (import_shared.HTML_REGEX.test(assetName)) {
|
|
72
|
-
return import_shared2.color.green(assetName);
|
|
73
|
-
}
|
|
74
|
-
return import_shared2.color.magenta(assetName);
|
|
75
|
-
};
|
|
76
|
-
async function printFileSizes(config, stats, rootPath) {
|
|
77
|
-
if (config.detail === false && config.total === false) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
const { default: gzipSize } = await Promise.resolve().then(() => __toESM(require("@rsbuild/shared/gzip-size")));
|
|
81
|
-
const formatAsset = (asset, distPath, distFolder) => {
|
|
82
|
-
const fileName = asset.name.split("?")[0];
|
|
83
|
-
const contents = import_shared.fse.readFileSync(import_node_path.default.join(distPath, fileName));
|
|
84
|
-
const size = contents.length;
|
|
85
|
-
const gzippedSize = gzipSize.sync(contents);
|
|
86
|
-
return {
|
|
87
|
-
size,
|
|
88
|
-
folder: import_node_path.default.join(distFolder, import_node_path.default.dirname(fileName)),
|
|
89
|
-
name: import_node_path.default.basename(fileName),
|
|
90
|
-
gzippedSize,
|
|
91
|
-
sizeLabel: calcFileSize(size),
|
|
92
|
-
gzipSizeLabel: getAssetColor(gzippedSize)(calcFileSize(gzippedSize))
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
const multiStats = "stats" in stats ? stats.stats : [stats];
|
|
96
|
-
const assets = multiStats.map((stats2) => {
|
|
97
|
-
const distPath = stats2.compilation.outputOptions.path;
|
|
98
|
-
if (!distPath) {
|
|
99
|
-
return [];
|
|
100
|
-
}
|
|
101
|
-
const origin = stats2.toJson({
|
|
102
|
-
all: false,
|
|
103
|
-
assets: true,
|
|
104
|
-
// TODO: need supported in rspack
|
|
105
|
-
// @ts-expect-error
|
|
106
|
-
cachedAssets: true,
|
|
107
|
-
groupAssetsByInfo: false,
|
|
108
|
-
groupAssetsByPath: false,
|
|
109
|
-
groupAssetsByChunk: false,
|
|
110
|
-
groupAssetsByExtension: false,
|
|
111
|
-
groupAssetsByEmitStatus: false
|
|
112
|
-
});
|
|
113
|
-
const filteredAssets = origin.assets.filter(
|
|
114
|
-
(asset) => filterAsset(asset.name)
|
|
115
|
-
);
|
|
116
|
-
const distFolder = import_node_path.default.relative(rootPath, distPath);
|
|
117
|
-
return filteredAssets.map(
|
|
118
|
-
(asset) => formatAsset(asset, distPath, distFolder)
|
|
119
|
-
);
|
|
120
|
-
}).reduce((single, all) => all.concat(single), []);
|
|
121
|
-
if (assets.length === 0) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
assets.sort((a, b) => a.size - b.size);
|
|
125
|
-
import_shared2.logger.info("Production file sizes:\n");
|
|
126
|
-
const longestLabelLength = Math.max(...assets.map((a) => a.sizeLabel.length));
|
|
127
|
-
const longestFileLength = Math.max(
|
|
128
|
-
...assets.map((a) => (a.folder + import_node_path.default.sep + a.name).length)
|
|
129
|
-
);
|
|
130
|
-
if (config.detail !== false) {
|
|
131
|
-
printHeader(longestFileLength, longestLabelLength);
|
|
132
|
-
}
|
|
133
|
-
let totalSize = 0;
|
|
134
|
-
let totalGzipSize = 0;
|
|
135
|
-
for (const asset of assets) {
|
|
136
|
-
let { sizeLabel } = asset;
|
|
137
|
-
const { name, folder, gzipSizeLabel } = asset;
|
|
138
|
-
const fileNameLength = (folder + import_node_path.default.sep + name).length;
|
|
139
|
-
const sizeLength = sizeLabel.length;
|
|
140
|
-
totalSize += asset.size;
|
|
141
|
-
totalGzipSize += asset.gzippedSize;
|
|
142
|
-
if (config.detail !== false) {
|
|
143
|
-
if (sizeLength < longestLabelLength) {
|
|
144
|
-
const rightPadding = " ".repeat(longestLabelLength - sizeLength);
|
|
145
|
-
sizeLabel += rightPadding;
|
|
146
|
-
}
|
|
147
|
-
let fileNameLabel = import_shared2.color.dim(asset.folder + import_node_path.default.sep) + coloringAssetName(asset.name);
|
|
148
|
-
if (fileNameLength < longestFileLength) {
|
|
149
|
-
const rightPadding = " ".repeat(longestFileLength - fileNameLength);
|
|
150
|
-
fileNameLabel += rightPadding;
|
|
151
|
-
}
|
|
152
|
-
import_shared2.logger.log(` ${fileNameLabel} ${sizeLabel} ${gzipSizeLabel}`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (config.total !== false) {
|
|
156
|
-
const totalSizeLabel = `${import_shared2.color.bold(
|
|
157
|
-
import_shared2.color.blue("Total size:")
|
|
158
|
-
)} ${calcFileSize(totalSize)}`;
|
|
159
|
-
const gzippedSizeLabel = `${import_shared2.color.bold(
|
|
160
|
-
import_shared2.color.blue("Gzipped size:")
|
|
161
|
-
)} ${calcFileSize(totalGzipSize)}`;
|
|
162
|
-
import_shared2.logger.log(`
|
|
163
|
-
${totalSizeLabel}
|
|
164
|
-
${gzippedSizeLabel}
|
|
165
|
-
`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
const pluginFileSize = () => ({
|
|
169
|
-
name: "rsbuild:file-size",
|
|
170
|
-
setup(api) {
|
|
171
|
-
api.onAfterBuild(async ({ stats }) => {
|
|
172
|
-
const { printFileSize } = api.getNormalizedConfig().performance;
|
|
173
|
-
if (printFileSize === false) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
const printFileSizeConfig = typeof printFileSize === "boolean" ? {
|
|
177
|
-
total: true,
|
|
178
|
-
detail: true
|
|
179
|
-
} : printFileSize;
|
|
180
|
-
if (stats) {
|
|
181
|
-
try {
|
|
182
|
-
await printFileSizes(
|
|
183
|
-
printFileSizeConfig,
|
|
184
|
-
stats,
|
|
185
|
-
api.context.rootPath
|
|
186
|
-
);
|
|
187
|
-
} catch (err) {
|
|
188
|
-
import_shared2.logger.warn("Failed to print file size.");
|
|
189
|
-
import_shared2.logger.warn(err);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
196
|
-
0 && (module.exports = {
|
|
197
|
-
filterAsset,
|
|
198
|
-
pluginFileSize
|
|
199
|
-
});
|
package/dist/plugins/html.js
DELETED
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var html_exports = {};
|
|
30
|
-
__export(html_exports, {
|
|
31
|
-
getFavicon: () => getFavicon,
|
|
32
|
-
getInject: () => getInject,
|
|
33
|
-
getMetaTags: () => getMetaTags,
|
|
34
|
-
getTemplate: () => getTemplate,
|
|
35
|
-
getTitle: () => getTitle,
|
|
36
|
-
pluginHtml: () => pluginHtml
|
|
37
|
-
});
|
|
38
|
-
module.exports = __toCommonJS(html_exports);
|
|
39
|
-
var import_node_path = __toESM(require("node:path"));
|
|
40
|
-
var import_shared = require("@rsbuild/shared");
|
|
41
|
-
function getTitle(entryName, config) {
|
|
42
|
-
return (0, import_shared.mergeChainedOptions)({
|
|
43
|
-
defaults: "",
|
|
44
|
-
options: config.html.title,
|
|
45
|
-
utils: { entryName },
|
|
46
|
-
useObjectParam: true
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
function getInject(entryName, config) {
|
|
50
|
-
return (0, import_shared.mergeChainedOptions)({
|
|
51
|
-
defaults: "head",
|
|
52
|
-
options: config.html.inject,
|
|
53
|
-
utils: { entryName },
|
|
54
|
-
useObjectParam: true,
|
|
55
|
-
isFalsy: import_shared.isNil
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
const existTemplatePath = [];
|
|
59
|
-
async function getTemplate(entryName, config, rootPath) {
|
|
60
|
-
const DEFAULT_TEMPLATE = import_node_path.default.resolve(
|
|
61
|
-
__dirname,
|
|
62
|
-
"../../static/template.html"
|
|
63
|
-
);
|
|
64
|
-
const templatePath = (0, import_shared.mergeChainedOptions)({
|
|
65
|
-
defaults: DEFAULT_TEMPLATE,
|
|
66
|
-
options: config.html.template,
|
|
67
|
-
utils: { entryName },
|
|
68
|
-
useObjectParam: true
|
|
69
|
-
});
|
|
70
|
-
if (templatePath === DEFAULT_TEMPLATE) {
|
|
71
|
-
return {
|
|
72
|
-
templatePath
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
const absolutePath = (0, import_node_path.isAbsolute)(templatePath) ? templatePath : import_node_path.default.resolve(rootPath, templatePath);
|
|
76
|
-
if (!existTemplatePath.includes(absolutePath)) {
|
|
77
|
-
if (!await (0, import_shared.isFileExists)(absolutePath)) {
|
|
78
|
-
throw new Error(
|
|
79
|
-
`Failed to resolve HTML template, please check if the file exists: ${import_shared.color.cyan(
|
|
80
|
-
absolutePath
|
|
81
|
-
)}`
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
existTemplatePath.push(absolutePath);
|
|
85
|
-
}
|
|
86
|
-
const templateContent = await import_shared.fse.readFile(absolutePath, "utf-8");
|
|
87
|
-
return {
|
|
88
|
-
templatePath: absolutePath,
|
|
89
|
-
templateContent
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
function getFavicon(entryName, config) {
|
|
93
|
-
return (0, import_shared.mergeChainedOptions)({
|
|
94
|
-
defaults: "",
|
|
95
|
-
options: config.html.favicon,
|
|
96
|
-
utils: { entryName },
|
|
97
|
-
useObjectParam: true
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
function getMetaTags(entryName, config, templateContent) {
|
|
101
|
-
const metaTags = (0, import_shared.mergeChainedOptions)({
|
|
102
|
-
defaults: {},
|
|
103
|
-
options: config.html.meta,
|
|
104
|
-
utils: { entryName },
|
|
105
|
-
useObjectParam: true
|
|
106
|
-
});
|
|
107
|
-
if (templateContent && metaTags.charset) {
|
|
108
|
-
const charsetRegExp = /<meta[^>]+charset=["'][^>]*>/i;
|
|
109
|
-
if (charsetRegExp.test(templateContent)) {
|
|
110
|
-
delete metaTags.charset;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return metaTags;
|
|
114
|
-
}
|
|
115
|
-
function getTemplateParameters(entryName, config, assetPrefix) {
|
|
116
|
-
return (compilation, assets, assetTags, pluginOptions) => {
|
|
117
|
-
const { mountId, templateParameters } = config.html;
|
|
118
|
-
const defaultOptions = {
|
|
119
|
-
mountId,
|
|
120
|
-
entryName,
|
|
121
|
-
assetPrefix,
|
|
122
|
-
compilation,
|
|
123
|
-
webpackConfig: compilation.options,
|
|
124
|
-
htmlWebpackPlugin: {
|
|
125
|
-
tags: assetTags,
|
|
126
|
-
files: assets,
|
|
127
|
-
options: pluginOptions
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
return (0, import_shared.mergeChainedOptions)({
|
|
131
|
-
defaults: defaultOptions,
|
|
132
|
-
options: templateParameters,
|
|
133
|
-
utils: { entryName }
|
|
134
|
-
});
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
function getChunks(entryName, entryValue) {
|
|
138
|
-
const chunks = [entryName];
|
|
139
|
-
for (const item of entryValue) {
|
|
140
|
-
if (!(0, import_shared.isPlainObject)(item)) {
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
const { dependOn } = item;
|
|
144
|
-
if (!dependOn) {
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
if (typeof dependOn === "string") {
|
|
148
|
-
chunks.unshift(dependOn);
|
|
149
|
-
} else {
|
|
150
|
-
chunks.unshift(...dependOn);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return chunks;
|
|
154
|
-
}
|
|
155
|
-
const getTagConfig = (api) => {
|
|
156
|
-
const config = api.getNormalizedConfig();
|
|
157
|
-
const tags = (0, import_shared.castArray)(config.html.tags).filter(Boolean);
|
|
158
|
-
if (!tags.length) {
|
|
159
|
-
return void 0;
|
|
160
|
-
}
|
|
161
|
-
return {
|
|
162
|
-
append: true,
|
|
163
|
-
hash: false,
|
|
164
|
-
publicPath: true,
|
|
165
|
-
tags
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
const pluginHtml = (modifyTagsFn) => ({
|
|
169
|
-
name: "rsbuild:html",
|
|
170
|
-
setup(api) {
|
|
171
|
-
api.modifyBundlerChain(
|
|
172
|
-
async (chain, { HtmlPlugin, isProd, CHAIN_ID, target }) => {
|
|
173
|
-
const config = api.getNormalizedConfig();
|
|
174
|
-
if ((0, import_shared.isHtmlDisabled)(config, target)) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const minify = await (0, import_shared.getHtmlMinifyOptions)(isProd, config);
|
|
178
|
-
const assetPrefix = (0, import_shared.getPublicPathFromChain)(chain, false);
|
|
179
|
-
const entries = chain.entryPoints.entries() || {};
|
|
180
|
-
const entryNames = Object.keys(entries);
|
|
181
|
-
const htmlPaths = api.getHTMLPaths();
|
|
182
|
-
const htmlInfoMap = {};
|
|
183
|
-
const finalOptions = await Promise.all(
|
|
184
|
-
entryNames.map(async (entryName) => {
|
|
185
|
-
const entryValue = entries[entryName].values();
|
|
186
|
-
const chunks = getChunks(
|
|
187
|
-
entryName,
|
|
188
|
-
// EntryDescription type is different between webpack and Rspack
|
|
189
|
-
entryValue
|
|
190
|
-
);
|
|
191
|
-
const inject = getInject(entryName, config);
|
|
192
|
-
const filename = htmlPaths[entryName];
|
|
193
|
-
const { templatePath, templateContent } = await getTemplate(
|
|
194
|
-
entryName,
|
|
195
|
-
config,
|
|
196
|
-
api.context.rootPath
|
|
197
|
-
);
|
|
198
|
-
const templateParameters = getTemplateParameters(
|
|
199
|
-
entryName,
|
|
200
|
-
config,
|
|
201
|
-
assetPrefix
|
|
202
|
-
);
|
|
203
|
-
const metaTags = getMetaTags(entryName, config, templateContent);
|
|
204
|
-
const pluginOptions = {
|
|
205
|
-
meta: metaTags,
|
|
206
|
-
chunks,
|
|
207
|
-
inject,
|
|
208
|
-
minify,
|
|
209
|
-
filename,
|
|
210
|
-
template: templatePath,
|
|
211
|
-
entryName,
|
|
212
|
-
templateParameters,
|
|
213
|
-
scriptLoading: config.html.scriptLoading
|
|
214
|
-
};
|
|
215
|
-
if (chunks.length > 1) {
|
|
216
|
-
pluginOptions.chunksSortMode = "manual";
|
|
217
|
-
}
|
|
218
|
-
const htmlInfo = {};
|
|
219
|
-
htmlInfoMap[entryName] = htmlInfo;
|
|
220
|
-
if (templateContent) {
|
|
221
|
-
htmlInfo.templateContent = templateContent;
|
|
222
|
-
}
|
|
223
|
-
const tagConfig = getTagConfig(api);
|
|
224
|
-
if (tagConfig) {
|
|
225
|
-
htmlInfo.tagConfig = tagConfig;
|
|
226
|
-
}
|
|
227
|
-
pluginOptions.title = getTitle(entryName, config);
|
|
228
|
-
const favicon = getFavicon(entryName, config);
|
|
229
|
-
if (favicon) {
|
|
230
|
-
if ((0, import_shared.isURL)(favicon)) {
|
|
231
|
-
htmlInfo.favicon = favicon;
|
|
232
|
-
} else {
|
|
233
|
-
pluginOptions.favicon = favicon;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
const finalOptions2 = (0, import_shared.mergeChainedOptions)({
|
|
237
|
-
defaults: pluginOptions,
|
|
238
|
-
options: typeof config.tools.htmlPlugin === "boolean" ? {} : config.tools.htmlPlugin,
|
|
239
|
-
utils: {
|
|
240
|
-
entryName,
|
|
241
|
-
entryValue
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
return finalOptions2;
|
|
245
|
-
})
|
|
246
|
-
);
|
|
247
|
-
entryNames.forEach((entryName, index) => {
|
|
248
|
-
chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).use(HtmlPlugin, [finalOptions[index]]);
|
|
249
|
-
});
|
|
250
|
-
const { HtmlBasicPlugin } = await Promise.resolve().then(() => __toESM(require("../rspack/HtmlBasicPlugin")));
|
|
251
|
-
chain.plugin(CHAIN_ID.PLUGIN.HTML_BASIC).use(HtmlBasicPlugin, [htmlInfoMap, modifyTagsFn]);
|
|
252
|
-
if (config.html) {
|
|
253
|
-
const { appIcon, crossorigin } = config.html;
|
|
254
|
-
if (crossorigin) {
|
|
255
|
-
const formattedCrossorigin = crossorigin === true ? "anonymous" : crossorigin;
|
|
256
|
-
chain.output.crossOriginLoading(formattedCrossorigin);
|
|
257
|
-
}
|
|
258
|
-
if (appIcon) {
|
|
259
|
-
const { HtmlAppIconPlugin } = await Promise.resolve().then(() => __toESM(require("../rspack/HtmlAppIconPlugin")));
|
|
260
|
-
const distDir = (0, import_shared.getDistPath)(config, "image");
|
|
261
|
-
const iconPath = import_node_path.default.isAbsolute(appIcon) ? appIcon : import_node_path.default.join(api.context.rootPath, appIcon);
|
|
262
|
-
chain.plugin(CHAIN_ID.PLUGIN.APP_ICON).use(HtmlAppIconPlugin, [{ iconPath, distDir }]);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
);
|
|
267
|
-
api.onAfterCreateCompiler(({ compiler }) => {
|
|
268
|
-
const { nonce } = api.getNormalizedConfig().security;
|
|
269
|
-
if (!nonce) {
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
(0, import_shared.applyToCompiler)(compiler, (compiler2) => {
|
|
273
|
-
const { plugins } = compiler2.options;
|
|
274
|
-
const hasHTML = plugins.some(
|
|
275
|
-
(plugin) => plugin && plugin.constructor.name === "HtmlBasicPlugin"
|
|
276
|
-
);
|
|
277
|
-
if (!hasHTML) {
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
const injectCode = (0, import_shared.createVirtualModule)(
|
|
281
|
-
`__webpack_nonce__ = "${nonce}";`
|
|
282
|
-
);
|
|
283
|
-
new compiler2.webpack.EntryPlugin(compiler2.context, injectCode, {
|
|
284
|
-
name: void 0
|
|
285
|
-
}).apply(compiler2);
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
api.modifyHTMLTags({
|
|
289
|
-
// ensure `crossorigin` and `nonce` can be applied to all tags
|
|
290
|
-
order: "post",
|
|
291
|
-
handler: ({ headTags, bodyTags }) => {
|
|
292
|
-
var _a;
|
|
293
|
-
const config = api.getNormalizedConfig();
|
|
294
|
-
const { crossorigin } = config.html;
|
|
295
|
-
const { nonce } = config.security;
|
|
296
|
-
const allTags = [...headTags, ...bodyTags];
|
|
297
|
-
if (crossorigin) {
|
|
298
|
-
const formattedCrossorigin = crossorigin === true ? "anonymous" : crossorigin;
|
|
299
|
-
for (const tag of allTags) {
|
|
300
|
-
if (tag.tag === "script" && tag.attrs?.src || tag.tag === "link" && tag.attrs?.rel === "stylesheet") {
|
|
301
|
-
tag.attrs || (tag.attrs = {});
|
|
302
|
-
(_a = tag.attrs).crossorigin ?? (_a.crossorigin = formattedCrossorigin);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
if (nonce) {
|
|
307
|
-
for (const tag of allTags) {
|
|
308
|
-
if (tag.tag === "script" || tag.tag === "style") {
|
|
309
|
-
tag.attrs ?? (tag.attrs = {});
|
|
310
|
-
tag.attrs.nonce = nonce;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return { headTags, bodyTags };
|
|
315
|
-
}
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
320
|
-
0 && (module.exports = {
|
|
321
|
-
getFavicon,
|
|
322
|
-
getInject,
|
|
323
|
-
getMetaTags,
|
|
324
|
-
getTemplate,
|
|
325
|
-
getTitle,
|
|
326
|
-
pluginHtml
|
|
327
|
-
});
|