diff --git a/package.json b/package.json index cb0cba9705..0d28cb7fd3 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "test": "pnpm --parallel --filter \"./packages/*\" test" }, "devDependencies": { - "@rstest/adapter-rslib": "catalog:", "@scripts/config": "workspace:*", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", diff --git a/packages/core/package.json b/packages/core/package.json index 801c21a9cd..d7c9ff584d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -40,8 +40,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "prebundle": "prebundle", "test": "rs test" }, @@ -52,7 +52,6 @@ "devDependencies": { "@jridgewell/remapping": "catalog:", "@jridgewell/trace-mapping": "catalog:", - "@rslib/core": "catalog:", "@rstackjs/load-config": "catalog:", "@types/cors": "catalog:", "@types/node": "catalog:", diff --git a/packages/core/rslib.config.ts b/packages/core/rslib.config.ts deleted file mode 100644 index 2c231aec89..0000000000 --- a/packages/core/rslib.config.ts +++ /dev/null @@ -1,246 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import { nodeMinifyConfig } from '@scripts/config/rslib.config.ts'; -import { defineConfig, type Rsbuild, type Rspack } from '@rslib/core'; -import pkgJson from './package.json' with { type: 'json' }; -import prebundleConfig from './prebundle.config.ts'; - -export const define = { - RSBUILD_VERSION: JSON.stringify(pkgJson.version), - // `ws` internal env vars - 'process.env.WS_NO_BUFFER_UTIL': true, - 'process.env.WS_NO_UTF_8_VALIDATE': true, -}; - -const fullyMinifiedChunks = - /^(?:chokidar|connect-next|http-proxy-middleware|launch-editor-middleware|manifest-plugin|memfs|open|tinyglobby|ws)\.js$/; - -const regexpMap: Record = {}; - -for (const item of prebundleConfig.dependencies) { - const depName = typeof item === 'string' ? item : item.name; - - // Skip dtsOnly dependencies - if (typeof item !== 'string' && item.dtsOnly) { - continue; - } - - regexpMap[depName] = new RegExp(`compiled[\\/]${depName}(?:[\\/]|$)`); -} - -const externals: Rspack.Configuration['externals'] = [ - '@rspack/core', - '@rsbuild/core', - // yaml and tsx are optional dependencies of `postcss-load-config` - 'yaml', - 'tsx/cjs/api', - // allow to `require('events')` - { events: 'node-commonjs node:events' }, - // allow `debug` to require its optional peer dependency - { 'supports-color': 'node-commonjs supports-color' }, - // externalize pre-bundled dependencies - ({ request }, callback) => { - const entries = Object.entries(regexpMap); - if (request) { - for (const [name, test] of entries) { - if (request === name) { - throw new Error( - `"${name}" is not allowed to be imported, use "requireCompiledPackage" instead.`, - ); - } - if (/jiti/.test(request)) { - callback(undefined, '../compiled/jiti/lib/jiti.mjs'); - return; - } - if (test.test(request)) { - callback(undefined, `../compiled/${name}/index.js`); - return; - } - } - } - callback(); - }, -]; - -const pluginFixDtsTypes: Rsbuild.RsbuildPlugin = { - name: 'fix-dts-types', - setup(api) { - api.onAfterBuild(() => { - const typesDir = path.join(process.cwd(), 'dist-types'); - const pkgPath = path.join(typesDir, 'package.json'); - if (!fs.existsSync(typesDir)) { - fs.mkdirSync(typesDir); - } - fs.writeFileSync( - pkgPath, - JSON.stringify({ - '//': 'This file is for making TypeScript work with moduleResolution nodenext.', - version: '1.0.0', - }), - 'utf8', - ); - }); - }, -}; - -// Rslib currently doesn't provide a way to preserve `__webpack_require__.*` -// references in the emitted bundle. -// -// To work around this, we use "magic" placeholder identifiers during authoring -// (e.g. `RSPACK_INTERCEPT_MODULE_EXECUTION`) so rslib -// won't try to resolve/transform `__webpack_require__.*` at build time. -// -// After bundling, this plugin performs a plain string replacement to swap -// those placeholders back to the actual Rspack runtime globals. -const replacePlugin: Rsbuild.RsbuildPlugin = { - name: 'replace-plugin', - setup(api) { - const RSPACK_INTERCEPT_MODULE_EXECUTION = 'RSPACK_INTERCEPT_MODULE_EXECUTION'; - - api.processAssets( - { stage: 'optimize-inline' }, - ({ assets, compiler, compilation, sources }) => { - for (const name of Object.keys(assets)) { - const asset = assets[name]; - if (!name.endsWith('.js')) { - continue; - } - - const source = asset.source().toString(); - if (!source.includes(RSPACK_INTERCEPT_MODULE_EXECUTION)) { - continue; - } - - const replacedSource = source.replaceAll( - RSPACK_INTERCEPT_MODULE_EXECUTION, - compiler.rspack.RuntimeGlobals.interceptModuleExecution, - ); - compilation.updateAsset(name, new sources.RawSource(replacedSource)); - } - }, - ); - }, -}; - -export default defineConfig({ - source: { - define, - }, - output: { - externals, - }, - tools: { - rspack: { - experiments: { - nativeWatcher: true, - }, - }, - }, - lib: [ - // Build client modules and copy dependencies to compiled folder - { - id: 'prepare', - syntax: 'es2017', - source: { - entry: { - hmr: 'src/client/hmr.ts', - overlay: 'src/client/overlay.ts', - }, - define: { - // use define to avoid compile time evaluation of import.meta.rspackHash - BUILD_HASH: 'import.meta.rspackHash', - }, - }, - output: { - target: 'web', - externals: ['./hmr.js'], - distPath: { - root: './dist/client', - }, - copy: { - patterns: [ - { - from: './node_modules/jiti', - to: path.join(import.meta.dirname, 'compiled/jiti'), - globOptions: { - dot: false, - }, - }, - ], - }, - }, - performance: { - printFileSize: { - exclude: (asset) => /compiled/.test(asset.name), - }, - }, - plugins: [replacePlugin], - }, - { - id: 'node', - syntax: 'es2023', - plugins: [pluginFixDtsTypes], - source: { - entry: { - index: './src/index.ts', - cssUrlLoader: './src/loader/cssUrlLoader.ts', - ignoreCssLoader: './src/loader/ignoreCssLoader.ts', - transformLoader: './src/loader/transformLoader.ts', - transformRawLoader: './src/loader/transformRawLoader.ts', - workerLoader: './src/loader/workerLoader.ts', - }, - }, - dts: { - isolated: true, - alias: { - // alias to pre-bundled types as they are public API - cors: './compiled/cors', - rslog: './compiled/rslog', - postcss: './compiled/postcss', - chokidar: './compiled/chokidar', - 'connect-next': './compiled/connect-next', - '@rstackjs/load-config': './compiled/@rstackjs/load-config', - 'rspack-chain': './compiled/rspack-chain/types', - 'html-rspack-plugin': './compiled/html-rspack-plugin', - 'http-proxy-middleware': './compiled/http-proxy-middleware', - 'rspack-manifest-plugin': './compiled/rspack-manifest-plugin', - }, - }, - output: { - minify: { - jsOptions: [ - { - // Fully minify large chunks composed primarily of third-party code. - include: fullyMinifiedChunks, - }, - { - ...nodeMinifyConfig.jsOptions, - exclude: fullyMinifiedChunks, - }, - ], - }, - filename: { - js: ({ chunk }) => { - // Use `.mjs` for Rspack loaders - if (chunk?.name?.endsWith('Loader')) { - return '[name].mjs'; - } - return `[name].js`; - }, - }, - }, - shims: { - esm: { - // For `postcss-load-config` - __filename: true, - }, - }, - tools: { - rspack: { - // Wait the pre compiler to copy jiti to compiled folder - dependencies: ['prepare'], - }, - }, - }, - ], -}); diff --git a/packages/core/rstack.config.ts b/packages/core/rstack.config.ts index a29b00f666..f17654461a 100644 --- a/packages/core/rstack.config.ts +++ b/packages/core/rstack.config.ts @@ -1,11 +1,256 @@ -import { define } from 'rstack'; +import fs from 'node:fs'; +import path from 'node:path'; +import { define as rstack } from 'rstack'; +import type { Rsbuild, Rspack } from 'rstack/lib'; +import pkgJson from './package.json' with { type: 'json' }; +import prebundleConfig from './prebundle.config.ts'; -define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); - const { withRslibConfig } = await import('@rstest/adapter-rslib'); +export const define = { + RSBUILD_VERSION: JSON.stringify(pkgJson.version), + // `ws` internal env vars + 'process.env.WS_NO_BUFFER_UTIL': true, + 'process.env.WS_NO_UTF_8_VALIDATE': true, +}; + +const fullyMinifiedChunks = + /^(?:chokidar|connect-next|http-proxy-middleware|launch-editor-middleware|manifest-plugin|memfs|open|tinyglobby|ws)\.js$/; + +const regexpMap: Record = {}; + +for (const item of prebundleConfig.dependencies) { + const depName = typeof item === 'string' ? item : item.name; + + // Skip dtsOnly dependencies + if (typeof item !== 'string' && item.dtsOnly) { + continue; + } + + regexpMap[depName] = new RegExp(`compiled[\\/]${depName}(?:[\\/]|$)`); +} + +const externals: Rspack.Configuration['externals'] = [ + '@rspack/core', + '@rsbuild/core', + // yaml and tsx are optional dependencies of `postcss-load-config` + 'yaml', + 'tsx/cjs/api', + // allow to `require('events')` + { events: 'node-commonjs node:events' }, + // allow `debug` to require its optional peer dependency + { 'supports-color': 'node-commonjs supports-color' }, + // externalize pre-bundled dependencies + ({ request }, callback) => { + const entries = Object.entries(regexpMap); + if (request) { + for (const [name, test] of entries) { + if (request === name) { + throw new Error( + `"${name}" is not allowed to be imported, use "requireCompiledPackage" instead.`, + ); + } + if (/jiti/.test(request)) { + callback(undefined, '../compiled/jiti/lib/jiti.mjs'); + return; + } + if (test.test(request)) { + callback(undefined, `../compiled/${name}/index.js`); + return; + } + } + } + callback(); + }, +]; + +const pluginFixDtsTypes: Rsbuild.RsbuildPlugin = { + name: 'fix-dts-types', + setup(api) { + api.onAfterBuild(() => { + const typesDir = path.join(process.cwd(), 'dist-types'); + const pkgPath = path.join(typesDir, 'package.json'); + if (!fs.existsSync(typesDir)) { + fs.mkdirSync(typesDir); + } + fs.writeFileSync( + pkgPath, + JSON.stringify({ + '//': 'This file is for making TypeScript work with moduleResolution nodenext.', + version: '1.0.0', + }), + 'utf8', + ); + }); + }, +}; + +// Rslib currently doesn't provide a way to preserve `__webpack_require__.*` +// references in the emitted bundle. +// +// To work around this, we use "magic" placeholder identifiers during authoring +// (e.g. `RSPACK_INTERCEPT_MODULE_EXECUTION`) so rslib +// won't try to resolve/transform `__webpack_require__.*` at build time. +// +// After bundling, this plugin performs a plain string replacement to swap +// those placeholders back to the actual Rspack runtime globals. +const replacePlugin: Rsbuild.RsbuildPlugin = { + name: 'replace-plugin', + setup(api) { + const RSPACK_INTERCEPT_MODULE_EXECUTION = 'RSPACK_INTERCEPT_MODULE_EXECUTION'; + + api.processAssets( + { stage: 'optimize-inline' }, + ({ assets, compiler, compilation, sources }) => { + for (const name of Object.keys(assets)) { + const asset = assets[name]; + if (!name.endsWith('.js')) { + continue; + } + + const source = asset.source().toString(); + if (!source.includes(RSPACK_INTERCEPT_MODULE_EXECUTION)) { + continue; + } + + const replacedSource = source.replaceAll( + RSPACK_INTERCEPT_MODULE_EXECUTION, + compiler.rspack.RuntimeGlobals.interceptModuleExecution, + ); + compilation.updateAsset(name, new sources.RawSource(replacedSource)); + } + }, + ); + }, +}; + +rstack.lib(async () => { + const { nodeMinifyConfig } = await import('@scripts/config/lib'); return { - ...baseConfig, - extends: withRslibConfig(), + source: { + define, + }, + output: { + externals, + }, + tools: { + rspack: { + experiments: { + nativeWatcher: true, + }, + }, + }, + lib: [ + // Build client modules and copy dependencies to compiled folder + { + id: 'prepare', + syntax: 'es2017', + source: { + entry: { + hmr: 'src/client/hmr.ts', + overlay: 'src/client/overlay.ts', + }, + define: { + // use define to avoid compile time evaluation of import.meta.rspackHash + BUILD_HASH: 'import.meta.rspackHash', + }, + }, + output: { + target: 'web', + externals: ['./hmr.js'], + distPath: { + root: './dist/client', + }, + copy: { + patterns: [ + { + from: './node_modules/jiti', + to: path.join(import.meta.dirname, 'compiled/jiti'), + globOptions: { + dot: false, + }, + }, + ], + }, + }, + performance: { + printFileSize: { + exclude: (asset) => /compiled/.test(asset.name), + }, + }, + plugins: [replacePlugin], + }, + { + id: 'node', + syntax: 'es2023', + plugins: [pluginFixDtsTypes], + source: { + entry: { + index: './src/index.ts', + cssUrlLoader: './src/loader/cssUrlLoader.ts', + ignoreCssLoader: './src/loader/ignoreCssLoader.ts', + transformLoader: './src/loader/transformLoader.ts', + transformRawLoader: './src/loader/transformRawLoader.ts', + workerLoader: './src/loader/workerLoader.ts', + }, + }, + dts: { + isolated: true, + alias: { + // alias to pre-bundled types as they are public API + cors: './compiled/cors', + rslog: './compiled/rslog', + postcss: './compiled/postcss', + chokidar: './compiled/chokidar', + 'connect-next': './compiled/connect-next', + '@rstackjs/load-config': './compiled/@rstackjs/load-config', + 'rspack-chain': './compiled/rspack-chain/types', + 'html-rspack-plugin': './compiled/html-rspack-plugin', + 'http-proxy-middleware': './compiled/http-proxy-middleware', + 'rspack-manifest-plugin': './compiled/rspack-manifest-plugin', + }, + }, + output: { + minify: { + jsOptions: [ + { + // Fully minify large chunks composed primarily of third-party code. + include: fullyMinifiedChunks, + }, + { + ...nodeMinifyConfig.jsOptions, + exclude: fullyMinifiedChunks, + }, + ], + }, + filename: { + js: ({ chunk }) => { + // Use `.mjs` for Rspack loaders + if (chunk?.name?.endsWith('Loader')) { + return '[name].mjs'; + } + return `[name].js`; + }, + }, + }, + shims: { + esm: { + // For `postcss-load-config` + __filename: true, + }, + }, + tools: { + rspack: { + // Wait the pre compiler to copy jiti to compiled folder + dependencies: ['prepare'], + }, + }, + }, + ], }; }); + +rstack.test(async () => { + const { baseConfig } = await import('@scripts/config/test'); + + return baseConfig; +}); diff --git a/packages/create-rsbuild/package.json b/packages/create-rsbuild/package.json index bb6e62a40f..5b946f012f 100644 --- a/packages/create-rsbuild/package.json +++ b/packages/create-rsbuild/package.json @@ -29,8 +29,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib --syntax es2023", - "dev": "rslib --syntax es2023 -w", + "build": "rs lib --syntax es2023", + "dev": "rs lib --syntax es2023 -w", "start": "node ./dist/index.js" }, "dependencies": { @@ -44,7 +44,6 @@ "@rsbuild/plugin-solid": "workspace:*", "@rsbuild/plugin-svelte": "workspace:*", "@rsbuild/plugin-vue": "workspace:*", - "@rslib/core": "catalog:", "@types/node": "catalog:", "typescript": "catalog:" }, diff --git a/packages/plugin-babel/package.json b/packages/plugin-babel/package.json index 593c639915..391dd1001e 100644 --- a/packages/plugin-babel/package.json +++ b/packages/plugin-babel/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -43,7 +43,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "typescript": "catalog:" diff --git a/packages/plugin-babel/rslib.config.ts b/packages/plugin-babel/rslib.config.ts deleted file mode 100644 index be1319bcd0..0000000000 --- a/packages/plugin-babel/rslib.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; - -export default pureEsmPackage; diff --git a/packages/plugin-babel/rstack.config.ts b/packages/plugin-babel/rstack.config.ts index edb46b2166..28546f1229 100644 --- a/packages/plugin-babel/rstack.config.ts +++ b/packages/plugin-babel/rstack.config.ts @@ -1,7 +1,15 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-less/package.json b/packages/plugin-less/package.json index 0f91d41946..08119d1761 100644 --- a/packages/plugin-less/package.json +++ b/packages/plugin-less/package.json @@ -29,8 +29,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "prebundle": "prebundle", "test": "rs test" }, @@ -42,7 +42,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/less": "catalog:", "prebundle": "catalog:", diff --git a/packages/plugin-less/rslib.config.ts b/packages/plugin-less/rslib.config.ts deleted file mode 100644 index 3190d25e4a..0000000000 --- a/packages/plugin-less/rslib.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; -import { defineConfig } from '@rslib/core'; - -export default defineConfig({ - ...pureEsmPackage, - output: { - externals: /[\\/]compiled[\\/]/, - }, -}); diff --git a/packages/plugin-less/rstack.config.ts b/packages/plugin-less/rstack.config.ts index edb46b2166..2aebb9faec 100644 --- a/packages/plugin-less/rstack.config.ts +++ b/packages/plugin-less/rstack.config.ts @@ -1,7 +1,18 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + output: { + externals: /[\\/]compiled[\\/]/, + }, + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-preact/package.json b/packages/plugin-preact/package.json index b7a55acbe8..cabcf4e191 100644 --- a/packages/plugin-preact/package.json +++ b/packages/plugin-preact/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -40,7 +40,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@types/node": "catalog:", "preact": "catalog:", "typescript": "catalog:" diff --git a/packages/plugin-preact/rslib.config.ts b/packages/plugin-preact/rslib.config.ts deleted file mode 100644 index be1319bcd0..0000000000 --- a/packages/plugin-preact/rslib.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; - -export default pureEsmPackage; diff --git a/packages/plugin-preact/rstack.config.ts b/packages/plugin-preact/rstack.config.ts index edb46b2166..28546f1229 100644 --- a/packages/plugin-preact/rstack.config.ts +++ b/packages/plugin-preact/rstack.config.ts @@ -1,7 +1,15 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index 5b12ede10f..6ee0d57d16 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -39,7 +39,6 @@ "devDependencies": { "@rsbuild/core": "workspace:*", "@rsbuild/core-v1": "catalog:", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "typescript": "catalog:" diff --git a/packages/plugin-react/rslib.config.ts b/packages/plugin-react/rslib.config.ts deleted file mode 100644 index be1319bcd0..0000000000 --- a/packages/plugin-react/rslib.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; - -export default pureEsmPackage; diff --git a/packages/plugin-react/rstack.config.ts b/packages/plugin-react/rstack.config.ts index edb46b2166..28546f1229 100644 --- a/packages/plugin-react/rstack.config.ts +++ b/packages/plugin-react/rstack.config.ts @@ -1,7 +1,15 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-sass/package.json b/packages/plugin-sass/package.json index 783510a18b..84f0de6e26 100644 --- a/packages/plugin-sass/package.json +++ b/packages/plugin-sass/package.json @@ -29,8 +29,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "prebundle": "prebundle", "test": "rs test" }, @@ -43,7 +43,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "@types/sass-loader": "catalog:", diff --git a/packages/plugin-sass/rslib.config.ts b/packages/plugin-sass/rslib.config.ts deleted file mode 100644 index 3190d25e4a..0000000000 --- a/packages/plugin-sass/rslib.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; -import { defineConfig } from '@rslib/core'; - -export default defineConfig({ - ...pureEsmPackage, - output: { - externals: /[\\/]compiled[\\/]/, - }, -}); diff --git a/packages/plugin-sass/rstack.config.ts b/packages/plugin-sass/rstack.config.ts index edb46b2166..2aebb9faec 100644 --- a/packages/plugin-sass/rstack.config.ts +++ b/packages/plugin-sass/rstack.config.ts @@ -1,7 +1,18 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + output: { + externals: /[\\/]compiled[\\/]/, + }, + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-solid/package.json b/packages/plugin-solid/package.json index 27b0865bf3..b3f83f4d4f 100644 --- a/packages/plugin-solid/package.json +++ b/packages/plugin-solid/package.json @@ -29,8 +29,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -40,7 +40,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/babel__core": "catalog:", "typescript": "catalog:" diff --git a/packages/plugin-solid/rslib.config.ts b/packages/plugin-solid/rslib.config.ts deleted file mode 100644 index dfb624e98a..0000000000 --- a/packages/plugin-solid/rslib.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { esmConfig, nodeMinifyConfig } from '@scripts/config/rslib.config.ts'; -import { defineConfig } from '@rslib/core'; - -export default defineConfig({ - lib: [ - esmConfig, - { - format: 'cjs', - syntax: 'es2023', - output: { - minify: nodeMinifyConfig, - }, - }, - ], -}); diff --git a/packages/plugin-solid/rstack.config.ts b/packages/plugin-solid/rstack.config.ts index edb46b2166..ecd35a30a8 100644 --- a/packages/plugin-solid/rstack.config.ts +++ b/packages/plugin-solid/rstack.config.ts @@ -1,7 +1,24 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig, nodeMinifyConfig } = await import('@scripts/config/lib'); + + return { + lib: [ + esmConfig, + { + format: 'cjs', + syntax: 'es2023', + output: { + minify: nodeMinifyConfig, + }, + }, + ], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-svelte/package.json b/packages/plugin-svelte/package.json index 23bc2836cf..8d9f606ca1 100644 --- a/packages/plugin-svelte/package.json +++ b/packages/plugin-svelte/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -38,7 +38,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "svelte": "catalog:", diff --git a/packages/plugin-svelte/rslib.config.ts b/packages/plugin-svelte/rslib.config.ts deleted file mode 100644 index be1319bcd0..0000000000 --- a/packages/plugin-svelte/rslib.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; - -export default pureEsmPackage; diff --git a/packages/plugin-svelte/rstack.config.ts b/packages/plugin-svelte/rstack.config.ts index edb46b2166..28546f1229 100644 --- a/packages/plugin-svelte/rstack.config.ts +++ b/packages/plugin-svelte/rstack.config.ts @@ -1,7 +1,15 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-svgr/package.json b/packages/plugin-svgr/package.json index ddd6e4c6ff..4d0ad0d126 100644 --- a/packages/plugin-svgr/package.json +++ b/packages/plugin-svgr/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -43,7 +43,6 @@ "devDependencies": { "@rsbuild/core": "workspace:*", "@rsbuild/core-v1": "catalog:", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "svgo": "catalog:", diff --git a/packages/plugin-svgr/rslib.config.ts b/packages/plugin-svgr/rslib.config.ts deleted file mode 100644 index 550b63235f..0000000000 --- a/packages/plugin-svgr/rslib.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; -import { defineConfig } from '@rslib/core'; - -export default defineConfig({ - ...pureEsmPackage, - lib: [ - ...pureEsmPackage.lib, - { - source: { - entry: { - assetLoader: './src/assetLoader.ts', - loader: './src/loader.ts', - }, - }, - output: { - filename: { - js: '[name].mjs', - }, - }, - }, - ], -}); diff --git a/packages/plugin-svgr/rstack.config.ts b/packages/plugin-svgr/rstack.config.ts index edb46b2166..43690bd064 100644 --- a/packages/plugin-svgr/rstack.config.ts +++ b/packages/plugin-svgr/rstack.config.ts @@ -1,7 +1,30 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [ + esmConfig, + { + source: { + entry: { + assetLoader: './src/assetLoader.ts', + loader: './src/loader.ts', + }, + }, + output: { + filename: { + js: '[name].mjs', + }, + }, + }, + ], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-tailwindcss/package.json b/packages/plugin-tailwindcss/package.json index e771d7b36d..7abb1f3ace 100644 --- a/packages/plugin-tailwindcss/package.json +++ b/packages/plugin-tailwindcss/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -37,7 +37,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "typescript": "catalog:" diff --git a/packages/plugin-tailwindcss/rslib.config.ts b/packages/plugin-tailwindcss/rslib.config.ts deleted file mode 100644 index be1319bcd0..0000000000 --- a/packages/plugin-tailwindcss/rslib.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; - -export default pureEsmPackage; diff --git a/packages/plugin-tailwindcss/rstack.config.ts b/packages/plugin-tailwindcss/rstack.config.ts index edb46b2166..28546f1229 100644 --- a/packages/plugin-tailwindcss/rstack.config.ts +++ b/packages/plugin-tailwindcss/rstack.config.ts @@ -1,7 +1,15 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/packages/plugin-vue/package.json b/packages/plugin-vue/package.json index d86560f965..7dee46bc40 100644 --- a/packages/plugin-vue/package.json +++ b/packages/plugin-vue/package.json @@ -28,8 +28,8 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "rslib", - "dev": "rslib -w", + "build": "rs lib", + "dev": "rs lib -w", "test": "rs test" }, "dependencies": { @@ -37,7 +37,6 @@ }, "devDependencies": { "@rsbuild/core": "workspace:*", - "@rslib/core": "catalog:", "@scripts/test-helper": "workspace:*", "@types/node": "catalog:", "typescript": "catalog:", diff --git a/packages/plugin-vue/rslib.config.ts b/packages/plugin-vue/rslib.config.ts deleted file mode 100644 index be1319bcd0..0000000000 --- a/packages/plugin-vue/rslib.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { pureEsmPackage } from '@scripts/config/rslib.config.ts'; - -export default pureEsmPackage; diff --git a/packages/plugin-vue/rstack.config.ts b/packages/plugin-vue/rstack.config.ts index edb46b2166..28546f1229 100644 --- a/packages/plugin-vue/rstack.config.ts +++ b/packages/plugin-vue/rstack.config.ts @@ -1,7 +1,15 @@ import { define } from 'rstack'; +define.lib(async () => { + const { esmConfig } = await import('@scripts/config/lib'); + + return { + lib: [esmConfig], + }; +}); + define.test(async () => { - const { baseConfig } = await import('@scripts/config/rstest.config.ts'); + const { baseConfig } = await import('@scripts/config/test'); return baseConfig; }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44de7ac25b..21c174244f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -55,9 +55,6 @@ catalogs: '@rsbuild/plugin-type-check': specifier: ^1.5.0 version: 1.5.0 - '@rslib/core': - specifier: 1.0.0-beta.0 - version: 1.0.0-beta.0 '@rspack/core': specifier: ~2.1.5 version: 2.1.5 @@ -91,9 +88,6 @@ catalogs: '@rstackjs/test-utils': specifier: ^0.2.0 version: 0.2.0 - '@rstest/adapter-rslib': - specifier: ^0.11.2 - version: 0.11.2 '@rstest/playwright': specifier: ^0.11.2 version: 0.11.2 @@ -393,9 +387,6 @@ importers: .: devDependencies: - '@rstest/adapter-rslib': - specifier: 'catalog:' - version: 0.11.2(@rslib/core@1.0.0-beta.0)(@rstest/core@0.11.3)(typescript@6.0.3) '@scripts/config': specifier: workspace:* version: link:scripts/config @@ -903,9 +894,6 @@ importers: '@jridgewell/trace-mapping': specifier: 'catalog:' version: 0.3.31 - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@rstackjs/load-config': specifier: 'catalog:' version: 0.1.2(jiti@2.7.0) @@ -1054,9 +1042,6 @@ importers: '@rsbuild/plugin-vue': specifier: workspace:* version: link:../plugin-vue - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@types/node': specifier: 'catalog:' version: 24.13.3 @@ -1091,9 +1076,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1122,9 +1104,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1156,9 +1135,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@types/node': specifier: 'catalog:' version: 24.13.3 @@ -1184,9 +1160,6 @@ importers: '@rsbuild/core-v1': specifier: 'catalog:' version: '@rsbuild/core@1.7.5' - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1218,9 +1191,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1258,9 +1228,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1283,9 +1250,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1326,9 +1290,6 @@ importers: '@rsbuild/core-v1': specifier: 'catalog:' version: '@rsbuild/core@1.7.5' - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1351,9 +1312,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1373,9 +1331,6 @@ importers: '@rsbuild/core': specifier: workspace:* version: link:../core - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@scripts/test-helper': specifier: workspace:* version: link:../../scripts/test-helper @@ -1391,9 +1346,6 @@ importers: scripts/config: devDependencies: - '@rslib/core': - specifier: 'catalog:' - version: 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) '@types/node': specifier: 'catalog:' version: 24.13.3 @@ -2799,16 +2751,6 @@ packages: '@rstackjs/test-utils@0.2.0': resolution: {integrity: sha512-P+LOo1WE3xYeGkHmEthyq2cIpN69k4LhiB/4UBSceD+nW9hDlhWv8MC0LTLWokZXccWl4ntcfOBjQFllkcBlPA==} - '@rstest/adapter-rslib@0.11.2': - resolution: {integrity: sha512-S3IIkVWZNdzFIOnRHUzED9eTtjBUab5RPxYehf10c7QQL15xpDWtb6Ipr/tSfNbiiVawvazmUoI2dR3QT+k2AA==} - peerDependencies: - '@rslib/core': '>=0.18.6' - '@rstest/core': ^0.11.2 - typescript: ^5.0.0 || ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - typescript: - optional: true - '@rstest/core@0.11.3': resolution: {integrity: sha512-TXBvW8snHQntxRRYX71a3vTkhQ9SVvbG1PlqmiyxkSwcVxBXdwghJCpYEHu75L6Ay61eQtsc0R8MIq+Qd3aicA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -6785,13 +6727,6 @@ snapshots: '@rstackjs/test-utils@0.2.0': {} - '@rstest/adapter-rslib@0.11.2(@rslib/core@1.0.0-beta.0)(@rstest/core@0.11.3)(typescript@6.0.3)': - dependencies: - '@rslib/core': 1.0.0-beta.0(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)(typescript@6.0.3) - '@rstest/core': 0.11.3(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0) - optionalDependencies: - typescript: 6.0.3 - '@rstest/core@0.11.3(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0)': dependencies: '@rsbuild/core': 2.1.7(@module-federation/runtime-tools@2.8.0)(core-js@3.49.0) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 462c6b1972..ba7e7603d1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -32,7 +32,6 @@ catalog: '@rsbuild/plugin-check-syntax': '^2.0.0' '@rsbuild/plugin-rem': '^1.0.6' '@rsbuild/plugin-type-check': '^1.5.0' - '@rslib/core': '1.0.0-beta.0' '@rspack/core': '~2.1.5' '@rspack/plugin-preact-refresh': '^2.0.1' '@rspack/plugin-react-refresh': '^2.0.2' @@ -44,7 +43,6 @@ catalog: '@rstack-dev/doc-ui': '1.14.5' '@rstackjs/load-config': '^0.1.2' '@rstackjs/test-utils': '^0.2.0' - '@rstest/adapter-rslib': '^0.11.2' '@rstest/playwright': '^0.11.2' '@shikijs/transformers': '^4.3.1' '@svgr/core': '8.1.0' diff --git a/scripts/config/rslib.config.ts b/scripts/config/lib.ts similarity index 74% rename from scripts/config/rslib.config.ts rename to scripts/config/lib.ts index 5f26013901..ac1a1d53fc 100644 --- a/scripts/config/rslib.config.ts +++ b/scripts/config/lib.ts @@ -1,4 +1,4 @@ -import { defineConfig, type LibConfig, type Rsbuild } from '@rslib/core'; +import type { LibConfig, Rsbuild } from 'rstack/lib'; export const nodeMinifyConfig = { jsOptions: { @@ -22,7 +22,3 @@ export const esmConfig: LibConfig = { minify: nodeMinifyConfig, }, }; - -export const pureEsmPackage = defineConfig({ - lib: [esmConfig], -}); diff --git a/scripts/config/package.json b/scripts/config/package.json index b25ff58c98..f018b5f865 100644 --- a/scripts/config/package.json +++ b/scripts/config/package.json @@ -3,8 +3,13 @@ "version": "1.0.0", "private": true, "type": "module", + "exports": { + "./lib": "./lib.ts", + "./test": "./test.ts", + "./tsconfig": "./tsconfig.json", + "./tsconfig-nodenext": "./tsconfig-nodenext.json" + }, "devDependencies": { - "@rslib/core": "catalog:", "@types/node": "catalog:", "path-serializer": "catalog:", "rstack": "catalog:", diff --git a/scripts/config/rstest.config.ts b/scripts/config/test.ts similarity index 100% rename from scripts/config/rstest.config.ts rename to scripts/config/test.ts