@modern-js/uni-builder 2.58.2 → 2.59.0

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/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
+ import HtmlWebpackPlugin from 'html-webpack-plugin';
1
2
  import { type UniBuilderInstance } from './rspack';
2
- import { type UniBuilderWebpackInstance } from './webpack';
3
3
  import type { CreateUniBuilderOptions } from './types';
4
- import HtmlWebpackPlugin from 'html-webpack-plugin';
4
+ import { type UniBuilderWebpackInstance } from './webpack';
5
5
  export { HtmlWebpackPlugin };
6
6
  export type { CreateUniBuilderOptions, UniBuilderInstance, UniBuilderWebpackInstance, };
7
7
  export type { UniBuilderConfig, UniBuilderPlugin, LooseRsbuildPlugin, BundlerType, MetaOptions, Stats, MultiStats, RspackConfig, } from './types';
package/dist/index.js CHANGED
@@ -37,9 +37,9 @@ __export(src_exports, {
37
37
  logger: () => import_core.logger
38
38
  });
39
39
  module.exports = __toCommonJS(src_exports);
40
+ var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
40
41
  var import_rspack = require("./rspack");
41
42
  var import_webpack = require("./webpack");
42
- var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
43
43
  var import_core = require("@rsbuild/core");
44
44
  var import_utils = require("./shared/utils");
45
45
  async function createUniBuilder(options) {
@@ -1,5 +1,5 @@
1
- import type { RsbuildConfig, RsbuildPlugin, RsbuildInstance } from '@rsbuild/core';
2
- import type { UniBuilderConfig, CreateUniBuilderOptions, CreateBuilderCommonOptions, OverridesUniBuilderInstance } from '../types';
1
+ import type { RsbuildConfig, RsbuildInstance, RsbuildPlugin } from '@rsbuild/core';
2
+ import type { CreateBuilderCommonOptions, CreateUniBuilderOptions, OverridesUniBuilderInstance, UniBuilderConfig } from '../types';
3
3
  export declare function parseConfig(uniBuilderConfig: UniBuilderConfig, options: CreateBuilderCommonOptions): Promise<{
4
4
  rsbuildConfig: RsbuildConfig;
5
5
  rsbuildPlugins: RsbuildPlugin[];
@@ -33,8 +33,8 @@ __export(rspack_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(rspack_exports);
35
35
  var import_core = require("@rsbuild/core");
36
- var import_parseCommonConfig = require("../shared/parseCommonConfig");
37
36
  var import_compatLegacyPlugin = require("../shared/compatLegacyPlugin");
37
+ var import_parseCommonConfig = require("../shared/parseCommonConfig");
38
38
  var import_utils = require("../shared/utils");
39
39
  async function parseConfig(uniBuilderConfig, options) {
40
40
  var _uniBuilderConfig_experiments, _uniBuilderConfig_tools, _uniBuilderConfig_tools1;
@@ -42,6 +42,20 @@ async function parseConfig(uniBuilderConfig, options) {
42
42
  if ((_uniBuilderConfig_experiments = uniBuilderConfig.experiments) === null || _uniBuilderConfig_experiments === void 0 ? void 0 : _uniBuilderConfig_experiments.lazyCompilation) {
43
43
  rsbuildConfig.dev.lazyCompilation = uniBuilderConfig.experiments.lazyCompilation;
44
44
  }
45
+ const { sri } = uniBuilderConfig.security || {};
46
+ if (sri) {
47
+ if (sri === true) {
48
+ rsbuildConfig.security.sri = {
49
+ enable: "auto"
50
+ };
51
+ } else {
52
+ const algorithm = Array.isArray(sri.hashFuncNames) ? sri.hashFuncNames[0] : void 0;
53
+ rsbuildConfig.security.sri = {
54
+ enable: sri.enabled,
55
+ algorithm
56
+ };
57
+ }
58
+ }
45
59
  if ((_uniBuilderConfig_tools = uniBuilderConfig.tools) === null || _uniBuilderConfig_tools === void 0 ? void 0 : _uniBuilderConfig_tools.babel) {
46
60
  var _uniBuilderConfig_tools2;
47
61
  const { pluginBabel } = await Promise.resolve().then(() => __toESM(require("@rsbuild/plugin-babel")));
@@ -1,5 +1,5 @@
1
- import type { UniBuilderPlugin } from '../types';
2
1
  import { type RsbuildPlugin } from '@rsbuild/core';
2
+ import type { UniBuilderPlugin } from '../types';
3
3
  export declare function compatLegacyPlugin(plugin: UniBuilderPlugin, extraInfo: {
4
4
  cwd: string;
5
5
  }): RsbuildPlugin;
@@ -21,8 +21,8 @@ __export(compatLegacyPlugin_exports, {
21
21
  compatLegacyPlugin: () => compatLegacyPlugin
22
22
  });
23
23
  module.exports = __toCommonJS(compatLegacyPlugin_exports);
24
- var import_core = require("@rsbuild/core");
25
24
  var import_path = require("path");
25
+ var import_core = require("@rsbuild/core");
26
26
  function addDeprecatedWarning(pluginName, name, newName) {
27
27
  import_core.logger.warn(`Plugin(${pluginName})'s api '${name}' is deprecated${newName ? `, please use '${newName}' instead.` : "."}`);
28
28
  }
@@ -1,5 +1,5 @@
1
1
  import type { DevConfig, ServerConfig } from '@rsbuild/core';
2
- import type { UniBuilderConfig, ToolsDevServerConfig } from '../types';
2
+ import type { ToolsDevServerConfig, UniBuilderConfig } from '../types';
3
3
  export declare const transformToRsbuildServerOptions: (dev: NonNullable<UniBuilderConfig['dev']>, devServer: ToolsDevServerConfig) => {
4
4
  dev: DevConfig;
5
5
  server: ServerConfig;
@@ -21,8 +21,8 @@ __export(devServer_exports, {
21
21
  transformToRsbuildServerOptions: () => transformToRsbuildServerOptions
22
22
  });
23
23
  module.exports = __toCommonJS(devServer_exports);
24
- var import_ts_deepmerge = require("ts-deepmerge");
25
24
  var import_utils = require("@modern-js/utils");
25
+ var import_ts_deepmerge = require("ts-deepmerge");
26
26
  const transformDevSetupMiddlewares = (seuptMiddlewares) => {
27
27
  if (seuptMiddlewares) {
28
28
  const newSetupMiddlewares = seuptMiddlewares.map((handler) => (_, server) => {
@@ -39,7 +39,7 @@ const transformDevSetupMiddlewares = (seuptMiddlewares) => {
39
39
  };
40
40
  const transformToRsbuildServerOptions = (dev, devServer) => {
41
41
  var _newDevServerConfig_devMiddleware;
42
- const { port = 8080, host, https, startUrl, beforeStartUrl, ...devConfig } = dev;
42
+ const { port = 8080, host, https, startUrl, beforeStartUrl, setupMiddlewares, ...devConfig } = dev;
43
43
  var _dev_hmr;
44
44
  const newDevServerConfig = (0, import_utils.applyOptionsChain)({
45
45
  devMiddleware: {
@@ -52,7 +52,8 @@ const transformToRsbuildServerOptions = (dev, devServer) => {
52
52
  overlay: false,
53
53
  port: "<port>",
54
54
  ...devConfig.client || {}
55
- }
55
+ },
56
+ setupMiddlewares
56
57
  }, devServer, {}, import_ts_deepmerge.merge);
57
58
  const rsbuildDev = {
58
59
  writeToDisk: (_newDevServerConfig_devMiddleware = newDevServerConfig.devMiddleware) === null || _newDevServerConfig_devMiddleware === void 0 ? void 0 : _newDevServerConfig_devMiddleware.writeToDisk,
@@ -1 +1 @@
1
- export declare function getCssSupport(projectBrowserslist: string[]): Record<"initial" | "customProperties" | "pageBreak" | "fontVariant" | "mediaMinmax", boolean>;
1
+ export declare function getCssSupport(projectBrowserslist: string[]): Record<"customProperties" | "initial" | "pageBreak" | "fontVariant" | "mediaMinmax", boolean>;
@@ -1,4 +1,4 @@
1
- import { type RsbuildPlugin, type RsbuildConfig } from '@rsbuild/core';
1
+ import { type RsbuildConfig, type RsbuildPlugin } from '@rsbuild/core';
2
2
  import type { CreateBuilderCommonOptions, UniBuilderConfig } from '../types';
3
3
  /** Determine if a file path is a CSS module when disableCssModuleExtension is enabled. */
4
4
  export declare const isLooseCssModules: (path: string) => boolean;
@@ -32,26 +32,26 @@ __export(parseCommonConfig_exports, {
32
32
  parseCommonConfig: () => parseCommonConfig
33
33
  });
34
34
  module.exports = __toCommonJS(parseCommonConfig_exports);
35
- var import_core = require("@rsbuild/core");
36
35
  var import_utils = require("@modern-js/utils");
36
+ var import_core = require("@rsbuild/core");
37
+ var import_plugin_css_minimizer = require("@rsbuild/plugin-css-minimizer");
38
+ var import_plugin_less = require("@rsbuild/plugin-less");
39
+ var import_plugin_react = require("@rsbuild/plugin-react");
40
+ var import_plugin_sass = require("@rsbuild/plugin-sass");
37
41
  var import_plugin_toml = require("@rsbuild/plugin-toml");
38
42
  var import_plugin_yaml = require("@rsbuild/plugin-yaml");
39
- var import_plugin_react = require("@rsbuild/plugin-react");
40
- var import_globalVars = require("./plugins/globalVars");
41
- var import_runtimeChunk = require("./plugins/runtimeChunk");
42
- var import_frameworkConfig = require("./plugins/frameworkConfig");
43
- var import_splitChunk = require("./plugins/splitChunk");
44
- var import_plugin_css_minimizer = require("@rsbuild/plugin-css-minimizer");
45
- var import_postcss = require("./plugins/postcss");
46
- var import_devtools = require("./plugins/devtools");
47
- var import_emitRouteFile = require("./plugins/emitRouteFile");
43
+ var import_devServer = require("./devServer");
48
44
  var import_antd = require("./plugins/antd");
49
45
  var import_arco = require("./plugins/arco");
46
+ var import_devtools = require("./plugins/devtools");
47
+ var import_emitRouteFile = require("./plugins/emitRouteFile");
50
48
  var import_environmentDefaults = require("./plugins/environmentDefaults");
51
- var import_plugin_sass = require("@rsbuild/plugin-sass");
52
- var import_plugin_less = require("@rsbuild/plugin-less");
49
+ var import_frameworkConfig = require("./plugins/frameworkConfig");
50
+ var import_globalVars = require("./plugins/globalVars");
53
51
  var import_htmlMinify = require("./plugins/htmlMinify");
54
- var import_devServer = require("./devServer");
52
+ var import_postcss = require("./plugins/postcss");
53
+ var import_runtimeChunk = require("./plugins/runtimeChunk");
54
+ var import_splitChunk = require("./plugins/splitChunk");
55
55
  var import_utils2 = require("./utils");
56
56
  const CSS_MODULES_REGEX = /\.modules?\.\w+$/i;
57
57
  const GLOBAL_CSS_REGEX = /\.global\.\w+$/;
@@ -80,9 +80,9 @@ const isUseCssSourceMap = (disableSourceMap = {}) => {
80
80
  };
81
81
  async function parseCommonConfig(uniBuilderConfig, options) {
82
82
  var _uniBuilderConfig_output, _uniBuilderConfig_tools;
83
- var _rsbuildConfig_tools, _output_distPath, _output, _extraConfig, _html, _extraConfig1;
83
+ var _rsbuildConfig_tools, _output, _output_distPath, _output1, _extraConfig, _html, _extraConfig1;
84
84
  const { frameworkConfigPath } = options;
85
- const { plugins: [...plugins] = [], performance: { ...performanceConfig } = {}, output: { disableFilenameHash, enableLatestDecorators, cssModuleLocalIdentName, enableInlineScripts, disableCssExtract, enableInlineStyles, enableCssModuleTSDeclaration, disableCssModuleExtension, disableTsChecker, disableSvgr, svgDefaultExport, assetsRetry, enableAssetFallback, enableAssetManifest, disableSourceMap, convertToRem, disableMinimize, polyfill, dataUriLimit = 1e4, distPath = {}, ...outputConfig } = {}, html: { disableHtmlFolder, metaByEntries, titleByEntries, faviconByEntries, injectByEntries, templateByEntries, templateParametersByEntries, tagsByEntries, appIcon, tags, ...htmlConfig } = {}, source: { alias, globalVars, resolveMainFields, resolveExtensionPrefix, ...sourceConfig } = {}, dev, security: { checkSyntax, sri, ...securityConfig } = {}, tools: { devServer, tsChecker, minifyCss, less, sass, htmlPlugin, autoprefixer, ...toolsConfig } = {}, environments = {} } = uniBuilderConfig;
85
+ const { plugins: [...plugins] = [], performance: { ...performanceConfig } = {}, output: { disableFilenameHash, enableLatestDecorators, cssModuleLocalIdentName, enableInlineScripts, disableCssExtract, enableInlineStyles, enableCssModuleTSDeclaration, disableCssModuleExtension, disableTsChecker, disableSvgr, svgDefaultExport, assetsRetry, enableAssetFallback, enableAssetManifest, disableSourceMap, convertToRem, disableMinimize, polyfill, dataUriLimit = 1e4, distPath = {}, ...outputConfig } = {}, html: { disableHtmlFolder, metaByEntries, titleByEntries, faviconByEntries, injectByEntries, templateByEntries, templateParametersByEntries, tagsByEntries, appIcon, tags, ...htmlConfig } = {}, source: { alias, globalVars, resolveMainFields, resolveExtensionPrefix, transformImport, ...sourceConfig } = {}, dev, security: { checkSyntax, sri, ...securityConfig } = {}, tools: { devServer, tsChecker, minifyCss, less, sass, htmlPlugin, autoprefixer, ...toolsConfig } = {}, environments = {} } = uniBuilderConfig;
86
86
  const rsbuildConfig = {
87
87
  plugins,
88
88
  output: {
@@ -104,6 +104,7 @@ async function parseCommonConfig(uniBuilderConfig, options) {
104
104
  var _lightningcssLoader;
105
105
  (_lightningcssLoader = (_rsbuildConfig_tools = rsbuildConfig.tools).lightningcssLoader) !== null && _lightningcssLoader !== void 0 ? _lightningcssLoader : _rsbuildConfig_tools.lightningcssLoader = false;
106
106
  const { html = {}, output = {}, source = {} } = rsbuildConfig;
107
+ source.transformImport = transformImport === false ? () => [] : transformImport;
107
108
  if (enableLatestDecorators) {
108
109
  source.decorators = {
109
110
  version: "2022-03"
@@ -115,18 +116,20 @@ async function parseCommonConfig(uniBuilderConfig, options) {
115
116
  version: "legacy"
116
117
  };
117
118
  }
119
+ var _charset;
120
+ (_charset = (_output = output).charset) !== null && _charset !== void 0 ? _charset : _output.charset = "ascii";
118
121
  if (disableMinimize) {
119
- var _output1;
120
- (_output1 = output).minify || (_output1.minify = false);
122
+ var _output2;
123
+ (_output2 = output).minify || (_output2.minify = false);
121
124
  }
122
125
  if (cssModuleLocalIdentName) {
123
- var _output2;
124
- (_output2 = output).cssModules || (_output2.cssModules = {});
126
+ var _output3;
127
+ (_output3 = output).cssModules || (_output3.cssModules = {});
125
128
  output.cssModules.localIdentName = cssModuleLocalIdentName;
126
129
  }
127
130
  if (isUseCssSourceMap(disableSourceMap)) {
128
- var _output3;
129
- (_output3 = output).sourceMap || (_output3.sourceMap = {});
131
+ var _output4;
132
+ (_output4 = output).sourceMap || (_output4.sourceMap = {});
130
133
  output.sourceMap.css = true;
131
134
  }
132
135
  const { server: _server, worker, ...rsbuildDistPath } = distPath;
@@ -134,10 +137,10 @@ async function parseCommonConfig(uniBuilderConfig, options) {
134
137
  var _html1;
135
138
  (_html1 = (_output_distPath = output.distPath).html) !== null && _html1 !== void 0 ? _html1 : _output_distPath.html = "html";
136
139
  var _polyfill;
137
- (_polyfill = (_output = output).polyfill) !== null && _polyfill !== void 0 ? _polyfill : _output.polyfill = "entry";
140
+ (_polyfill = (_output1 = output).polyfill) !== null && _polyfill !== void 0 ? _polyfill : _output1.polyfill = "entry";
138
141
  if (disableCssModuleExtension) {
139
- var _output4, _output_cssModules;
140
- (_output4 = output).cssModules || (_output4.cssModules = {});
142
+ var _output5, _output_cssModules;
143
+ (_output5 = output).cssModules || (_output5.cssModules = {});
141
144
  var _auto;
142
145
  (_auto = (_output_cssModules = output.cssModules).auto) !== null && _auto !== void 0 ? _auto : _output_cssModules.auto = isLooseCssModules;
143
146
  }
@@ -235,8 +238,8 @@ async function parseCommonConfig(uniBuilderConfig, options) {
235
238
  (0, import_emitRouteFile.pluginEmitRouteFile)(),
236
239
  (0, import_plugin_toml.pluginToml)(),
237
240
  (0, import_plugin_yaml.pluginYaml)(),
238
- (0, import_antd.pluginAntd)(),
239
- (0, import_arco.pluginArco)(),
241
+ (0, import_antd.pluginAntd)(transformImport),
242
+ (0, import_arco.pluginArco)(transformImport),
240
243
  (0, import_plugin_sass.pluginSass)({
241
244
  sassLoaderOptions: sass
242
245
  }),
@@ -1,2 +1,2 @@
1
- import type { RsbuildPlugin } from '@rsbuild/core';
2
- export declare const pluginAntd: () => RsbuildPlugin;
1
+ import type { RsbuildPlugin, SourceConfig } from '@rsbuild/core';
2
+ export declare const pluginAntd: (imports?: SourceConfig['transformImport'] | false) => RsbuildPlugin;
@@ -35,26 +35,29 @@ const getAntdMajorVersion = (appDirectory) => {
35
35
  return null;
36
36
  }
37
37
  };
38
- const pluginAntd = () => ({
38
+ const pluginAntd = (imports) => ({
39
39
  name: "uni-builder:antd",
40
40
  setup(api) {
41
- api.modifyEnvironmentConfig((rsbuildConfig, { name }) => {
42
- var _rsbuildConfig_source_transformImport;
43
- if (rsbuildConfig.source.transformImport === false || ((_rsbuildConfig_source_transformImport = rsbuildConfig.source.transformImport) === null || _rsbuildConfig_source_transformImport === void 0 ? void 0 : _rsbuildConfig_source_transformImport.some((item) => item.libraryName === "antd"))) {
41
+ api.modifyEnvironmentConfig((rsbuildConfig, { name, mergeEnvironmentConfig }) => {
42
+ if (imports === false || Array.isArray(imports) && (imports === null || imports === void 0 ? void 0 : imports.some((item) => typeof item === "object" && item.libraryName === "antd"))) {
44
43
  return;
45
44
  }
46
45
  const useServerEnvironment = (0, import_utils.isServerEnvironment)(rsbuildConfig.output.target, name);
47
46
  const antdMajorVersion = getAntdMajorVersion(api.context.rootPath);
48
47
  if (antdMajorVersion && antdMajorVersion < 5) {
49
- rsbuildConfig.source.transformImport = [
50
- ...rsbuildConfig.source.transformImport || [],
51
- {
52
- libraryName: "antd",
53
- libraryDirectory: useServerEnvironment ? "lib" : "es",
54
- style: true
48
+ return mergeEnvironmentConfig({
49
+ source: {
50
+ transformImport: [
51
+ {
52
+ libraryName: "antd",
53
+ libraryDirectory: useServerEnvironment ? "lib" : "es",
54
+ style: true
55
+ }
56
+ ]
55
57
  }
56
- ];
58
+ }, rsbuildConfig);
57
59
  }
60
+ return rsbuildConfig;
58
61
  });
59
62
  }
60
63
  });
@@ -1,2 +1,2 @@
1
- import type { RsbuildPlugin } from '@rsbuild/core';
2
- export declare const pluginArco: () => RsbuildPlugin;
1
+ import type { RsbuildPlugin, SourceConfig } from '@rsbuild/core';
2
+ export declare const pluginArco: (imports?: SourceConfig['transformImport'] | false) => RsbuildPlugin;
@@ -23,33 +23,37 @@ __export(arco_exports, {
23
23
  module.exports = __toCommonJS(arco_exports);
24
24
  var import_utils = require("@modern-js/utils");
25
25
  var import_utils2 = require("../utils");
26
- const pluginArco = () => ({
26
+ const pluginArco = (imports) => ({
27
27
  name: "uni-builder:arco",
28
28
  setup(api) {
29
29
  const ARCO_NAME = "@arco-design/web-react";
30
30
  const ARCO_ICON = `${ARCO_NAME}/icon`;
31
- api.modifyEnvironmentConfig((rsbuildConfig, { name }) => {
32
- const { transformImport = [] } = rsbuildConfig.source;
33
- if (transformImport === false || !(0, import_utils.isPackageInstalled)(ARCO_NAME, api.context.rootPath)) {
31
+ api.modifyEnvironmentConfig((rsbuildConfig, { name, mergeEnvironmentConfig }) => {
32
+ if (imports === false || !(0, import_utils.isPackageInstalled)(ARCO_NAME, api.context.rootPath)) {
34
33
  return;
35
34
  }
35
+ const defaultImports = [];
36
36
  const useServerEnvironment = (0, import_utils2.isServerEnvironment)(rsbuildConfig.output.target, name);
37
- if (!(transformImport === null || transformImport === void 0 ? void 0 : transformImport.some((item) => item.libraryName === ARCO_NAME))) {
38
- transformImport.push({
37
+ if (typeof imports === "function" || !(imports === null || imports === void 0 ? void 0 : imports.some((item) => typeof item === "object" && item.libraryName === ARCO_NAME))) {
38
+ defaultImports.push({
39
39
  libraryName: ARCO_NAME,
40
40
  libraryDirectory: useServerEnvironment ? "lib" : "es",
41
41
  camelToDashComponentName: false,
42
42
  style: true
43
43
  });
44
44
  }
45
- if (!(transformImport === null || transformImport === void 0 ? void 0 : transformImport.some((item) => item.libraryName === ARCO_ICON))) {
46
- transformImport.push({
45
+ if (typeof imports === "function" || !(imports === null || imports === void 0 ? void 0 : imports.some((item) => typeof item === "object" && item.libraryName === ARCO_ICON))) {
46
+ defaultImports.push({
47
47
  libraryName: ARCO_ICON,
48
48
  libraryDirectory: useServerEnvironment ? "react-icon-cjs" : "react-icon",
49
49
  camelToDashComponentName: false
50
50
  });
51
51
  }
52
- rsbuildConfig.source.transformImport = transformImport;
52
+ return defaultImports.length ? mergeEnvironmentConfig({
53
+ source: {
54
+ transformImport: defaultImports
55
+ }
56
+ }, rsbuildConfig) : rsbuildConfig;
53
57
  });
54
58
  }
55
59
  });
@@ -32,8 +32,8 @@ __export(emitRouteFile_exports, {
32
32
  pluginEmitRouteFile: () => pluginEmitRouteFile
33
33
  });
34
34
  module.exports = __toCommonJS(emitRouteFile_exports);
35
- var import_node_path = require("node:path");
36
35
  var import_node_fs = __toESM(require("node:fs"));
36
+ var import_node_path = require("node:path");
37
37
  async function isFileExists(file) {
38
38
  return import_node_fs.default.promises.access(file, import_node_fs.default.constants.F_OK).then(() => true).catch(() => false);
39
39
  }
@@ -35,6 +35,7 @@ const pluginEnvironmentDefaults = (distPath = {}) => ({
35
35
  (_environments = (_compatConfig = compatConfig).environments) !== null && _environments !== void 0 ? _environments : _compatConfig.environments = {};
36
36
  compatConfig.environments[import_utils.SERVICE_WORKER_ENVIRONMENT_NAME] = {
37
37
  output: {
38
+ polyfill: "off",
38
39
  distPath: {
39
40
  root: (0, import_node_path.join)(distPath.root || "dist", distPath.worker || "worker"),
40
41
  js: "",
@@ -84,6 +85,12 @@ const pluginEnvironmentDefaults = (distPath = {}) => ({
84
85
  var _overrideBrowserslist;
85
86
  (_overrideBrowserslist = (_config_output = config.output).overrideBrowserslist) !== null && _overrideBrowserslist !== void 0 ? _overrideBrowserslist : _config_output.overrideBrowserslist = await (0, import_utils.getBrowserslistWithDefault)(api.context.rootPath, config, name === import_utils.SERVICE_WORKER_ENVIRONMENT_NAME ? "node" : config.output.target);
86
87
  });
88
+ api.modifyBundlerChain(async (chain, { environment }) => {
89
+ const isServiceWorker = environment.name === import_utils.SERVICE_WORKER_ENVIRONMENT_NAME;
90
+ if (isServiceWorker) {
91
+ chain.output.libraryTarget("commonjs2");
92
+ }
93
+ });
87
94
  }
88
95
  });
89
96
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,4 +1,4 @@
1
- import type { RsbuildTarget, RspackChain, RsbuildContext, NormalizedEnvironmentConfig } from '@rsbuild/core';
1
+ import type { NormalizedEnvironmentConfig, RsbuildContext, RsbuildTarget, RspackChain } from '@rsbuild/core';
2
2
  export declare const RUNTIME_CHUNK_NAME = "builder-runtime";
3
3
  export declare const SERVICE_WORKER_ENVIRONMENT_NAME = "serviceWorker";
4
4
  export declare const JS_REGEX: RegExp;
package/dist/types.d.ts CHANGED
@@ -1,27 +1,25 @@
1
- import type { ConfigChainWithContext, ConfigChain, DevConfig, HtmlConfig, RsbuildConfig, RsbuildTarget, Polyfill, ScriptInject, ServerConfig, RsbuildPluginAPI, OutputConfig, DistPathConfig, Rspack, RequestHandler, HtmlTagDescriptor, RsbuildPlugin } from '@rsbuild/core';
1
+ import type { AliasOption } from '@modern-js/utils';
2
+ import type { ConfigChain, ConfigChainWithContext, DevConfig, DistPathConfig, HtmlConfig, HtmlTagDescriptor, OutputConfig, Polyfill, RequestHandler, RsbuildConfig, RsbuildPlugin, RsbuildPluginAPI, RsbuildPlugins, RsbuildTarget, Rspack, ScriptInject, SecurityConfig, ServerConfig, SourceConfig, ToolsConfig } from '@rsbuild/core';
2
3
  import type { PluginAssetsRetryOptions } from '@rsbuild/plugin-assets-retry';
3
- import type { PluginStyledComponentsOptions } from '@rsbuild/plugin-styled-components';
4
- import type { PluginRemOptions } from '@rsbuild/plugin-rem';
5
- import type { PluginTsLoaderOptions } from './webpack/plugins/tsLoader';
6
- import type { SvgDefaultExport } from '@rsbuild/plugin-svgr';
7
- import type { PluginCssMinimizerOptions } from '@rsbuild/plugin-css-minimizer';
8
- import type { PluginTypeCheckerOptions } from '@rsbuild/plugin-type-check';
4
+ import type { PluginBabelOptions } from '@rsbuild/plugin-babel';
9
5
  import type { PluginCheckSyntaxOptions } from '@rsbuild/plugin-check-syntax';
6
+ import type { PluginCssMinimizerOptions } from '@rsbuild/plugin-css-minimizer';
7
+ import type { PluginLessOptions } from '@rsbuild/plugin-less';
10
8
  import type { PluginPugOptions } from '@rsbuild/plugin-pug';
11
- import type { PluginBabelOptions } from '@rsbuild/plugin-babel';
9
+ import type { PluginRemOptions } from '@rsbuild/plugin-rem';
12
10
  import type { PluginSassOptions } from '@rsbuild/plugin-sass';
13
- import type { PluginLessOptions } from '@rsbuild/plugin-less';
14
- import type { AliasOption } from '@modern-js/utils';
15
11
  import type { PluginSourceBuildOptions } from '@rsbuild/plugin-source-build';
16
- import type TerserPlugin from 'terser-webpack-plugin';
17
- import type { Options as HTMLPluginOptions } from 'html-webpack-plugin';
12
+ import type { PluginStyledComponentsOptions } from '@rsbuild/plugin-styled-components';
13
+ import type { SvgDefaultExport } from '@rsbuild/plugin-svgr';
14
+ import type { PluginTypeCheckerOptions } from '@rsbuild/plugin-type-check';
18
15
  import type { Options as AutoprefixerOptions } from 'autoprefixer';
16
+ import type { Options as HTMLPluginOptions } from 'html-webpack-plugin';
17
+ import type TerserPlugin from 'terser-webpack-plugin';
18
+ import type { PluginTsLoaderOptions } from './webpack/plugins/tsLoader';
19
19
  type ArrayOrNot<T> = T | T[];
20
20
  export type Stats = Omit<Rspack.Stats, '#private' | 'hash' | 'startTime' | 'endTime'>;
21
21
  export type RspackConfig = Rspack.Configuration;
22
- export type MultiStats = Omit<Rspack.MultiStats, '#private' | 'hash' | 'stats'> & {
23
- stats: Stats[];
24
- };
22
+ export type MultiStats = Rspack.MultiStats;
25
23
  /**
26
24
  * custom properties
27
25
  * e.g. { name: 'viewport' content: 'width=500, initial-scale=1' }
@@ -151,6 +149,7 @@ export type UniBuilderExtraConfig = {
151
149
  port?: number;
152
150
  };
153
151
  source?: {
152
+ transformImport?: SourceConfig['transformImport'] | false;
154
153
  alias?: AliasOption;
155
154
  /**
156
155
  * Define global variables. It can replace expressions like `process.env.FOO` in your code after compile.
@@ -367,16 +366,16 @@ export type DistPath = DistPathConfig & {
367
366
  };
368
367
  export type UniBuilderConfig = {
369
368
  dev?: RsbuildConfig['dev'];
370
- html?: Omit<NonNullable<RsbuildConfig['html']>, 'appIcon'>;
371
- output?: Omit<NonNullable<RsbuildConfig['output']>, 'polyfill' | 'distPath'> & {
369
+ html?: Omit<HtmlConfig, 'appIcon'>;
370
+ output?: Omit<OutputConfig, 'polyfill' | 'distPath'> & {
372
371
  polyfill?: Polyfill | 'ua';
373
372
  distPath?: DistPath;
374
373
  };
375
374
  performance?: RsbuildConfig['performance'];
376
- security?: RsbuildConfig['security'];
377
- tools?: Omit<NonNullable<RsbuildConfig['tools']>, 'htmlPlugin'>;
378
- source?: Omit<NonNullable<RsbuildConfig['source']>, 'alias'>;
379
- plugins?: RsbuildConfig['plugins'];
375
+ security?: Omit<SecurityConfig, 'sri'>;
376
+ tools?: Omit<ToolsConfig, 'htmlPlugin'>;
377
+ source?: Omit<SourceConfig, 'alias' | 'transformImport'>;
378
+ plugins?: RsbuildPlugins;
380
379
  environments?: RsbuildConfig['environments'];
381
380
  } & UniBuilderExtraConfig;
382
381
  export {};
@@ -32,8 +32,8 @@ __export(ModuleScopePlugin_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(ModuleScopePlugin_exports);
34
34
  var import_path = require("path");
35
- var import_picocolors = __toESM(require("picocolors"));
36
35
  var import_utils = require("@modern-js/utils");
36
+ var import_picocolors = __toESM(require("picocolors"));
37
37
  class ModuleScopePlugin {
38
38
  apply(resolver) {
39
39
  const { allowedFiles, allowedDirs, allowedPatterns, relativeAllowedDirs } = this;
@@ -1,5 +1,5 @@
1
- import { type RsbuildConfig, type RsbuildPlugin, type RsbuildInstance } from '@rsbuild/core';
2
- import type { UniBuilderConfig, CreateUniBuilderOptions, CreateBuilderCommonOptions, OverridesUniBuilderInstance } from '../types';
1
+ import { type RsbuildConfig, type RsbuildInstance, type RsbuildPlugin } from '@rsbuild/core';
2
+ import type { CreateBuilderCommonOptions, CreateUniBuilderOptions, OverridesUniBuilderInstance, UniBuilderConfig } from '../types';
3
3
  export declare function parseConfig(uniBuilderConfig: UniBuilderConfig, options: CreateBuilderCommonOptions): Promise<{
4
4
  rsbuildConfig: RsbuildConfig;
5
5
  rsbuildPlugins: RsbuildPlugin[];
@@ -33,12 +33,12 @@ __export(webpack_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(webpack_exports);
35
35
  var import_core = require("@rsbuild/core");
36
- var import_parseCommonConfig = require("../shared/parseCommonConfig");
37
36
  var import_compatLegacyPlugin = require("../shared/compatLegacyPlugin");
38
- var import_moduleScopes = require("./plugins/moduleScopes");
37
+ var import_parseCommonConfig = require("../shared/parseCommonConfig");
38
+ var import_utils = require("../shared/utils");
39
39
  var import_babel = require("./plugins/babel");
40
+ var import_moduleScopes = require("./plugins/moduleScopes");
40
41
  var import_react = require("./plugins/react");
41
- var import_utils = require("../shared/utils");
42
42
  async function parseConfig(uniBuilderConfig, options) {
43
43
  var _uniBuilderConfig_tools, _uniBuilderConfig_performance, _uniBuilderConfig_tools1, _uniBuilderConfig_output, _uniBuilderConfig_security, _uniBuilderConfig_experiments, _uniBuilderConfig_tools2;
44
44
  const { rsbuildConfig, rsbuildPlugins } = await (0, import_parseCommonConfig.parseCommonConfig)(uniBuilderConfig, options);
@@ -33,8 +33,8 @@ __export(babel_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(babel_exports);
35
35
  var import_cloneDeep = __toESM(require("lodash/cloneDeep"));
36
- var import_web = require("@modern-js/babel-preset/web");
37
36
  var import_node = require("@modern-js/babel-preset/node");
37
+ var import_web = require("@modern-js/babel-preset/web");
38
38
  var import_utils = require("@modern-js/utils");
39
39
  var import_plugin_babel = require("@rsbuild/plugin-babel");
40
40
  var import_utils2 = require("../../shared/utils");
@@ -164,9 +164,25 @@ function applyPluginLodash(config, transformLodash) {
164
164
  ]);
165
165
  }
166
166
  }
167
+ const reduceTransformImportConfig = (options) => {
168
+ if (!options) {
169
+ return [];
170
+ }
171
+ let imports = [];
172
+ for (const item of (0, import_utils2.castArray)(options)) {
173
+ if (typeof item === "function") {
174
+ var _item;
175
+ imports = (_item = item(imports)) !== null && _item !== void 0 ? _item : imports;
176
+ } else {
177
+ imports.push(item);
178
+ }
179
+ }
180
+ return imports;
181
+ };
167
182
  function applyPluginImport(config, pluginImport) {
168
- if (pluginImport !== false && pluginImport) {
169
- for (const item of pluginImport) {
183
+ const finalPluginImport = reduceTransformImportConfig(pluginImport);
184
+ if (finalPluginImport === null || finalPluginImport === void 0 ? void 0 : finalPluginImport.length) {
185
+ for (const item of finalPluginImport) {
170
186
  var _config_plugins;
171
187
  const name = item.libraryName;
172
188
  const option = {
@@ -1,4 +1,4 @@
1
- import type { RsbuildPlugin, DevConfig } from '@rsbuild/core';
1
+ import type { DevConfig, RsbuildPlugin } from '@rsbuild/core';
2
2
  type LazyCompilationOptions = DevConfig['lazyCompilation'];
3
3
  export declare const pluginLazyCompilation: (options: LazyCompilationOptions) => RsbuildPlugin;
4
4
  export {};
@@ -1,4 +1,4 @@
1
- import type { RsbuildPlugin, ConfigChain } from '@rsbuild/core';
1
+ import type { ConfigChain, RsbuildPlugin } from '@rsbuild/core';
2
2
  import type { ModuleScopes } from '../../types';
3
3
  export declare const isPrimitiveScope: (items: unknown[]) => items is (string | RegExp)[];
4
4
  export declare const applyScopeChain: (defaults: ModuleScopes, options: ConfigChain<ModuleScopes>) => ModuleScopes;
@@ -1,3 +1,3 @@
1
- import type { RsbuildPlugin, ConfigChain } from '@rsbuild/core';
1
+ import type { ConfigChain, RsbuildPlugin } from '@rsbuild/core';
2
2
  import type { PluginStyledComponentsOptions } from '@rsbuild/plugin-styled-components';
3
3
  export declare const pluginStyledComponents: (userConfig?: ConfigChain<PluginStyledComponentsOptions>) => RsbuildPlugin;
@@ -31,8 +31,8 @@ __export(styledComponents_exports, {
31
31
  pluginStyledComponents: () => pluginStyledComponents
32
32
  });
33
33
  module.exports = __toCommonJS(styledComponents_exports);
34
- var import_core = require("@rsbuild/core");
35
34
  var import_utils = require("@modern-js/utils");
35
+ var import_core = require("@rsbuild/core");
36
36
  var import_utils2 = require("../../shared/utils");
37
37
  const getDefaultStyledComponentsConfig = (isProd, ssr) => {
38
38
  return {
@@ -1,6 +1,6 @@
1
1
  import type { ConfigChainWithContext } from '@rsbuild/core';
2
- import { type PluginBabelOptions } from '@rsbuild/plugin-babel';
3
2
  import type { RsbuildPlugin } from '@rsbuild/core';
3
+ import { type PluginBabelOptions } from '@rsbuild/plugin-babel';
4
4
  import type { Options as RawTSLoaderOptions } from 'ts-loader';
5
5
  type OneOrMany<T> = T | T[];
6
6
  type FileFilterUtil = (items: OneOrMany<string | RegExp>) => void;
@@ -31,11 +31,11 @@ __export(tsLoader_exports, {
31
31
  pluginTsLoader: () => pluginTsLoader
32
32
  });
33
33
  module.exports = __toCommonJS(tsLoader_exports);
34
+ var import_web = require("@modern-js/babel-preset/web");
34
35
  var import_utils = require("@modern-js/utils");
35
36
  var import_plugin_babel = require("@rsbuild/plugin-babel");
36
- var import_web = require("@modern-js/babel-preset/web");
37
- var import_babel = require("./babel");
38
37
  var import_utils2 = require("../../shared/utils");
38
+ var import_babel = require("./babel");
39
39
  const pluginTsLoader = (options, babelOptions) => {
40
40
  return {
41
41
  name: "uni-builder:ts-loader",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modern-js/uni-builder",
3
- "version": "2.58.2",
3
+ "version": "2.59.0",
4
4
  "description": "Unified builder for Modern.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,24 +26,24 @@
26
26
  "@babel/preset-react": "^7.22.15",
27
27
  "@babel/types": "^7.24.7",
28
28
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
29
- "@rsbuild/core": "1.0.1-beta.14",
30
- "@rsbuild/plugin-assets-retry": "1.0.1-beta.14",
31
- "@rsbuild/plugin-babel": "1.0.1-beta.14",
29
+ "@rsbuild/core": "1.0.1-rc.4",
30
+ "@rsbuild/plugin-assets-retry": "1.0.1-rc.4",
31
+ "@rsbuild/plugin-babel": "1.0.1-rc.4",
32
32
  "@rsbuild/plugin-check-syntax": "1.0.1",
33
33
  "@rsbuild/plugin-css-minimizer": "1.0.2",
34
- "@rsbuild/plugin-less": "1.0.1-beta.14",
34
+ "@rsbuild/plugin-less": "1.0.1-rc.4",
35
35
  "@rsbuild/plugin-pug": "1.0.2",
36
- "@rsbuild/plugin-react": "1.0.1-beta.14",
36
+ "@rsbuild/plugin-react": "1.0.1-rc.4",
37
37
  "@rsbuild/plugin-rem": "1.0.1",
38
- "@rsbuild/plugin-sass": "1.0.1-beta.14",
38
+ "@rsbuild/plugin-sass": "1.0.1-rc.4",
39
39
  "@rsbuild/plugin-source-build": "1.0.1",
40
40
  "@rsbuild/plugin-styled-components": "1.0.1",
41
- "@rsbuild/plugin-svgr": "1.0.1-beta.14",
41
+ "@rsbuild/plugin-svgr": "1.0.1-rc.4",
42
42
  "@rsbuild/plugin-toml": "1.0.1",
43
- "@rsbuild/plugin-type-check": "1.0.1-beta.14",
43
+ "@rsbuild/plugin-type-check": "1.0.1-rc.4",
44
44
  "@rsbuild/plugin-typed-css-modules": "1.0.2",
45
45
  "@rsbuild/plugin-yaml": "1.0.2",
46
- "@rsbuild/webpack": "1.0.1-beta.14",
46
+ "@rsbuild/webpack": "1.0.1-rc.4",
47
47
  "@swc/helpers": "0.5.3",
48
48
  "autoprefixer": "10.4.19",
49
49
  "babel-loader": "9.1.3",
@@ -70,21 +70,21 @@
70
70
  "terser-webpack-plugin": "5.3.10",
71
71
  "ts-deepmerge": "7.0.0",
72
72
  "ts-loader": "9.4.4",
73
- "webpack": "^5.93.0",
73
+ "webpack": "^5.94.0",
74
74
  "webpack-subresource-integrity": "5.1.0",
75
- "@modern-js/babel-preset": "2.58.2",
76
- "@modern-js/utils": "2.58.2"
75
+ "@modern-js/babel-preset": "2.59.0",
76
+ "@modern-js/utils": "2.59.0"
77
77
  },
78
78
  "devDependencies": {
79
- "@rsbuild/plugin-swc": "1.0.1-beta.14",
79
+ "@rsbuild/plugin-swc": "1.0.1-rc.4",
80
80
  "@types/html-minifier-terser": "^7.0.2",
81
81
  "@types/lodash": "^4.14.202",
82
82
  "react": "^18.2.0",
83
83
  "react-dom": "^18.2.0",
84
84
  "terser": "^5.31.1",
85
85
  "typescript": "^5.3.0",
86
- "@scripts/vitest-config": "2.58.2",
87
- "@scripts/build": "2.58.2"
86
+ "@scripts/build": "2.59.0",
87
+ "@scripts/vitest-config": "2.59.0"
88
88
  },
89
89
  "publishConfig": {
90
90
  "access": "public",