@ms-cloudpack/bundler-rspack 0.3.8 → 0.3.10

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/README.md CHANGED
@@ -1,23 +1,3 @@
1
1
  # @ms-cloudpack/bundler-rspack
2
2
 
3
- Provides a Cloudpack bundler abstraction around the Rspack bundler.
4
-
5
- ## Usage
6
-
7
- ### `async function bundlePackage(options)`
8
-
9
- ```tsx
10
- import { bundlePackage } from '@ms-cloudpack/bundler';
11
-
12
- async function start() {
13
- const result = await bundlePackage({
14
- packagePath: process.cwd(),
15
- outputPath: path.join(process.cwd(), 'dist'),
16
- outputType: 'library',
17
- });
18
-
19
- console.log(result);
20
- }
21
-
22
- start();
23
- ```
3
+ Provides a Cloudpack bundler abstraction around the [Rspack](https://rspack.rs/) bundler.
@@ -1 +1 @@
1
- {"version":3,"file":"getRspackConfiguration.d.ts","sourceRoot":"","sources":["../src/getRspackConfiguration.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAA+C,MAAM,cAAc,CAAC;AAK/F,wBAAgB,sBAAsB,CACpC,MAAM,EAAE;IACN,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAC3C,OAAO,EAAE,aAAa,GACrB,aAAa,CAqLf"}
1
+ {"version":3,"file":"getRspackConfiguration.d.ts","sourceRoot":"","sources":["../src/getRspackConfiguration.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAA+C,MAAM,cAAc,CAAC;AAK/F,wBAAgB,sBAAsB,CACpC,MAAM,EAAE;IACN,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAC3C,OAAO,EAAE,aAAa,GACrB,aAAa,CAoLf"}
@@ -12,10 +12,9 @@ export function getRspackConfiguration(params, context) {
12
12
  // If targeting node and full SSR isn't enabled, treat it like production mode.
13
13
  const effectiveMode = targetEnvironment === 'node' && !context.config.features?.enableSSR ? 'production' : context.config.mode;
14
14
  const isLibraryMode = effectiveMode === 'library';
15
- // Only get the SWC config and transform code from internal packages or if there are explicit
16
- // typescript entries. (This could theoretically miss .jsx files published with a package,
17
- // but that's unlikely and hasn't been encountered so far.)
18
- const swcConfig = !isExternal || context.isTypescript
15
+ // Only get the SWC config and transform code from internal packages, or if there are explicit
16
+ // typescript or jsx entries
17
+ const swcConfig = !isExternal || context.requiresTranspile
19
18
  ? getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap })
20
19
  : undefined;
21
20
  const config = {
@@ -1 +1 @@
1
- {"version":3,"file":"getRspackConfiguration.js","sourceRoot":"","sources":["../src/getRspackConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defaultTargetSyntax,\n getCssRule,\n getModuleSearchPaths,\n getSwcConfig,\n shouldExternalizePackage,\n} from '@ms-cloudpack/bundler-utilities';\nimport type { BundleContext, BundleOptions } from '@ms-cloudpack/common-types';\nimport type { WriteESMStubsResult } from '@ms-cloudpack/esm-stub-utilities';\nimport { isExternalPackage } from '@ms-cloudpack/path-utilities';\nimport type { Configuration, ExternalItemFunctionData, ExternalItemValue } from '@rspack/core';\nimport rspack from '@rspack/core';\nimport semver from 'semver';\nimport { merge } from 'webpack-merge';\n\nexport function getRspackConfiguration(\n params: {\n options: Omit<BundleOptions, 'entries' | 'outputPath'>;\n outputPath: string;\n } & Pick<WriteESMStubsResult, 'newEntries'>,\n context: BundleContext,\n): Configuration {\n const { options, outputPath, newEntries } = params;\n const { targetEnvironment } = options;\n const { unsafeDisableInlineSvg: _, ...bundlerOptions } = options.bundlerOptions || {};\n const outputScriptExtension = targetEnvironment === 'node' ? 'mjs' : 'js';\n const isExternal = isExternalPackage(options.inputPath);\n\n // If targeting node and full SSR isn't enabled, treat it like production mode.\n const effectiveMode =\n targetEnvironment === 'node' && !context.config.features?.enableSSR ? 'production' : context.config.mode;\n const isLibraryMode = effectiveMode === 'library';\n\n // Only get the SWC config and transform code from internal packages or if there are explicit\n // typescript entries. (This could theoretically miss .jsx files published with a package,\n // but that's unlikely and hasn't been encountered so far.)\n const swcConfig =\n !isExternal || context.isTypescript\n ? getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap })\n : undefined;\n\n const config: Configuration = {\n mode: options.minify ? 'production' : 'development',\n // For Rspack, it looks like this following is still needed as unit tests fail without removing the './'.\n // Webpack (at least older versions) expects entry keys without a leading `./`.\n // (The leading `./` seems to be okay with the latest version, but in older versions, it appears\n // to cause the runtime chunk runtime.js to be generated with an incorrect relative path?)\n entry: Object.fromEntries(Object.entries(newEntries).map(([key, value]) => [key.replace(/^\\.\\//, ''), value])),\n context: options.inputPath,\n resolve: {\n extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'],\n extensionAlias: {\n '.js': ['.ts', '.js', '.tsx', '.jsx'],\n '.mjs': ['.mts', '.mjs'],\n },\n },\n resolveLoader: {\n modules: [\n // Resolve loaders from the package's node_modules\n 'node_modules',\n\n // Cloudpack provided loaders\n ...getModuleSearchPaths(['css-loader', 'style-loader', 'sass-loader'], import.meta.url),\n ],\n },\n externals:\n // In production mode for browser bundles, we don't externalize anything.\n // (For Node bundles, built-ins are always externalized with enableSSR feature.)\n !isLibraryMode && targetEnvironment === 'browser'\n ? [] // These types can't be inferred due to use of zod types (which may be slightly incorrect too,\n : // since they don't allow returning undefined from the async version).\n // Issue: https://github.com/web-infra-dev/rspack/issues/7979\n // There's discussion here of moving away from zod types: https://github.com/web-infra-dev/rspack/issues/4241\n // eslint-disable-next-line @typescript-eslint/require-await -- API signature uses a promise\n async (data: ExternalItemFunctionData): Promise<ExternalItemValue | undefined> => {\n const { request } = data;\n // ! is a webpack loader prefix.\n if (!request || request.includes('!')) {\n return;\n }\n\n if (\n shouldExternalizePackage({\n inputPath: options.inputPath,\n id: request,\n parent: data.context,\n inlined: options.inlined,\n external: options.external,\n shouldInlineNodeBuiltins: false,\n targetEnvironment,\n mode: effectiveMode,\n })\n ) {\n // Manually force externals to use `externalsType: 'module-import'` to ensure that\n // async import() statements are preserved (otherwise they'll be hoisted).\n return `module-import ${request}`;\n }\n },\n target: [targetEnvironment === 'node' ? 'node18' : 'web', defaultTargetSyntax],\n //plugins: [new rspack.CssExtractRspackPlugin({})],\n module: {\n rules: [\n getCssRule('css'),\n {\n test: /\\.(json|resjson)$/,\n type: 'json',\n sideEffects: false,\n },\n {\n test: /\\.ejs$/,\n loader: 'ejs-loader',\n options: {\n variable: 'data',\n esModule: true,\n },\n resolve: {\n fullySpecified: false,\n },\n },\n ...(swcConfig\n ? [\n {\n // transform jsx files\n test: /\\.[cm]?jsx$/,\n loader: 'builtin:swc-loader',\n options: swcConfig.jsx,\n type: 'javascript/auto',\n },\n {\n // transform ts files\n test: /\\.[cm]?tsx?$/,\n loader: 'builtin:swc-loader',\n options: swcConfig.tsx,\n type: 'javascript/auto',\n },\n ]\n : []),\n getCssRule('sass'),\n {\n test: /\\.worker\\.js$/,\n use: { loader: 'worker-rspack-loader' },\n },\n {\n test: /\\.wasm$/i,\n type: 'asset/resource',\n },\n {\n test: /\\.glsl$/,\n type: 'asset/source',\n },\n ],\n },\n output: {\n library: {\n type: 'module',\n },\n chunkFormat: 'module',\n chunkLoading: 'import',\n path: outputPath,\n module: true,\n filename: `[name].${outputScriptExtension}`,\n chunkFilename: `[id].chunk.${outputScriptExtension}`,\n },\n experiments: {\n outputModule: true,\n css: false,\n },\n devtool: options.sourcemap ? (isLibraryMode ? 'cheap-module-source-map' : 'source-map') : false,\n optimization: {\n runtimeChunk: 'single',\n minimize: options.minify,\n mangleExports: false,\n splitChunks: {\n // Prevents exposing path info when creating names for parts splitted by maxSize.\n hidePathInfo: true,\n\n // Figure out which exports are used by modules to mangle export names, omit unused\n // exports and generate more efficient code.\n // This option was added in 1.0.0-beta.4\n ...(semver.gte(rspack.rspackVersion, '1.0.0-beta.4') && { usedExports: !isLibraryMode }),\n\n chunks: 'all',\n\n //name: '[id].chunk', //TODO: is this needed?\n // webpack version:\n // filename: `[id].chunk.${outputScriptExtension}`,\n\n // Production chunks should be at least 1000 bytes to prevent large numbers of file requests\n minSize: isLibraryMode ? 0 : 1000,\n\n cacheGroups: {\n defaultVendors: false,\n },\n },\n },\n };\n\n if (Object.keys(bundlerOptions).length) {\n return merge(config, bundlerOptions);\n }\n\n return config;\n}\n"]}
1
+ {"version":3,"file":"getRspackConfiguration.js","sourceRoot":"","sources":["../src/getRspackConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defaultTargetSyntax,\n getCssRule,\n getModuleSearchPaths,\n getSwcConfig,\n shouldExternalizePackage,\n} from '@ms-cloudpack/bundler-utilities';\nimport type { BundleContext, BundleOptions } from '@ms-cloudpack/common-types';\nimport type { WriteESMStubsResult } from '@ms-cloudpack/esm-stub-utilities';\nimport { isExternalPackage } from '@ms-cloudpack/path-utilities';\nimport type { Configuration, ExternalItemFunctionData, ExternalItemValue } from '@rspack/core';\nimport rspack from '@rspack/core';\nimport semver from 'semver';\nimport { merge } from 'webpack-merge';\n\nexport function getRspackConfiguration(\n params: {\n options: Omit<BundleOptions, 'entries' | 'outputPath'>;\n outputPath: string;\n } & Pick<WriteESMStubsResult, 'newEntries'>,\n context: BundleContext,\n): Configuration {\n const { options, outputPath, newEntries } = params;\n const { targetEnvironment } = options;\n const { unsafeDisableInlineSvg: _, ...bundlerOptions } = options.bundlerOptions || {};\n const outputScriptExtension = targetEnvironment === 'node' ? 'mjs' : 'js';\n const isExternal = isExternalPackage(options.inputPath);\n\n // If targeting node and full SSR isn't enabled, treat it like production mode.\n const effectiveMode =\n targetEnvironment === 'node' && !context.config.features?.enableSSR ? 'production' : context.config.mode;\n const isLibraryMode = effectiveMode === 'library';\n\n // Only get the SWC config and transform code from internal packages, or if there are explicit\n // typescript or jsx entries\n const swcConfig =\n !isExternal || context.requiresTranspile\n ? getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap })\n : undefined;\n\n const config: Configuration = {\n mode: options.minify ? 'production' : 'development',\n // For Rspack, it looks like this following is still needed as unit tests fail without removing the './'.\n // Webpack (at least older versions) expects entry keys without a leading `./`.\n // (The leading `./` seems to be okay with the latest version, but in older versions, it appears\n // to cause the runtime chunk runtime.js to be generated with an incorrect relative path?)\n entry: Object.fromEntries(Object.entries(newEntries).map(([key, value]) => [key.replace(/^\\.\\//, ''), value])),\n context: options.inputPath,\n resolve: {\n extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'],\n extensionAlias: {\n '.js': ['.ts', '.js', '.tsx', '.jsx'],\n '.mjs': ['.mts', '.mjs'],\n },\n },\n resolveLoader: {\n modules: [\n // Resolve loaders from the package's node_modules\n 'node_modules',\n\n // Cloudpack provided loaders\n ...getModuleSearchPaths(['css-loader', 'style-loader', 'sass-loader'], import.meta.url),\n ],\n },\n externals:\n // In production mode for browser bundles, we don't externalize anything.\n // (For Node bundles, built-ins are always externalized with enableSSR feature.)\n !isLibraryMode && targetEnvironment === 'browser'\n ? [] // These types can't be inferred due to use of zod types (which may be slightly incorrect too,\n : // since they don't allow returning undefined from the async version).\n // Issue: https://github.com/web-infra-dev/rspack/issues/7979\n // There's discussion here of moving away from zod types: https://github.com/web-infra-dev/rspack/issues/4241\n // eslint-disable-next-line @typescript-eslint/require-await -- API signature uses a promise\n async (data: ExternalItemFunctionData): Promise<ExternalItemValue | undefined> => {\n const { request } = data;\n // ! is a webpack loader prefix.\n if (!request || request.includes('!')) {\n return;\n }\n\n if (\n shouldExternalizePackage({\n inputPath: options.inputPath,\n id: request,\n parent: data.context,\n inlined: options.inlined,\n external: options.external,\n shouldInlineNodeBuiltins: false,\n targetEnvironment,\n mode: effectiveMode,\n })\n ) {\n // Manually force externals to use `externalsType: 'module-import'` to ensure that\n // async import() statements are preserved (otherwise they'll be hoisted).\n return `module-import ${request}`;\n }\n },\n target: [targetEnvironment === 'node' ? 'node18' : 'web', defaultTargetSyntax],\n //plugins: [new rspack.CssExtractRspackPlugin({})],\n module: {\n rules: [\n getCssRule('css'),\n {\n test: /\\.(json|resjson)$/,\n type: 'json',\n sideEffects: false,\n },\n {\n test: /\\.ejs$/,\n loader: 'ejs-loader',\n options: {\n variable: 'data',\n esModule: true,\n },\n resolve: {\n fullySpecified: false,\n },\n },\n ...(swcConfig\n ? [\n {\n // transform jsx files\n test: /\\.[cm]?jsx$/,\n loader: 'builtin:swc-loader',\n options: swcConfig.jsx,\n type: 'javascript/auto',\n },\n {\n // transform ts files\n test: /\\.[cm]?tsx?$/,\n loader: 'builtin:swc-loader',\n options: swcConfig.tsx,\n type: 'javascript/auto',\n },\n ]\n : []),\n getCssRule('sass'),\n {\n test: /\\.worker\\.js$/,\n use: { loader: 'worker-rspack-loader' },\n },\n {\n test: /\\.wasm$/i,\n type: 'asset/resource',\n },\n {\n test: /\\.glsl$/,\n type: 'asset/source',\n },\n ],\n },\n output: {\n library: {\n type: 'module',\n },\n chunkFormat: 'module',\n chunkLoading: 'import',\n path: outputPath,\n module: true,\n filename: `[name].${outputScriptExtension}`,\n chunkFilename: `[id].chunk.${outputScriptExtension}`,\n },\n experiments: {\n outputModule: true,\n css: false,\n },\n devtool: options.sourcemap ? (isLibraryMode ? 'cheap-module-source-map' : 'source-map') : false,\n optimization: {\n runtimeChunk: 'single',\n minimize: options.minify,\n mangleExports: false,\n splitChunks: {\n // Prevents exposing path info when creating names for parts splitted by maxSize.\n hidePathInfo: true,\n\n // Figure out which exports are used by modules to mangle export names, omit unused\n // exports and generate more efficient code.\n // This option was added in 1.0.0-beta.4\n ...(semver.gte(rspack.rspackVersion, '1.0.0-beta.4') && { usedExports: !isLibraryMode }),\n\n chunks: 'all',\n\n //name: '[id].chunk', //TODO: is this needed?\n // webpack version:\n // filename: `[id].chunk.${outputScriptExtension}`,\n\n // Production chunks should be at least 1000 bytes to prevent large numbers of file requests\n minSize: isLibraryMode ? 0 : 1000,\n\n cacheGroups: {\n defaultVendors: false,\n },\n },\n },\n };\n\n if (Object.keys(bundlerOptions).length) {\n return merge(config, bundlerOptions);\n }\n\n return config;\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/bundler-rspack",
3
- "version": "0.3.8",
4
- "description": "A cloudpack plugin for abstracting rspack.",
3
+ "version": "0.3.10",
4
+ "description": "Cloudpack's wrapper for the Rspack bundler",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "types": "./lib/index.d.ts",
@@ -14,12 +14,12 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@ms-cloudpack/bundler-capabilities": "^0.3.1",
18
- "@ms-cloudpack/bundler-utilities": "^0.5.8",
19
- "@ms-cloudpack/common-types": "^0.27.6",
20
- "@ms-cloudpack/esm-stub-utilities": "^0.15.14",
17
+ "@ms-cloudpack/bundler-capabilities": "^0.3.3",
18
+ "@ms-cloudpack/bundler-utilities": "^0.5.10",
19
+ "@ms-cloudpack/common-types": "^0.28.0",
20
+ "@ms-cloudpack/esm-stub-utilities": "^0.15.16",
21
21
  "@ms-cloudpack/path-string-parsing": "^1.2.7",
22
- "@ms-cloudpack/path-utilities": "^3.1.21",
22
+ "@ms-cloudpack/path-utilities": "^3.1.23",
23
23
  "@rspack/core": "^1.1.8 || ^1.1.8-beta.0",
24
24
  "@swc/core": "^1.3.0",
25
25
  "css-loader": "^7.0.0",