@rsbuild/core 0.1.5 → 0.1.6

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.
@@ -21,5 +21,5 @@ export declare function init({
21
21
  }: {
22
22
  cliOptions?: CommonOptions;
23
23
  isRestart?: boolean;
24
- }): Promise<import("@rsbuild/shared").RsbuildInstance<any> | undefined>;
24
+ }): Promise<import("@rsbuild/shared").RsbuildInstance | undefined>;
25
25
  export declare function runCli(): void;
@@ -81,7 +81,7 @@ async function init({
81
81
  }
82
82
  }
83
83
  function runCli() {
84
- import_commander.program.name("rsbuild").usage("<command> [options]").version("0.1.5");
84
+ import_commander.program.name("rsbuild").usage("<command> [options]").version("0.1.6");
85
85
  import_commander.program.command("dev").option("--open", "open the page in browser on startup").option(
86
86
  "--port <port>",
87
87
  "specify a port number for Rsbuild Server to listen"
@@ -34,7 +34,7 @@ function prepareCli() {
34
34
  if (!npm_execpath || npm_execpath.includes("npx-cli.js")) {
35
35
  console.log();
36
36
  }
37
- import_rslog.logger.greet(` ${`Rsbuild v${"0.1.5"}`}
37
+ import_rslog.logger.greet(` ${`Rsbuild v${"0.1.6"}`}
38
38
  `);
39
39
  }
40
40
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,10 +1,10 @@
1
1
  import { type RsbuildInstance, type RsbuildProvider, type CreateRsbuildOptions } from '@rsbuild/shared';
2
2
  import type { RsbuildConfig } from './types';
3
- export declare function createRsbuild<P extends ({
4
- rsbuildConfig
5
- }: {
6
- rsbuildConfig: T;
7
- }) => RsbuildProvider, T extends RsbuildConfig>(options: CreateRsbuildOptions & {
8
- rsbuildConfig: T;
9
- provider?: P;
10
- }): Promise<RsbuildInstance<ReturnType<P>>>;
3
+ export declare function createRsbuild(options: CreateRsbuildOptions & {
4
+ rsbuildConfig: RsbuildConfig;
5
+ provider?: ({
6
+ rsbuildConfig
7
+ }: {
8
+ rsbuildConfig: RsbuildConfig;
9
+ }) => RsbuildProvider;
10
+ }): Promise<RsbuildInstance>;
@@ -1,4 +1,4 @@
1
- import type { HtmlConfig, NormalizedConfig, SharedRsbuildPluginAPI, NormalizedOutputConfig } from '@rsbuild/shared';
1
+ import type { HtmlConfig, RsbuildPluginAPI, NormalizedConfig, NormalizedOutputConfig } from '@rsbuild/shared';
2
2
  import type { RsbuildPlugin } from '../types';
3
3
  export declare function getTitle(entryName: string, config: NormalizedConfig): string;
4
4
  export declare function getInject(entryName: string, config: NormalizedConfig): import("@rsbuild/shared").ScriptInject;
@@ -13,5 +13,5 @@ export declare function getMetaTags(entryName: string, config: {
13
13
  html: HtmlConfig;
14
14
  output: NormalizedOutputConfig;
15
15
  }, templateContent?: string): import("@rsbuild/shared").MetaOptions;
16
- export declare const applyInjectTags: (api: SharedRsbuildPluginAPI) => void;
16
+ export declare const applyInjectTags: (api: RsbuildPluginAPI) => void;
17
17
  export declare const pluginHtml: () => RsbuildPlugin;
@@ -53,7 +53,8 @@ const plugins = {
53
53
  networkPerformance: () => Promise.resolve().then(() => __toESM(require("./networkPerformance"))).then((m) => m.pluginNetworkPerformance()),
54
54
  preloadOrPrefetch: () => Promise.resolve().then(() => __toESM(require("./preloadOrPrefetch"))).then((m) => m.pluginPreloadOrPrefetch()),
55
55
  performance: () => Promise.resolve().then(() => __toESM(require("./performance"))).then((m) => m.pluginPerformance()),
56
- define: () => Promise.resolve().then(() => __toESM(require("./define"))).then((m) => m.pluginDefine())
56
+ define: () => Promise.resolve().then(() => __toESM(require("./define"))).then((m) => m.pluginDefine()),
57
+ server: () => Promise.resolve().then(() => __toESM(require("./server"))).then((m) => m.pluginServer())
57
58
  };
58
59
  // Annotate the CommonJS export names for ESM import in node:
59
60
  0 && (module.exports = {
@@ -0,0 +1,2 @@
1
+ import type { RsbuildPlugin } from '../types';
2
+ export declare const pluginServer: () => RsbuildPlugin;
@@ -0,0 +1,56 @@
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 server_exports = {};
20
+ __export(server_exports, {
21
+ pluginServer: () => pluginServer
22
+ });
23
+ module.exports = __toCommonJS(server_exports);
24
+ var import_shared = require("@rsbuild/shared");
25
+ const pluginServer = () => ({
26
+ name: "rsbuild:server",
27
+ setup(api) {
28
+ api.modifyRsbuildConfig((rsbuildConfig, { mergeRsbuildConfig }) => {
29
+ if ((0, import_shared.isProd)() && rsbuildConfig.server?.publicDir) {
30
+ const { name, copyOnBuild } = rsbuildConfig.server?.publicDir;
31
+ if (!copyOnBuild || !name) {
32
+ return;
33
+ }
34
+ const { copy } = rsbuildConfig.output || {};
35
+ const publicPattern = [
36
+ {
37
+ from: name,
38
+ to: "",
39
+ noErrorOnMissing: true
40
+ }
41
+ ];
42
+ return mergeRsbuildConfig(rsbuildConfig, {
43
+ output: {
44
+ copy: Array.isArray(copy) ? publicPattern : {
45
+ patterns: publicPattern
46
+ }
47
+ }
48
+ });
49
+ }
50
+ });
51
+ }
52
+ });
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {
55
+ pluginServer
56
+ });
@@ -68,7 +68,7 @@ function createContextByConfig(options, bundlerType, sourceConfig = {}, outputCo
68
68
  entry: sourceConfig.entry || // TODO: remove sourceConfig.entries in v0.2.0
69
69
  // compat with previous config
70
70
  sourceConfig.entries || getDefaultEntry(rootPath),
71
- version: "0.1.5",
71
+ version: "0.1.6",
72
72
  target,
73
73
  rootPath,
74
74
  distPath,
@@ -1,5 +1,4 @@
1
- import { type OnExitFn, type OnAfterBuildFn, type OnBeforeBuildFn, type OnDevCompileDoneFn, type ModifyRsbuildConfigFn, type OnAfterStartDevServerFn, type OnBeforeStartDevServerFn, type OnAfterStartProdServerFn, type OnBeforeStartProdServerFn, type OnAfterCreateCompilerFn, type OnBeforeCreateCompilerFn, type ModifyBundlerChainFn, type RspackConfig, type ModifyRspackConfigFn } from '@rsbuild/shared';
2
- import type { RsbuildConfig } from '../../types';
1
+ import type { OnExitFn, OnAfterBuildFn, OnBeforeBuildFn, OnDevCompileDoneFn, ModifyBundlerChainFn, ModifyRspackConfigFn, ModifyWebpackChainFn, ModifyWebpackConfigFn, ModifyRsbuildConfigFn, OnAfterStartDevServerFn, OnBeforeStartDevServerFn, OnAfterStartProdServerFn, OnBeforeStartProdServerFn, OnAfterCreateCompilerFn, OnBeforeCreateCompilerFn } from '@rsbuild/shared';
3
2
  export declare function initHooks(): {
4
3
  /** parameters are not bundler-related */
5
4
  onExitHook: import("@rsbuild/shared").AsyncHook<OnExitFn>;
@@ -10,11 +9,13 @@ export declare function initHooks(): {
10
9
  onBeforeStartProdServerHook: import("@rsbuild/shared").AsyncHook<OnBeforeStartProdServerFn>;
11
10
  /** parameters are bundler-related */
12
11
  onAfterBuildHook: import("@rsbuild/shared").AsyncHook<OnAfterBuildFn>;
13
- onBeforeBuildHook: import("@rsbuild/shared").AsyncHook<OnBeforeBuildFn<RspackConfig>>;
12
+ onBeforeBuildHook: import("@rsbuild/shared").AsyncHook<OnBeforeBuildFn>;
14
13
  modifyRspackConfigHook: import("@rsbuild/shared").AsyncHook<ModifyRspackConfigFn>;
15
- modifyRsbuildConfigHook: import("@rsbuild/shared").AsyncHook<ModifyRsbuildConfigFn<RsbuildConfig>>;
16
- onAfterCreateCompilerHook: import("@rsbuild/shared").AsyncHook<OnAfterCreateCompilerFn>;
17
- onBeforeCreateCompilerHook: import("@rsbuild/shared").AsyncHook<OnBeforeCreateCompilerFn<RspackConfig>>;
18
14
  modifyBundlerChainHook: import("@rsbuild/shared").AsyncHook<ModifyBundlerChainFn>;
15
+ modifyWebpackChainHook: import("@rsbuild/shared").AsyncHook<ModifyWebpackChainFn>;
16
+ modifyWebpackConfigHook: import("@rsbuild/shared").AsyncHook<ModifyWebpackConfigFn>;
17
+ modifyRsbuildConfigHook: import("@rsbuild/shared").AsyncHook<ModifyRsbuildConfigFn>;
18
+ onAfterCreateCompilerHook: import("@rsbuild/shared").AsyncHook<OnAfterCreateCompilerFn>;
19
+ onBeforeCreateCompilerHook: import("@rsbuild/shared").AsyncHook<OnBeforeCreateCompilerFn>;
19
20
  };
20
21
  export type Hooks = ReturnType<typeof initHooks>;
@@ -35,10 +35,12 @@ function initHooks() {
35
35
  onAfterBuildHook: (0, import_shared.createAsyncHook)(),
36
36
  onBeforeBuildHook: (0, import_shared.createAsyncHook)(),
37
37
  modifyRspackConfigHook: (0, import_shared.createAsyncHook)(),
38
+ modifyBundlerChainHook: (0, import_shared.createAsyncHook)(),
39
+ modifyWebpackChainHook: (0, import_shared.createAsyncHook)(),
40
+ modifyWebpackConfigHook: (0, import_shared.createAsyncHook)(),
38
41
  modifyRsbuildConfigHook: (0, import_shared.createAsyncHook)(),
39
42
  onAfterCreateCompilerHook: (0, import_shared.createAsyncHook)(),
40
- onBeforeCreateCompilerHook: (0, import_shared.createAsyncHook)(),
41
- modifyBundlerChainHook: (0, import_shared.createAsyncHook)()
43
+ onBeforeCreateCompilerHook: (0, import_shared.createAsyncHook)()
42
44
  };
43
45
  }
44
46
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,5 +1,5 @@
1
- import { type PluginStore } from '@rsbuild/shared';
2
- import type { Context, RsbuildPluginAPI } from '../../types';
1
+ import { type PluginStore, type RsbuildPluginAPI } from '@rsbuild/shared';
2
+ import type { Context } from '../../types';
3
3
  export declare function getPluginAPI({
4
4
  context,
5
5
  pluginStore
@@ -68,19 +68,17 @@ function getPluginAPI({
68
68
  onAfterBuild: hooks.onAfterBuildHook.tap,
69
69
  onBeforeBuild: hooks.onBeforeBuildHook.tap,
70
70
  onDevCompileDone: hooks.onDevCompileDoneHook.tap,
71
+ modifyBundlerChain: hooks.modifyBundlerChainHook.tap,
71
72
  modifyRspackConfig: hooks.modifyRspackConfigHook.tap,
73
+ modifyWebpackChain: hooks.modifyWebpackChainHook.tap,
74
+ modifyWebpackConfig: hooks.modifyWebpackConfigHook.tap,
72
75
  modifyRsbuildConfig: hooks.modifyRsbuildConfigHook.tap,
73
- modifyBundlerChain: hooks.modifyBundlerChainHook.tap,
74
76
  onAfterCreateCompiler: hooks.onAfterCreateCompilerHook.tap,
75
- onBeforeCreateCompiler: hooks.onBeforeCreateCompilerHook.tap,
76
77
  onAfterStartDevServer: hooks.onAfterStartDevServerHook.tap,
78
+ onBeforeCreateCompiler: hooks.onBeforeCreateCompilerHook.tap,
77
79
  onBeforeStartDevServer: hooks.onBeforeStartDevServerHook.tap,
78
80
  onAfterStartProdServer: hooks.onAfterStartProdServerHook.tap,
79
- onBeforeStartProdServer: hooks.onBeforeStartProdServerHook.tap,
80
- modifyWebpackChain: () => {
81
- },
82
- modifyWebpackConfig: () => {
83
- }
81
+ onBeforeStartProdServer: hooks.onBeforeStartProdServerHook.tap
84
82
  };
85
83
  }
86
84
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,6 +1,7 @@
1
1
  export { getRspackVersion } from './shared';
2
2
  export { rspackProvider } from './provider';
3
- export type { RspackProvider } from './provider';
4
3
  export type { Rspack, RspackConfig } from '@rsbuild/shared';
5
4
  export { createPublicContext, createContextByConfig } from './core/createContext';
5
+ export { initHooks, type Hooks } from './core/initHooks';
6
+ export { withDefaultConfig } from './config';
6
7
  export { initRsbuildConfig } from './core/initConfigs';
@@ -21,19 +21,25 @@ __export(rspack_provider_exports, {
21
21
  createContextByConfig: () => import_createContext.createContextByConfig,
22
22
  createPublicContext: () => import_createContext.createPublicContext,
23
23
  getRspackVersion: () => import_shared.getRspackVersion,
24
+ initHooks: () => import_initHooks.initHooks,
24
25
  initRsbuildConfig: () => import_initConfigs.initRsbuildConfig,
25
- rspackProvider: () => import_provider.rspackProvider
26
+ rspackProvider: () => import_provider.rspackProvider,
27
+ withDefaultConfig: () => import_config.withDefaultConfig
26
28
  });
27
29
  module.exports = __toCommonJS(rspack_provider_exports);
28
30
  var import_shared = require("./shared");
29
31
  var import_provider = require("./provider");
30
32
  var import_createContext = require("./core/createContext");
33
+ var import_initHooks = require("./core/initHooks");
34
+ var import_config = require("./config");
31
35
  var import_initConfigs = require("./core/initConfigs");
32
36
  // Annotate the CommonJS export names for ESM import in node:
33
37
  0 && (module.exports = {
34
38
  createContextByConfig,
35
39
  createPublicContext,
36
40
  getRspackVersion,
41
+ initHooks,
37
42
  initRsbuildConfig,
38
- rspackProvider
43
+ rspackProvider,
44
+ withDefaultConfig
39
45
  });
@@ -1,8 +1,7 @@
1
- import { type RsbuildProvider, type RspackConfig } from '@rsbuild/shared';
2
- import type { RsbuildConfig, NormalizedConfig } from '../types';
3
- export type RspackProvider = RsbuildProvider<RsbuildConfig, RspackConfig, NormalizedConfig>;
1
+ import { type RsbuildProvider } from '@rsbuild/shared';
2
+ import type { RsbuildConfig } from '../types';
4
3
  export declare function rspackProvider({
5
4
  rsbuildConfig: originalRsbuildConfig
6
5
  }: {
7
6
  rsbuildConfig: RsbuildConfig;
8
- }): RspackProvider;
7
+ }): RsbuildProvider;
@@ -75,6 +75,7 @@ const applyDefaultPlugins = (plugins) => (0, import_shared3.awaitableGetter)([
75
75
  plugins.networkPerformance(),
76
76
  plugins.preloadOrPrefetch(),
77
77
  plugins.performance(),
78
+ plugins.server(),
78
79
  Promise.resolve().then(() => __toESM(require("./plugins/rspackProfile"))).then((m) => m.pluginRspackProfile())
79
80
  ]);
80
81
  const getRspackVersion = async () => {
@@ -88,12 +89,30 @@ const getRspackVersion = async () => {
88
89
  }
89
90
  };
90
91
  const rspackMinVersion = "0.3.6";
92
+ const compareSemver = (version1, version2) => {
93
+ const parts1 = version1.split(".").map(Number);
94
+ const parts2 = version2.split(".").map(Number);
95
+ const len = Math.max(parts1.length, parts2.length);
96
+ for (let i = 0; i < len; i++) {
97
+ const item1 = parts1[i] ?? 0;
98
+ const item2 = parts2[i] ?? 0;
99
+ if (item1 > item2) {
100
+ return 1;
101
+ }
102
+ if (item1 < item2) {
103
+ return -1;
104
+ }
105
+ }
106
+ return 0;
107
+ };
91
108
  const isSatisfyRspackVersion = async (version) => {
92
- const semver = await Promise.resolve().then(() => __toESM(require("semver")));
93
109
  if (version.includes("-canary")) {
94
110
  version = version.split("-canary")[0];
95
111
  }
96
- return version ? semver.lte(rspackMinVersion, version) : true;
112
+ if (version && /^[\d\.]+$/.test(version)) {
113
+ return compareSemver(version, rspackMinVersion) >= 0;
114
+ }
115
+ return true;
97
116
  };
98
117
  const getCompiledPath = (packageName) => {
99
118
  const providerCompilerPath = (0, import_path.join)(__dirname, "../../compiled", packageName);
@@ -113,6 +113,16 @@ class RsbuildDevServer {
113
113
  }
114
114
  devMiddleware.init(app);
115
115
  devMiddleware.middleware && this.middlewares.use(devMiddleware.middleware);
116
+ if (dev.publicDir && dev.publicDir.name) {
117
+ const { default: sirv } = await Promise.resolve().then(() => __toESM(require("../../compiled/sirv")));
118
+ const { name } = dev.publicDir;
119
+ const publicDir = (0, import_path.isAbsolute)(name) ? name : (0, import_path.join)(this.pwd, name);
120
+ const assetMiddleware = sirv(publicDir, {
121
+ etag: true,
122
+ dev: true
123
+ });
124
+ this.middlewares.use(assetMiddleware);
125
+ }
116
126
  const { distPath } = this.output;
117
127
  this.middlewares.use(
118
128
  (0, import_middlewares.getHtmlFallbackMiddleware)({
package/dist/types.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import type { Context as BaseContext, RsbuildConfig, NormalizedConfig, DefaultRsbuildPluginAPI, RsbuildPlugin as BaseRsbuildPlugin } from '@rsbuild/shared';
1
+ import type { Context as BaseContext, RsbuildConfig, RsbuildPlugin, NormalizedConfig, RsbuildPluginAPI } from '@rsbuild/shared';
2
2
  import type { Hooks } from './rspack-provider/core/initHooks';
3
- import type { RspackConfig } from '@rsbuild/shared';
4
- export interface RsbuildPluginAPI extends DefaultRsbuildPluginAPI<RsbuildConfig, NormalizedConfig, RspackConfig> {}
5
- export type RsbuildPlugin<T = RsbuildPluginAPI> = BaseRsbuildPlugin<T>;
3
+ export type { RsbuildPlugin, RsbuildPluginAPI };
6
4
  /** The inner context. */
7
5
  export type Context = BaseContext & {
8
6
  /** All hooks. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsbuild/core",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Unleash the power of Rspack with the out-of-the-box build tool.",
5
5
  "homepage": "https://rsbuild.dev",
6
6
  "bugs": {
@@ -62,12 +62,10 @@
62
62
  "core-js": "~3.32.2",
63
63
  "html-webpack-plugin": "npm:html-rspack-plugin@5.5.7",
64
64
  "postcss": "8.4.31",
65
- "semver": "^7.5.4",
66
- "@rsbuild/shared": "0.1.5"
65
+ "@rsbuild/shared": "0.1.6"
67
66
  },
68
67
  "devDependencies": {
69
68
  "@types/node": "^16",
70
- "@types/semver": "^7.5.4",
71
69
  "typescript": "^5.3.0",
72
70
  "webpack": "^5.89.0"
73
71
  },