@rsbuild/core 0.0.0-next-20231103091827
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/LICENSE +21 -0
- package/README.md +19 -0
- package/bin/rsbuild.js +24 -0
- package/dist/cli/commands.d.ts +7 -0
- package/dist/cli/commands.js +53 -0
- package/dist/cli/config.d.ts +12 -0
- package/dist/cli/config.js +90 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +48 -0
- package/dist/createRsbuild.d.ts +11 -0
- package/dist/createRsbuild.js +103 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +36 -0
- package/dist/plugins/asset.d.ts +3 -0
- package/dist/plugins/asset.js +67 -0
- package/dist/plugins/assetsRetry.d.ts +2 -0
- package/dist/plugins/assetsRetry.js +66 -0
- package/dist/plugins/bundleAnalyzer.d.ts +2 -0
- package/dist/plugins/bundleAnalyzer.js +59 -0
- package/dist/plugins/cache.d.ts +2 -0
- package/dist/plugins/cache.js +115 -0
- package/dist/plugins/cleanOutput.d.ts +2 -0
- package/dist/plugins/cleanOutput.js +47 -0
- package/dist/plugins/define.d.ts +2 -0
- package/dist/plugins/define.js +59 -0
- package/dist/plugins/devtool.d.ts +2 -0
- package/dist/plugins/devtool.js +46 -0
- package/dist/plugins/entry.d.ts +2 -0
- package/dist/plugins/entry.js +42 -0
- package/dist/plugins/externals.d.ts +2 -0
- package/dist/plugins/externals.js +48 -0
- package/dist/plugins/fileSize.d.ts +4 -0
- package/dist/plugins/fileSize.js +160 -0
- package/dist/plugins/html.d.ts +7 -0
- package/dist/plugins/html.js +242 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +67 -0
- package/dist/plugins/inlineChunk.d.ts +2 -0
- package/dist/plugins/inlineChunk.js +85 -0
- package/dist/plugins/moment.d.ts +2 -0
- package/dist/plugins/moment.js +43 -0
- package/dist/plugins/networkPerformance.d.ts +2 -0
- package/dist/plugins/networkPerformance.js +58 -0
- package/dist/plugins/nodeAddons.d.ts +2 -0
- package/dist/plugins/nodeAddons.js +78 -0
- package/dist/plugins/performance.d.ts +5 -0
- package/dist/plugins/performance.js +63 -0
- package/dist/plugins/preloadOrPrefetch.d.ts +2 -0
- package/dist/plugins/preloadOrPrefetch.js +61 -0
- package/dist/plugins/rem.d.ts +2 -0
- package/dist/plugins/rem.js +103 -0
- package/dist/plugins/splitChunks.d.ts +4 -0
- package/dist/plugins/splitChunks.js +251 -0
- package/dist/plugins/startUrl.d.ts +12 -0
- package/dist/plugins/startUrl.js +146 -0
- package/dist/plugins/target.d.ts +2 -0
- package/dist/plugins/target.js +53 -0
- package/dist/plugins/toml.d.ts +2 -0
- package/dist/plugins/toml.js +36 -0
- package/dist/plugins/wasm.d.ts +2 -0
- package/dist/plugins/wasm.js +51 -0
- package/dist/plugins/yaml.d.ts +2 -0
- package/dist/plugins/yaml.js +36 -0
- package/dist/rspack-provider/config/defaults.d.ts +3 -0
- package/dist/rspack-provider/config/defaults.js +40 -0
- package/dist/rspack-provider/config/normalize.d.ts +7 -0
- package/dist/rspack-provider/config/normalize.js +33 -0
- package/dist/rspack-provider/core/build.d.ts +19 -0
- package/dist/rspack-provider/core/build.js +79 -0
- package/dist/rspack-provider/core/createCompiler.d.ts +9 -0
- package/dist/rspack-provider/core/createCompiler.js +83 -0
- package/dist/rspack-provider/core/createContext.d.ts +7 -0
- package/dist/rspack-provider/core/createContext.js +47 -0
- package/dist/rspack-provider/core/devMiddleware.d.ts +5 -0
- package/dist/rspack-provider/core/devMiddleware.js +65 -0
- package/dist/rspack-provider/core/initConfigs.d.ts +14 -0
- package/dist/rspack-provider/core/initConfigs.js +76 -0
- package/dist/rspack-provider/core/initHooks.d.ts +18 -0
- package/dist/rspack-provider/core/initHooks.js +45 -0
- package/dist/rspack-provider/core/initPlugins.d.ts +9 -0
- package/dist/rspack-provider/core/initPlugins.js +82 -0
- package/dist/rspack-provider/core/inspectConfig.d.ts +19 -0
- package/dist/rspack-provider/core/inspectConfig.js +81 -0
- package/dist/rspack-provider/core/rspackConfig.d.ts +9 -0
- package/dist/rspack-provider/core/rspackConfig.js +137 -0
- package/dist/rspack-provider/core/startDevServer.d.ts +6 -0
- package/dist/rspack-provider/core/startDevServer.js +84 -0
- package/dist/rspack-provider/index.d.ts +5 -0
- package/dist/rspack-provider/index.js +31 -0
- package/dist/rspack-provider/plugins/basic.d.ts +5 -0
- package/dist/rspack-provider/plugins/basic.js +34 -0
- package/dist/rspack-provider/plugins/css.d.ts +29 -0
- package/dist/rspack-provider/plugins/css.js +214 -0
- package/dist/rspack-provider/plugins/fallback.d.ts +2 -0
- package/dist/rspack-provider/plugins/fallback.js +54 -0
- package/dist/rspack-provider/plugins/hmr.d.ts +2 -0
- package/dist/rspack-provider/plugins/hmr.js +38 -0
- package/dist/rspack-provider/plugins/less.d.ts +2 -0
- package/dist/rspack-provider/plugins/less.js +78 -0
- package/dist/rspack-provider/plugins/manifest.d.ts +2 -0
- package/dist/rspack-provider/plugins/manifest.js +58 -0
- package/dist/rspack-provider/plugins/minimize.d.ts +5 -0
- package/dist/rspack-provider/plugins/minimize.js +77 -0
- package/dist/rspack-provider/plugins/output.d.ts +2 -0
- package/dist/rspack-provider/plugins/output.js +65 -0
- package/dist/rspack-provider/plugins/progress.d.ts +2 -0
- package/dist/rspack-provider/plugins/progress.js +57 -0
- package/dist/rspack-provider/plugins/resolve.d.ts +2 -0
- package/dist/rspack-provider/plugins/resolve.js +55 -0
- package/dist/rspack-provider/plugins/rspack-profile.d.ts +4 -0
- package/dist/rspack-provider/plugins/rspack-profile.js +107 -0
- package/dist/rspack-provider/plugins/sass.d.ts +2 -0
- package/dist/rspack-provider/plugins/sass.js +83 -0
- package/dist/rspack-provider/plugins/swc.d.ts +7 -0
- package/dist/rspack-provider/plugins/swc.js +151 -0
- package/dist/rspack-provider/plugins/transition.d.ts +5 -0
- package/dist/rspack-provider/plugins/transition.js +42 -0
- package/dist/rspack-provider/provider.d.ts +8 -0
- package/dist/rspack-provider/provider.js +116 -0
- package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/index.d.ts +6 -0
- package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/index.js +84 -0
- package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/postcss-icss-extract-plugin.d.ts +11 -0
- package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/postcss-icss-extract-plugin.js +67 -0
- package/dist/rspack-provider/rspackPlugin/removeCssSourcemapPlugin.d.ts +8 -0
- package/dist/rspack-provider/rspackPlugin/removeCssSourcemapPlugin.js +51 -0
- package/dist/rspack-provider/shared/constants.d.ts +1 -0
- package/dist/rspack-provider/shared/constants.js +28 -0
- package/dist/rspack-provider/shared/fs.d.ts +1 -0
- package/dist/rspack-provider/shared/fs.js +38 -0
- package/dist/rspack-provider/shared/index.d.ts +3 -0
- package/dist/rspack-provider/shared/index.js +26 -0
- package/dist/rspack-provider/shared/plugin.d.ts +3 -0
- package/dist/rspack-provider/shared/plugin.js +83 -0
- package/dist/rspack-provider/shared/rspackVersion.d.ts +3 -0
- package/dist/rspack-provider/shared/rspackVersion.js +61 -0
- package/dist/rspack-provider/types/context.d.ts +16 -0
- package/dist/rspack-provider/types/context.js +16 -0
- package/dist/rspack-provider/types/hooks.d.ts +3 -0
- package/dist/rspack-provider/types/hooks.js +16 -0
- package/dist/rspack-provider/types/index.d.ts +4 -0
- package/dist/rspack-provider/types/index.js +26 -0
- package/dist/rspack-provider/types/plugin.d.ts +7 -0
- package/dist/rspack-provider/types/plugin.js +16 -0
- package/dist/utils/generateMetaTags.d.ts +12 -0
- package/dist/utils/generateMetaTags.js +50 -0
- package/package.json +98 -0
- package/static/openChrome.applescript +95 -0
|
@@ -0,0 +1,61 @@
|
|
|
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 preloadOrPrefetch_exports = {};
|
|
20
|
+
__export(preloadOrPrefetch_exports, {
|
|
21
|
+
pluginPreloadOrPrefetch: () => pluginPreloadOrPrefetch
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(preloadOrPrefetch_exports);
|
|
24
|
+
var import_shared = require("@rsbuild/shared");
|
|
25
|
+
const pluginPreloadOrPrefetch = () => ({
|
|
26
|
+
name: `plugin-preload-or-prefetch`,
|
|
27
|
+
setup(api) {
|
|
28
|
+
api.modifyBundlerChain(
|
|
29
|
+
async (chain, { CHAIN_ID, isServer, isWebWorker, isServiceWorker, HtmlPlugin }) => {
|
|
30
|
+
const config = api.getNormalizedConfig();
|
|
31
|
+
const {
|
|
32
|
+
performance: { preload, prefetch }
|
|
33
|
+
} = config;
|
|
34
|
+
if (isServer || isWebWorker || isServiceWorker) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const HTMLCount = chain.entryPoints.values().length;
|
|
38
|
+
if (prefetch) {
|
|
39
|
+
chain.plugin(CHAIN_ID.PLUGIN.HTML_PREFETCH).use(import_shared.HTMLPreloadOrPrefetchPlugin, [
|
|
40
|
+
prefetch,
|
|
41
|
+
"prefetch",
|
|
42
|
+
HtmlPlugin,
|
|
43
|
+
HTMLCount
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
if (preload) {
|
|
47
|
+
chain.plugin(CHAIN_ID.PLUGIN.HTML_PRELOAD).use(import_shared.HTMLPreloadOrPrefetchPlugin, [
|
|
48
|
+
preload,
|
|
49
|
+
"preload",
|
|
50
|
+
HtmlPlugin,
|
|
51
|
+
HTMLCount
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
59
|
+
0 && (module.exports = {
|
|
60
|
+
pluginPreloadOrPrefetch
|
|
61
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
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 rem_exports = {};
|
|
30
|
+
__export(rem_exports, {
|
|
31
|
+
pluginRem: () => pluginRem
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(rem_exports);
|
|
34
|
+
var import_lodash = __toESM(require("lodash"));
|
|
35
|
+
var import_shared = require("@rsbuild/shared");
|
|
36
|
+
const defaultOptions = {
|
|
37
|
+
enableRuntime: true,
|
|
38
|
+
rootFontSize: 50
|
|
39
|
+
};
|
|
40
|
+
const pluginRem = () => ({
|
|
41
|
+
name: "plugin-rem",
|
|
42
|
+
pre: ["plugin-css", "plugin-less", "plugin-sass", "plugin-stylus"],
|
|
43
|
+
setup(api) {
|
|
44
|
+
api.modifyBundlerChain(
|
|
45
|
+
async (chain, { CHAIN_ID, isServer, isWebWorker, HtmlPlugin }) => {
|
|
46
|
+
const config = api.getNormalizedConfig();
|
|
47
|
+
const {
|
|
48
|
+
output: { convertToRem }
|
|
49
|
+
} = config;
|
|
50
|
+
if (!convertToRem || isServer || isWebWorker) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const userOptions = {
|
|
54
|
+
...defaultOptions,
|
|
55
|
+
...typeof convertToRem === "boolean" ? {} : convertToRem
|
|
56
|
+
};
|
|
57
|
+
const { default: PxToRemPlugin } = await Promise.resolve().then(() => __toESM(require((0, import_shared.getSharedPkgCompiledPath)("postcss-pxtorem"))));
|
|
58
|
+
const applyRules = [
|
|
59
|
+
CHAIN_ID.RULE.CSS,
|
|
60
|
+
CHAIN_ID.RULE.LESS,
|
|
61
|
+
CHAIN_ID.RULE.SASS,
|
|
62
|
+
CHAIN_ID.RULE.STYLUS
|
|
63
|
+
];
|
|
64
|
+
const getPxToRemPlugin = () => PxToRemPlugin({
|
|
65
|
+
rootValue: userOptions.rootFontSize,
|
|
66
|
+
unitPrecision: 5,
|
|
67
|
+
propList: ["*"],
|
|
68
|
+
...import_lodash.default.cloneDeep(userOptions.pxtorem || {})
|
|
69
|
+
});
|
|
70
|
+
applyRules.forEach((name) => {
|
|
71
|
+
chain.module.rules.has(name) && chain.module.rule(name).use(CHAIN_ID.USE.POSTCSS).tap((options = {}) => {
|
|
72
|
+
var _a;
|
|
73
|
+
return {
|
|
74
|
+
...options,
|
|
75
|
+
postcssOptions: {
|
|
76
|
+
...options.postcssOptions || {},
|
|
77
|
+
plugins: [
|
|
78
|
+
...((_a = options.postcssOptions) == null ? void 0 : _a.plugins) || [],
|
|
79
|
+
getPxToRemPlugin()
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
if (!userOptions.enableRuntime) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const entries = Object.keys(chain.entryPoints.entries() || {});
|
|
89
|
+
const distDir = (0, import_shared.getDistPath)(config.output, "js");
|
|
90
|
+
chain.plugin(CHAIN_ID.PLUGIN.AUTO_SET_ROOT_SIZE).use(import_shared.AutoSetRootFontSizePlugin, [
|
|
91
|
+
userOptions,
|
|
92
|
+
entries,
|
|
93
|
+
HtmlPlugin,
|
|
94
|
+
distDir
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
101
|
+
0 && (module.exports = {
|
|
102
|
+
pluginRem
|
|
103
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type DefaultRsbuildPlugin } from '@rsbuild/shared';
|
|
2
|
+
/** Expect to match path just like "./node_modules/react-router/" */
|
|
3
|
+
export declare const createDependenciesRegExp: (...dependencies: (string | RegExp)[]) => RegExp;
|
|
4
|
+
export declare function pluginSplitChunks(): DefaultRsbuildPlugin;
|
|
@@ -0,0 +1,251 @@
|
|
|
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 splitChunks_exports = {};
|
|
30
|
+
__export(splitChunks_exports, {
|
|
31
|
+
createDependenciesRegExp: () => createDependenciesRegExp,
|
|
32
|
+
pluginSplitChunks: () => pluginSplitChunks
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(splitChunks_exports);
|
|
35
|
+
var import_assert = __toESM(require("assert"));
|
|
36
|
+
var import_shared = require("@rsbuild/shared");
|
|
37
|
+
function getUserDefinedCacheGroups(forceSplitting) {
|
|
38
|
+
const cacheGroups = {};
|
|
39
|
+
const pairs = Array.isArray(forceSplitting) ? forceSplitting.map(
|
|
40
|
+
(regexp, index) => [`force-split-${index}`, regexp]
|
|
41
|
+
) : Object.entries(forceSplitting);
|
|
42
|
+
pairs.forEach(([key, regexp]) => {
|
|
43
|
+
cacheGroups[key] = {
|
|
44
|
+
test: regexp,
|
|
45
|
+
name: key,
|
|
46
|
+
chunks: "all",
|
|
47
|
+
// Ignore minimum size, minimum chunks and maximum requests and always create chunks for user defined cache group.
|
|
48
|
+
enforce: true
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
return cacheGroups;
|
|
52
|
+
}
|
|
53
|
+
const DEPENDENCY_MATCH_TEMPL = /[\\/]node_modules[\\/](<SOURCES>)[\\/]/.source;
|
|
54
|
+
const createDependenciesRegExp = (...dependencies) => {
|
|
55
|
+
const sources = dependencies.map(
|
|
56
|
+
(d) => typeof d === "string" ? d : d.source
|
|
57
|
+
);
|
|
58
|
+
const expr = DEPENDENCY_MATCH_TEMPL.replace("<SOURCES>", sources.join("|"));
|
|
59
|
+
return new RegExp(expr);
|
|
60
|
+
};
|
|
61
|
+
function splitByExperience(ctx) {
|
|
62
|
+
const { override, polyfill, defaultConfig, userDefinedCacheGroups } = ctx;
|
|
63
|
+
const experienceCacheGroup = {};
|
|
64
|
+
const packageRegExps = {
|
|
65
|
+
lodash: createDependenciesRegExp("lodash", "lodash-es"),
|
|
66
|
+
axios: createDependenciesRegExp("axios", /axios-.+/)
|
|
67
|
+
};
|
|
68
|
+
if (polyfill === "entry" || polyfill === "usage") {
|
|
69
|
+
packageRegExps.polyfill = createDependenciesRegExp(
|
|
70
|
+
"tslib",
|
|
71
|
+
"core-js",
|
|
72
|
+
"@babel/runtime",
|
|
73
|
+
"@swc/helpers"
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
Object.entries(packageRegExps).forEach(([name, test]) => {
|
|
77
|
+
const key = `lib-${name}`;
|
|
78
|
+
experienceCacheGroup[key] = {
|
|
79
|
+
test,
|
|
80
|
+
priority: 0,
|
|
81
|
+
name: key,
|
|
82
|
+
reuseExistingChunk: true
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
(0, import_assert.default)(defaultConfig !== false);
|
|
86
|
+
(0, import_assert.default)(override !== false);
|
|
87
|
+
return {
|
|
88
|
+
...defaultConfig,
|
|
89
|
+
...override,
|
|
90
|
+
cacheGroups: {
|
|
91
|
+
...defaultConfig.cacheGroups,
|
|
92
|
+
...experienceCacheGroup,
|
|
93
|
+
...userDefinedCacheGroups,
|
|
94
|
+
...override.cacheGroups
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function splitByModule(ctx) {
|
|
99
|
+
const { override, userDefinedCacheGroups, defaultConfig } = ctx;
|
|
100
|
+
(0, import_assert.default)(defaultConfig !== false);
|
|
101
|
+
(0, import_assert.default)(override !== false);
|
|
102
|
+
return {
|
|
103
|
+
...defaultConfig,
|
|
104
|
+
minSize: 0,
|
|
105
|
+
maxInitialRequests: Infinity,
|
|
106
|
+
...override,
|
|
107
|
+
cacheGroups: {
|
|
108
|
+
...defaultConfig.cacheGroups,
|
|
109
|
+
...userDefinedCacheGroups,
|
|
110
|
+
// Core group
|
|
111
|
+
vendors: {
|
|
112
|
+
priority: -10,
|
|
113
|
+
test: import_shared.NODE_MODULES_REGEX,
|
|
114
|
+
// todo: not support in rspack
|
|
115
|
+
name(module2) {
|
|
116
|
+
return (0, import_shared.getPackageNameFromModulePath)(module2.context);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
...override.cacheGroups
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function splitBySize(ctx) {
|
|
124
|
+
var _a, _b;
|
|
125
|
+
const { override, userDefinedCacheGroups, defaultConfig, rsbuildConfig } = ctx;
|
|
126
|
+
(0, import_assert.default)(defaultConfig !== false);
|
|
127
|
+
(0, import_assert.default)(override !== false);
|
|
128
|
+
(0, import_assert.default)(rsbuildConfig.strategy === "split-by-size");
|
|
129
|
+
return {
|
|
130
|
+
...defaultConfig,
|
|
131
|
+
minSize: (_a = rsbuildConfig.minSize) != null ? _a : 0,
|
|
132
|
+
maxSize: (_b = rsbuildConfig.maxSize) != null ? _b : Infinity,
|
|
133
|
+
...override,
|
|
134
|
+
cacheGroups: {
|
|
135
|
+
...defaultConfig.cacheGroups,
|
|
136
|
+
...userDefinedCacheGroups,
|
|
137
|
+
...override.cacheGroups
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function splitCustom(ctx) {
|
|
142
|
+
const { override, userDefinedCacheGroups, defaultConfig } = ctx;
|
|
143
|
+
(0, import_assert.default)(defaultConfig !== false);
|
|
144
|
+
(0, import_assert.default)(override !== false);
|
|
145
|
+
return {
|
|
146
|
+
...defaultConfig,
|
|
147
|
+
...override,
|
|
148
|
+
cacheGroups: {
|
|
149
|
+
...defaultConfig.cacheGroups,
|
|
150
|
+
...userDefinedCacheGroups,
|
|
151
|
+
...override.cacheGroups
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function allInOne(_ctx) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
function singleVendor(ctx) {
|
|
159
|
+
const { override, defaultConfig, userDefinedCacheGroups } = ctx;
|
|
160
|
+
(0, import_assert.default)(defaultConfig !== false);
|
|
161
|
+
(0, import_assert.default)(override !== false);
|
|
162
|
+
const singleVendorCacheGroup = {
|
|
163
|
+
singleVendor: {
|
|
164
|
+
test: import_shared.NODE_MODULES_REGEX,
|
|
165
|
+
priority: 0,
|
|
166
|
+
chunks: "all",
|
|
167
|
+
name: "vendor",
|
|
168
|
+
enforce: true,
|
|
169
|
+
reuseExistingChunk: true
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
return {
|
|
173
|
+
...defaultConfig,
|
|
174
|
+
...override,
|
|
175
|
+
cacheGroups: {
|
|
176
|
+
...defaultConfig.cacheGroups,
|
|
177
|
+
...singleVendorCacheGroup,
|
|
178
|
+
...userDefinedCacheGroups,
|
|
179
|
+
...override.cacheGroups
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const SPLIT_STRATEGY_DISPATCHER = {
|
|
184
|
+
"split-by-experience": splitByExperience,
|
|
185
|
+
"split-by-module": splitByModule,
|
|
186
|
+
"split-by-size": splitBySize,
|
|
187
|
+
custom: splitCustom,
|
|
188
|
+
"all-in-one": allInOne,
|
|
189
|
+
"single-vendor": singleVendor
|
|
190
|
+
};
|
|
191
|
+
function pluginSplitChunks() {
|
|
192
|
+
return {
|
|
193
|
+
name: "plugin-split-chunks",
|
|
194
|
+
setup(api) {
|
|
195
|
+
api.modifyBundlerChain(
|
|
196
|
+
async (chain, { isServer, isWebWorker, isServiceWorker }) => {
|
|
197
|
+
var _a;
|
|
198
|
+
if (isServer || isWebWorker || isServiceWorker) {
|
|
199
|
+
chain.optimization.splitChunks(false);
|
|
200
|
+
if (isWebWorker || isServiceWorker) {
|
|
201
|
+
chain.module.parser.merge({
|
|
202
|
+
javascript: {
|
|
203
|
+
dynamicImportMode: "eager"
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const config = api.getNormalizedConfig();
|
|
210
|
+
const defaultConfig = {
|
|
211
|
+
// Optimize both `initial` and `async` chunks
|
|
212
|
+
chunks: "all",
|
|
213
|
+
// When chunk size >= 50000 bytes, split it into separate chunk
|
|
214
|
+
enforceSizeThreshold: 5e4,
|
|
215
|
+
cacheGroups: {}
|
|
216
|
+
};
|
|
217
|
+
const { chunkSplit } = config.performance;
|
|
218
|
+
let userDefinedCacheGroups = {};
|
|
219
|
+
if (chunkSplit.forceSplitting) {
|
|
220
|
+
userDefinedCacheGroups = getUserDefinedCacheGroups(
|
|
221
|
+
chunkSplit.forceSplitting
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
const override = chunkSplit.strategy === "custom" ? (
|
|
225
|
+
// `chunkSplit.splitChunks` compat for Eden
|
|
226
|
+
(_a = chunkSplit.splitChunks) != null ? _a : chunkSplit.override
|
|
227
|
+
) : chunkSplit.override;
|
|
228
|
+
const splitChunksOptions = await SPLIT_STRATEGY_DISPATCHER[chunkSplit.strategy]({
|
|
229
|
+
defaultConfig,
|
|
230
|
+
override: override || {},
|
|
231
|
+
userDefinedCacheGroups,
|
|
232
|
+
rsbuildConfig: chunkSplit,
|
|
233
|
+
rootPath: api.context.rootPath,
|
|
234
|
+
polyfill: config.output.polyfill
|
|
235
|
+
});
|
|
236
|
+
chain.optimization.splitChunks(splitChunksOptions);
|
|
237
|
+
if (chunkSplit.strategy !== "all-in-one") {
|
|
238
|
+
chain.optimization.runtimeChunk({
|
|
239
|
+
name: import_shared.RUNTIME_CHUNK_NAME
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
248
|
+
0 && (module.exports = {
|
|
249
|
+
createDependenciesRegExp,
|
|
250
|
+
pluginSplitChunks
|
|
251
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type DefaultRsbuildPlugin } from '@rsbuild/shared';
|
|
2
|
+
/**
|
|
3
|
+
* This method is modified based on source found in
|
|
4
|
+
* https://github.com/facebook/create-react-app
|
|
5
|
+
*
|
|
6
|
+
* MIT Licensed
|
|
7
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
8
|
+
* https://github.com/facebook/create-react-app/blob/master/LICENSE
|
|
9
|
+
*/
|
|
10
|
+
export declare function openBrowser(url: string): Promise<boolean>;
|
|
11
|
+
export declare const replacePlaceholder: (url: string, port: number) => string;
|
|
12
|
+
export declare function pluginStartUrl(): DefaultRsbuildPlugin;
|
|
@@ -0,0 +1,146 @@
|
|
|
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 startUrl_exports = {};
|
|
30
|
+
__export(startUrl_exports, {
|
|
31
|
+
openBrowser: () => openBrowser,
|
|
32
|
+
pluginStartUrl: () => pluginStartUrl,
|
|
33
|
+
replacePlaceholder: () => replacePlaceholder
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(startUrl_exports);
|
|
36
|
+
var import_path = require("path");
|
|
37
|
+
var import_shared = require("@rsbuild/shared");
|
|
38
|
+
var import_child_process = require("child_process");
|
|
39
|
+
const supportedChromiumBrowsers = [
|
|
40
|
+
"Google Chrome Canary",
|
|
41
|
+
"Google Chrome Dev",
|
|
42
|
+
"Google Chrome Beta",
|
|
43
|
+
"Google Chrome",
|
|
44
|
+
"Microsoft Edge",
|
|
45
|
+
"Brave Browser",
|
|
46
|
+
"Vivaldi",
|
|
47
|
+
"Chromium"
|
|
48
|
+
];
|
|
49
|
+
const getTargetBrowser = () => {
|
|
50
|
+
let targetBrowser = process.env.BROWSER;
|
|
51
|
+
if (!targetBrowser || !supportedChromiumBrowsers.includes(targetBrowser)) {
|
|
52
|
+
const ps = (0, import_child_process.execSync)("ps cax").toString();
|
|
53
|
+
targetBrowser = supportedChromiumBrowsers.find((b) => ps.includes(b));
|
|
54
|
+
}
|
|
55
|
+
return targetBrowser;
|
|
56
|
+
};
|
|
57
|
+
async function openBrowser(url) {
|
|
58
|
+
const shouldTryOpenChromeWithAppleScript = process.platform === "darwin";
|
|
59
|
+
if (shouldTryOpenChromeWithAppleScript) {
|
|
60
|
+
try {
|
|
61
|
+
const targetBrowser = getTargetBrowser();
|
|
62
|
+
if (targetBrowser) {
|
|
63
|
+
(0, import_child_process.execSync)(
|
|
64
|
+
`osascript openChrome.applescript "${encodeURI(
|
|
65
|
+
url
|
|
66
|
+
)}" "${targetBrowser}"`,
|
|
67
|
+
{
|
|
68
|
+
stdio: "ignore",
|
|
69
|
+
cwd: (0, import_path.join)(__dirname, "../../static")
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
} catch (err) {
|
|
76
|
+
import_shared.logger.error("Failed to open start URL with apple script.");
|
|
77
|
+
import_shared.logger.error(err);
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const { default: open } = await Promise.resolve().then(() => __toESM(require("open")));
|
|
83
|
+
await open(url);
|
|
84
|
+
return true;
|
|
85
|
+
} catch (err) {
|
|
86
|
+
import_shared.logger.error("Failed to open start URL.");
|
|
87
|
+
import_shared.logger.error(err);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const replacePlaceholder = (url, port) => url.replace(/<port>/g, String(port));
|
|
92
|
+
const openedURLs = [];
|
|
93
|
+
function pluginStartUrl() {
|
|
94
|
+
return {
|
|
95
|
+
name: "plugin-start-url",
|
|
96
|
+
async setup(api) {
|
|
97
|
+
let port;
|
|
98
|
+
api.onAfterStartDevServer(async (params) => {
|
|
99
|
+
({ port } = params);
|
|
100
|
+
});
|
|
101
|
+
api.onDevCompileDone(async ({ isFirstCompile }) => {
|
|
102
|
+
if (!isFirstCompile || !port) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const config = api.getNormalizedConfig();
|
|
106
|
+
const { startUrl, beforeStartUrl } = config.dev;
|
|
107
|
+
const { https } = api.context.devServer || {};
|
|
108
|
+
if (!startUrl) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const urls = [];
|
|
112
|
+
if (startUrl === true) {
|
|
113
|
+
const protocol = https ? "https" : "http";
|
|
114
|
+
urls.push(`${protocol}://localhost:${port}`);
|
|
115
|
+
} else {
|
|
116
|
+
urls.push(
|
|
117
|
+
...(0, import_shared.castArray)(startUrl).map(
|
|
118
|
+
(item) => replacePlaceholder(item, port)
|
|
119
|
+
)
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
const openUrls = () => {
|
|
123
|
+
for (const url of urls) {
|
|
124
|
+
if (!openedURLs.includes(url)) {
|
|
125
|
+
openBrowser(url);
|
|
126
|
+
openedURLs.push(url);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
if (beforeStartUrl) {
|
|
131
|
+
Promise.all((0, import_shared.castArray)(beforeStartUrl).map((fn) => fn())).then(
|
|
132
|
+
openUrls
|
|
133
|
+
);
|
|
134
|
+
} else {
|
|
135
|
+
openUrls();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
142
|
+
0 && (module.exports = {
|
|
143
|
+
openBrowser,
|
|
144
|
+
pluginStartUrl,
|
|
145
|
+
replacePlaceholder
|
|
146
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
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 target_exports = {};
|
|
20
|
+
__export(target_exports, {
|
|
21
|
+
pluginTarget: () => pluginTarget
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(target_exports);
|
|
24
|
+
var import_shared = require("@rsbuild/shared");
|
|
25
|
+
const pluginTarget = () => ({
|
|
26
|
+
name: "plugin-target",
|
|
27
|
+
setup(api) {
|
|
28
|
+
api.modifyBundlerChain(async (chain, { target }) => {
|
|
29
|
+
if (target === "node") {
|
|
30
|
+
chain.target("node");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (target === "service-worker") {
|
|
34
|
+
chain.target("webworker");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (target === "web-worker") {
|
|
38
|
+
chain.target(["webworker", "es5"]);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const browserslist = await (0, import_shared.getBrowserslist)(api.context.rootPath);
|
|
42
|
+
if (browserslist) {
|
|
43
|
+
chain.merge({ target: ["web", "browserslist"] });
|
|
44
|
+
} else {
|
|
45
|
+
chain.merge({ target: ["web", "es5"] });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
51
|
+
0 && (module.exports = {
|
|
52
|
+
pluginTarget
|
|
53
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
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 toml_exports = {};
|
|
20
|
+
__export(toml_exports, {
|
|
21
|
+
pluginToml: () => pluginToml
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(toml_exports);
|
|
24
|
+
var import_shared = require("@rsbuild/shared");
|
|
25
|
+
const pluginToml = () => ({
|
|
26
|
+
name: "plugin-toml",
|
|
27
|
+
setup(api) {
|
|
28
|
+
api.modifyBundlerChain((chain, { CHAIN_ID }) => {
|
|
29
|
+
chain.module.rule(CHAIN_ID.RULE.TOML).type("javascript/auto").test(/\.toml$/).use(CHAIN_ID.USE.TOML).loader((0, import_shared.getSharedPkgCompiledPath)("toml-loader"));
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
pluginToml
|
|
36
|
+
});
|