@modern-js/uni-builder 2.51.0 → 2.53.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
@@ -4,7 +4,7 @@ import type { CreateUniBuilderOptions } from './types';
4
4
  import HtmlWebpackPlugin from 'html-webpack-plugin';
5
5
  export { HtmlWebpackPlugin };
6
6
  export type { CreateUniBuilderOptions, UniBuilderInstance, UniBuilderWebpackInstance, };
7
- export type { BundlerChain, RsbuildPlugin, ChainedConfig, CopyPluginOptions, ChainIdentifier, NormalizedConfig, RspackConfig, CacheGroup, } from '@rsbuild/shared';
7
+ export type { BundlerChain, RsbuildPlugin, ConfigChain, CopyPluginOptions, ChainIdentifier, NormalizedConfig, RspackConfig, CacheGroup, } from '@rsbuild/shared';
8
8
  export type { UniBuilderConfig, UniBuilderPlugin } from './types';
9
9
  export type { StartDevServerOptions } from './shared/devServer';
10
10
  export declare function createUniBuilder(options: CreateUniBuilderOptions): Promise<UniBuilderInstance>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { StartDevServerOptions as RsbuildStartDevServerOptions, DevConfig, ServerConfig } from '@rsbuild/shared';
3
- import { RsbuildInstance } from '@rsbuild/core';
3
+ import type { RsbuildInstance } from '@rsbuild/core';
4
4
  import type { ModernDevServerOptions } from '@modern-js/server';
5
5
  import type { Server } from 'node:http';
6
6
  import { type InitProdMiddlewares } from '@modern-js/prod-server';
@@ -33,6 +33,7 @@ __export(devServer_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(devServer_exports);
35
35
  var import_shared = require("@rsbuild/shared");
36
+ var import_utils = require("@modern-js/utils");
36
37
  var import_prod_server = require("@modern-js/prod-server");
37
38
  const getServerOptions = (builderConfig) => {
38
39
  var _builderConfig_output_distPath, _builderConfig_output, _builderConfig_output1, _builderConfig_output2;
@@ -58,22 +59,18 @@ const transformToRsbuildServerOptions = (dev, devServer) => {
58
59
  var _newDevServerConfig_devMiddleware, _newDevServerConfig_before, _newDevServerConfig_after;
59
60
  const { port = 8080, host, https, ...devConfig } = dev;
60
61
  var _dev_hmr;
61
- const newDevServerConfig = (0, import_shared.mergeChainedOptions)({
62
- defaults: {
63
- devMiddleware: {
64
- writeToDisk: (file) => !file.includes(".hot-update.")
65
- },
66
- hot: (_dev_hmr = dev === null || dev === void 0 ? void 0 : dev.hmr) !== null && _dev_hmr !== void 0 ? _dev_hmr : true,
67
- liveReload: true,
68
- client: {
69
- path: "/webpack-hmr",
70
- overlay: false,
71
- ...devConfig.client || {}
72
- }
62
+ const newDevServerConfig = (0, import_utils.applyOptionsChain)({
63
+ devMiddleware: {
64
+ writeToDisk: (file) => !file.includes(".hot-update.")
73
65
  },
74
- options: devServer,
75
- mergeFn: import_shared.deepmerge
76
- });
66
+ hot: (_dev_hmr = dev === null || dev === void 0 ? void 0 : dev.hmr) !== null && _dev_hmr !== void 0 ? _dev_hmr : true,
67
+ liveReload: true,
68
+ client: {
69
+ path: "/webpack-hmr",
70
+ overlay: false,
71
+ ...devConfig.client || {}
72
+ }
73
+ }, devServer, {}, import_shared.deepmerge);
77
74
  const rsbuildDev = {
78
75
  ...devConfig,
79
76
  writeToDisk: (_newDevServerConfig_devMiddleware = newDevServerConfig.devMiddleware) === null || _newDevServerConfig_devMiddleware === void 0 ? void 0 : _newDevServerConfig_devMiddleware.writeToDisk,
@@ -21,7 +21,7 @@ __export(globalVars_exports, {
21
21
  pluginGlobalVars: () => pluginGlobalVars
22
22
  });
23
23
  module.exports = __toCommonJS(globalVars_exports);
24
- var import_shared = require("@rsbuild/shared");
24
+ var import_utils = require("@modern-js/utils");
25
25
  const pluginGlobalVars = (options) => ({
26
26
  name: "uni-builder:global-vars",
27
27
  setup(api) {
@@ -29,13 +29,9 @@ const pluginGlobalVars = (options) => ({
29
29
  if (!options) {
30
30
  return;
31
31
  }
32
- const globalVars = (0, import_shared.mergeChainedOptions)({
33
- defaults: {},
34
- options,
35
- utils: {
36
- env,
37
- target
38
- }
32
+ const globalVars = (0, import_utils.applyOptionsChain)({}, options, {
33
+ env,
34
+ target
39
35
  });
40
36
  const serializedVars = {};
41
37
  Object.entries(globalVars).forEach(([key, value]) => {
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { NodeEnv, MetaOptions, ServerConfig, ScriptInject, RsbuildTarget, ChainedConfig, ChainedConfigWithUtils, InlineChunkTest, DevConfig, RequestHandler, RsbuildEntry, MaybePromise, RsbuildPluginAPI, ArrayOrNot, HtmlTagDescriptor, Polyfill } from '@rsbuild/shared';
2
- import type { RsbuildConfig } from '@rsbuild/core';
1
+ import type { NodeEnv, MetaOptions, ConfigChain, ConfigChainWithContext, InlineChunkTest, RequestHandler, MaybePromise, HtmlTagDescriptor } from '@rsbuild/shared';
2
+ import type { DevConfig, RsbuildConfig, RsbuildTarget, Polyfill, ScriptInject, RsbuildEntry, ServerConfig, RsbuildPluginAPI } from '@rsbuild/core';
3
3
  import type { PluginAssetsRetryOptions } from '@rsbuild/plugin-assets-retry';
4
4
  import type { PluginStyledComponentsOptions } from '@rsbuild/plugin-styled-components';
5
5
  import type { PluginRemOptions } from '@rsbuild/plugin-rem';
@@ -16,6 +16,7 @@ import type { AliasOption } from '@modern-js/utils';
16
16
  import type { StartDevServerOptions, UniBuilderStartServerResult } from './shared/devServer';
17
17
  import type { PluginSourceBuildOptions } from '@rsbuild/plugin-source-build';
18
18
  import type TerserPlugin from 'terser-webpack-plugin';
19
+ type ArrayOrNot<T> = T | T[];
19
20
  export type CreateBuilderCommonOptions = {
20
21
  entry?: RsbuildEntry;
21
22
  frameworkConfigPath?: string;
@@ -28,7 +29,7 @@ export type CreateUniBuilderOptions = {
28
29
  config: UniBuilderConfig;
29
30
  } & Partial<CreateBuilderCommonOptions>;
30
31
  export type GlobalVars = Record<string, any>;
31
- export type ChainedGlobalVars = ChainedConfigWithUtils<GlobalVars, {
32
+ export type ChainedGlobalVars = ConfigChainWithContext<GlobalVars, {
32
33
  env: NodeEnv;
33
34
  target: RsbuildTarget;
34
35
  }>;
@@ -42,7 +43,7 @@ export type DisableSourceMapOption = boolean | {
42
43
  js?: boolean;
43
44
  css?: boolean;
44
45
  };
45
- export type ToolsDevServerConfig = ChainedConfig<{
46
+ export type ToolsDevServerConfig = ConfigChain<{
46
47
  before?: RequestHandler[];
47
48
  after?: RequestHandler[];
48
49
  client?: DevConfig['client'];
@@ -59,7 +60,7 @@ export type ToolsDevServerConfig = ChainedConfig<{
59
60
  proxy?: ServerConfig['proxy'];
60
61
  }>;
61
62
  export type TerserPluginOptions = TerserPlugin.BasePluginOptions & TerserPlugin.DefinedDefaultMinimizerAndOptions<TerserPlugin.TerserOptions>;
62
- export type ToolsTerserConfig = ChainedConfig<TerserPluginOptions>;
63
+ export type ToolsTerserConfig = ConfigChain<TerserPluginOptions>;
63
64
  export type UniBuilderExtraConfig = {
64
65
  tools?: {
65
66
  styledComponents?: false | PluginStyledComponentsOptions;
@@ -128,7 +129,7 @@ export type UniBuilderExtraConfig = {
128
129
  * Restrict importing paths. After configuring this option, all source files can only import code from
129
130
  * the specific paths, and import code from other paths is not allowed.
130
131
  */
131
- moduleScopes?: ChainedConfig<ModuleScopes>;
132
+ moduleScopes?: ConfigChain<ModuleScopes>;
132
133
  /**
133
134
  * This configuration will determine which field of `package.json` you use to import the `npm` module.
134
135
  * Same as the [resolve.mainFields](https://webpack.js.org/configuration/resolve/#resolvemainfields) config of webpack.
@@ -343,3 +344,4 @@ export type UniBuilderConfig = {
343
344
  source?: Omit<NonNullable<RsbuildConfig['source']>, 'alias'>;
344
345
  plugins?: RsbuildConfig['plugins'];
345
346
  } & UniBuilderExtraConfig;
347
+ export {};
@@ -113,13 +113,9 @@ const pluginBabel = (options, extraOptions) => ({
113
113
  }
114
114
  ]);
115
115
  }
116
- const babelConfig = (0, import_shared.mergeChainedOptions)({
117
- defaults: baseBabelConfig,
118
- options: options === null || options === void 0 ? void 0 : options.babelLoaderOptions,
119
- utils: {
120
- ...(0, import_plugin_babel.getBabelUtils)(baseBabelConfig),
121
- ...babelUtils
122
- }
116
+ const babelConfig = (0, import_utils.applyOptionsChain)(baseBabelConfig, options === null || options === void 0 ? void 0 : options.babelLoaderOptions, {
117
+ ...(0, import_plugin_babel.getBabelUtils)(baseBabelConfig),
118
+ ...babelUtils
123
119
  });
124
120
  const finalOptions = {
125
121
  babelrc: false,
@@ -32,6 +32,7 @@ __export(minimize_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(minimize_exports);
34
34
  var import_shared = require("@rsbuild/shared");
35
+ var import_utils = require("@modern-js/utils");
35
36
  function applyRemoveConsole(options, config) {
36
37
  const { removeConsole } = config.performance;
37
38
  const compressOptions = typeof options.terserOptions.compress === "boolean" ? {} : options.terserOptions.compress || {};
@@ -76,10 +77,7 @@ async function applyJSMinimizer(chain, config, userTerserConfig) {
76
77
  default:
77
78
  break;
78
79
  }
79
- const mergedOptions = (0, import_shared.mergeChainedOptions)({
80
- defaults: DEFAULT_OPTIONS,
81
- options: userTerserConfig
82
- });
80
+ const mergedOptions = (0, import_utils.applyOptionsChain)(DEFAULT_OPTIONS, userTerserConfig);
83
81
  chain.optimization.minimizer(import_shared.CHAIN_ID.MINIMIZER.JS).use(TerserPlugin, [
84
82
  // Due to terser-webpack-plugin has changed the type of class, which using a generic type in
85
83
  // constructor, leading auto inference of parameters of plugin constructor is not possible, using any instead
@@ -1,6 +1,6 @@
1
1
  import type { RsbuildPlugin } from '@rsbuild/core';
2
- import { type ChainedConfig } from '@rsbuild/shared';
2
+ import { type ConfigChain } from '@rsbuild/shared';
3
3
  import type { ModuleScopes } from '../../types';
4
4
  export declare const isPrimitiveScope: (items: unknown[]) => items is (string | RegExp)[];
5
- export declare const applyScopeChain: (defaults: ModuleScopes, options: ChainedConfig<ModuleScopes>) => ModuleScopes;
6
- export declare const pluginModuleScopes: (moduleScopes?: ChainedConfig<ModuleScopes>) => RsbuildPlugin;
5
+ export declare const applyScopeChain: (defaults: ModuleScopes, options: ConfigChain<ModuleScopes>) => ModuleScopes;
6
+ export declare const pluginModuleScopes: (moduleScopes?: ConfigChain<ModuleScopes>) => RsbuildPlugin;
@@ -1,4 +1,4 @@
1
1
  import type { RsbuildPlugin } from '@rsbuild/core';
2
- import { type ChainedConfig } from '@rsbuild/shared';
2
+ import { type ConfigChain } from '@rsbuild/shared';
3
3
  import type { PluginStyledComponentsOptions } from '@rsbuild/plugin-styled-components';
4
- export declare const pluginStyledComponents: (userConfig?: ChainedConfig<PluginStyledComponentsOptions>) => RsbuildPlugin;
4
+ export declare const pluginStyledComponents: (userConfig?: ConfigChain<PluginStyledComponentsOptions>) => RsbuildPlugin;
@@ -33,6 +33,7 @@ __export(styledComponents_exports, {
33
33
  module.exports = __toCommonJS(styledComponents_exports);
34
34
  var import_core = require("@rsbuild/core");
35
35
  var import_shared = require("@rsbuild/shared");
36
+ var import_utils = require("@modern-js/utils");
36
37
  const getDefaultStyledComponentsConfig = (isProd, ssr) => {
37
38
  return {
38
39
  ssr,
@@ -52,10 +53,7 @@ const pluginStyledComponents = (userConfig = {}) => ({
52
53
  setup(api) {
53
54
  api.modifyBundlerChain(async (chain, { CHAIN_ID, isProd }) => {
54
55
  const isSSR = (0, import_shared.isServerTarget)(api.context.targets);
55
- const styledComponentsOptions = (0, import_shared.mergeChainedOptions)({
56
- defaults: getDefaultStyledComponentsConfig(isProd, isSSR),
57
- options: userConfig
58
- });
56
+ const styledComponentsOptions = (0, import_utils.applyOptionsChain)(getDefaultStyledComponentsConfig(isProd, isSSR), userConfig);
59
57
  if (!styledComponentsOptions) {
60
58
  return;
61
59
  }
@@ -1,9 +1,9 @@
1
- import { type FileFilterUtil, type ChainedConfigWithUtils } from '@rsbuild/shared';
1
+ import { type FileFilterUtil, type ConfigChainWithContext } from '@rsbuild/shared';
2
2
  import { PluginBabelOptions } from '@rsbuild/plugin-babel';
3
3
  import type { RsbuildPlugin } from '@rsbuild/core';
4
4
  import type { Options as RawTSLoaderOptions } from 'ts-loader';
5
5
  export type TSLoaderOptions = Partial<RawTSLoaderOptions>;
6
- export type PluginTsLoaderOptions = ChainedConfigWithUtils<TSLoaderOptions, {
6
+ export type PluginTsLoaderOptions = ConfigChainWithContext<TSLoaderOptions, {
7
7
  /**
8
8
  * use `source.include` instead
9
9
  * @deprecated
@@ -32,6 +32,7 @@ __export(tsLoader_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(tsLoader_exports);
34
34
  var import_shared = require("@rsbuild/shared");
35
+ var import_utils = require("@modern-js/utils");
35
36
  var import_plugin_babel = require("@rsbuild/plugin-babel");
36
37
  var import_web = require("@rsbuild/babel-preset/web");
37
38
  var import_babel = require("./babel");
@@ -57,11 +58,7 @@ const pluginTsLoader = (options, babelOptions) => {
57
58
  });
58
59
  (_baseBabelConfig_presets = baseBabelConfig.presets) === null || _baseBabelConfig_presets === void 0 ? void 0 : _baseBabelConfig_presets.push((0, import_babel.getPresetReact)(api.context.rootPath, isProd));
59
60
  const babelUtils = (0, import_plugin_babel.getBabelUtils)(baseBabelConfig);
60
- const babelLoaderOptions = (0, import_shared.mergeChainedOptions)({
61
- defaults: baseBabelConfig,
62
- options: babelOptions,
63
- utils: babelUtils
64
- });
61
+ const babelLoaderOptions = (0, import_utils.applyOptionsChain)(baseBabelConfig, babelOptions, babelUtils);
65
62
  const includes = [];
66
63
  const excludes = [];
67
64
  const tsLoaderUtils = {
@@ -80,12 +77,12 @@ const pluginTsLoader = (options, babelOptions) => {
80
77
  transpileOnly: true,
81
78
  allowTsInNodeModules: true
82
79
  };
83
- const tsLoaderOptions = (0, import_shared.mergeChainedOptions)({
84
- defaults: tsLoaderDefaultOptions,
80
+ const tsLoaderOptions = (0, import_utils.applyOptionsChain)(
85
81
  // @ts-expect-error ts-loader has incorrect types for compilerOptions
82
+ tsLoaderDefaultOptions,
86
83
  options,
87
- utils: tsLoaderUtils
88
- });
84
+ tsLoaderUtils
85
+ );
89
86
  const rule = chain.module.rule(CHAIN_ID.RULE.TS);
90
87
  (0, import_shared.applyScriptCondition)({
91
88
  chain,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modern-js/uni-builder",
3
- "version": "2.51.0",
3
+ "version": "2.53.0",
4
4
  "description": "Unified builder for Modern.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,26 +26,26 @@
26
26
  "@babel/preset-react": "^7.22.15",
27
27
  "@babel/types": "^7.23.0",
28
28
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
29
- "@rsbuild/babel-preset": "0.7.1",
30
- "@rsbuild/core": "0.7.1",
31
- "@rsbuild/plugin-sass": "0.7.1",
32
- "@rsbuild/plugin-less": "0.7.1",
33
- "@rsbuild/plugin-assets-retry": "0.7.1",
34
- "@rsbuild/plugin-babel": "0.7.1",
35
- "@rsbuild/plugin-check-syntax": "0.7.1",
36
- "@rsbuild/plugin-css-minimizer": "0.7.1",
37
- "@rsbuild/plugin-pug": "0.7.1",
38
- "@rsbuild/plugin-react": "0.7.1",
39
- "@rsbuild/plugin-rem": "0.7.1",
40
- "@rsbuild/plugin-source-build": "0.7.1",
41
- "@rsbuild/plugin-styled-components": "0.7.1",
42
- "@rsbuild/plugin-svgr": "0.7.1",
43
- "@rsbuild/plugin-type-check": "0.7.1",
44
- "@rsbuild/plugin-typed-css-modules": "0.7.1",
45
- "@rsbuild/plugin-toml": "0.7.1",
46
- "@rsbuild/plugin-yaml": "0.7.1",
47
- "@rsbuild/shared": "0.7.1",
48
- "@rsbuild/webpack": "0.7.1",
29
+ "@rsbuild/babel-preset": "0.7.3",
30
+ "@rsbuild/core": "0.7.3",
31
+ "@rsbuild/plugin-sass": "0.7.3",
32
+ "@rsbuild/plugin-less": "0.7.3",
33
+ "@rsbuild/plugin-assets-retry": "0.7.3",
34
+ "@rsbuild/plugin-babel": "0.7.3",
35
+ "@rsbuild/plugin-check-syntax": "0.7.3",
36
+ "@rsbuild/plugin-css-minimizer": "0.7.3",
37
+ "@rsbuild/plugin-pug": "0.7.3",
38
+ "@rsbuild/plugin-react": "0.7.3",
39
+ "@rsbuild/plugin-rem": "0.7.3",
40
+ "@rsbuild/plugin-source-build": "0.7.3",
41
+ "@rsbuild/plugin-styled-components": "0.7.3",
42
+ "@rsbuild/plugin-svgr": "0.7.3",
43
+ "@rsbuild/plugin-type-check": "0.7.3",
44
+ "@rsbuild/plugin-typed-css-modules": "0.7.3",
45
+ "@rsbuild/plugin-toml": "0.7.3",
46
+ "@rsbuild/plugin-yaml": "0.7.3",
47
+ "@rsbuild/shared": "0.7.3",
48
+ "@rsbuild/webpack": "0.7.3",
49
49
  "@swc/helpers": "0.5.3",
50
50
  "babel-loader": "9.1.3",
51
51
  "babel-plugin-import": "1.13.5",
@@ -69,18 +69,18 @@
69
69
  "ts-loader": "9.4.4",
70
70
  "webpack": "^5.91.0",
71
71
  "webpack-subresource-integrity": "5.1.0",
72
- "@modern-js/prod-server": "2.51.0",
73
- "@modern-js/utils": "2.51.0",
74
- "@modern-js/server": "2.51.0"
72
+ "@modern-js/server": "2.53.0",
73
+ "@modern-js/utils": "2.53.0",
74
+ "@modern-js/prod-server": "2.53.0"
75
75
  },
76
76
  "devDependencies": {
77
- "@rsbuild/plugin-swc": "0.7.1",
77
+ "@rsbuild/plugin-swc": "0.7.3",
78
78
  "@types/lodash": "^4.14.202",
79
79
  "react": "^18.2.0",
80
80
  "react-dom": "^18.2.0",
81
81
  "typescript": "^5.3.0",
82
- "@scripts/build": "2.51.0",
83
- "@scripts/vitest-config": "2.51.0"
82
+ "@scripts/build": "2.53.0",
83
+ "@scripts/vitest-config": "2.53.0"
84
84
  },
85
85
  "publishConfig": {
86
86
  "access": "public",