@ms-cloudpack/bundler-webpack 0.2.64 → 0.3.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getWebpackConfiguration.d.ts","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAMzD,wBAAgB,uBAAuB,CACrC,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,CA8Jf"}
1
+ {"version":3,"file":"getWebpackConfiguration.d.ts","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAI5E,OAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAMzD,wBAAgB,uBAAuB,CACrC,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,CAuKf"}
@@ -1,4 +1,5 @@
1
1
  import { defaultTargetSyntax, getCssRule, getModuleSearchPaths, getSwcConfig, shouldExternalizePackage, } from '@ms-cloudpack/bundler-utilities';
2
+ import { isExternalPackage } from '@ms-cloudpack/path-utilities';
2
3
  import ResolveTypescriptPlugin from 'resolve-typescript-plugin';
3
4
  import semver from 'semver';
4
5
  import runWebpack from 'webpack';
@@ -10,10 +11,16 @@ export function getWebpackConfiguration(params, context) {
10
11
  const { targetEnvironment } = options;
11
12
  const { unsafeDisableInlineSvg: _, ...bundlerOptions } = options.bundlerOptions || {};
12
13
  const outputScriptExtension = targetEnvironment === 'node' ? 'mjs' : 'js';
14
+ const isExternal = isExternalPackage(options.inputPath);
13
15
  // If targeting node and full SSR isn't enabled, treat it like production mode.
14
16
  const effectiveMode = targetEnvironment === 'node' && !context.config.features?.enableSSR ? 'production' : context.config.mode;
15
17
  const isLibraryMode = effectiveMode === 'library';
16
- const swcConfig = getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap });
18
+ // Only get the SWC config and transform code from internal packages or if there are explicit
19
+ // typescript entries. (This could theoretically miss .jsx files published with a package,
20
+ // but that's unlikely and hasn't been encountered so far.)
21
+ const swcConfig = !isExternal || context.isTypescript
22
+ ? getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap })
23
+ : undefined;
17
24
  const config = {
18
25
  mode: options.minify ? 'production' : 'development',
19
26
  // Webpack (at least older versions) expects entry keys without a leading `./`.
@@ -80,20 +87,22 @@ export function getWebpackConfiguration(params, context) {
80
87
  fullySpecified: false,
81
88
  },
82
89
  },
83
- {
84
- // transform internal jsx files
85
- test: /\.[cm]?jsx$/,
86
- loader: 'swc-loader',
87
- exclude: /(node_modules)/,
88
- options: swcConfig.jsx,
89
- },
90
- {
91
- // transform internal ts files
92
- test: /\.[cm]?tsx?$/,
93
- loader: 'swc-loader',
94
- exclude: /(node_modules)/,
95
- options: swcConfig.tsx,
96
- },
90
+ ...(swcConfig
91
+ ? [
92
+ {
93
+ // transform jsx files
94
+ test: /\.[cm]?jsx$/,
95
+ loader: 'swc-loader',
96
+ options: swcConfig.jsx,
97
+ },
98
+ {
99
+ // transform ts files
100
+ test: /\.[cm]?tsx?$/,
101
+ loader: 'swc-loader',
102
+ options: swcConfig.tsx,
103
+ },
104
+ ]
105
+ : []),
97
106
  getCssRule('sass'),
98
107
  {
99
108
  test: /\.worker\.js$/,
@@ -1 +1 @@
1
- {"version":3,"file":"getWebpackConfiguration.js","sourceRoot":"","sources":["../src/getWebpackConfiguration.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 ResolveTypescriptPlugin from 'resolve-typescript-plugin';\nimport semver from 'semver';\nimport runWebpack, { type Configuration } from 'webpack';\nimport { merge } from 'webpack-merge';\n\n/** Whether `externalsType: 'module-import'` is supported (see below for usage) */\nconst supportsModuleImport = semver.gte(runWebpack.version, '5.94.0');\n\nexport function getWebpackConfiguration(\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\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 const swcConfig = getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap });\n\n const config: Configuration = {\n mode: options.minify ? 'production' : 'development',\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 plugins: [new ResolveTypescriptPlugin()],\n extensions: ['.tsx', '.ts', '.js', '.jsx', '.json'],\n },\n resolveLoader: {\n modules: [\n // Resolve loaders from the package's node_modules\n 'node_modules',\n\n // Cloudpack provided loaders\n ...getModuleSearchPaths(\n ['swc-loader', 'css-loader', 'style-loader', 'sass-loader', 'worker-loader'],\n import.meta.url,\n ),\n ],\n },\n externals:\n // In production/development mode for browser bundles, we don't externalize anything.\n // (For Node bundles, built-ins are always externalized.)\n !isLibraryMode && targetEnvironment === 'browser'\n ? undefined\n : (data, callback) => {\n const { request } = data;\n // ! is a webpack loader prefix.\n if (!request || request.includes('!')) {\n return callback();\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 callback(undefined, supportsModuleImport ? `module-import ${request}` : request);\n }\n\n callback();\n },\n target: [targetEnvironment === 'node' ? 'node18' : 'web', defaultTargetSyntax],\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 {\n // transform internal jsx files\n test: /\\.[cm]?jsx$/,\n loader: 'swc-loader',\n exclude: /(node_modules)/,\n options: swcConfig.jsx,\n },\n {\n // transform internal ts files\n test: /\\.[cm]?tsx?$/,\n loader: 'swc-loader',\n exclude: /(node_modules)/,\n options: swcConfig.tsx,\n },\n getCssRule('sass'),\n {\n test: /\\.worker\\.js$/,\n use: { loader: 'worker-loader' },\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 },\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 usedExports: !isLibraryMode,\n\n chunks: 'all',\n\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":"getWebpackConfiguration.js","sourceRoot":"","sources":["../src/getWebpackConfiguration.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 ResolveTypescriptPlugin from 'resolve-typescript-plugin';\nimport semver from 'semver';\nimport runWebpack, { type Configuration } from 'webpack';\nimport { merge } from 'webpack-merge';\n\n/** Whether `externalsType: 'module-import'` is supported (see below for usage) */\nconst supportsModuleImport = semver.gte(runWebpack.version, '5.94.0');\n\nexport function getWebpackConfiguration(\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 // 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 plugins: [new ResolveTypescriptPlugin()],\n extensions: ['.tsx', '.ts', '.js', '.jsx', '.json'],\n },\n resolveLoader: {\n modules: [\n // Resolve loaders from the package's node_modules\n 'node_modules',\n\n // Cloudpack provided loaders\n ...getModuleSearchPaths(\n ['swc-loader', 'css-loader', 'style-loader', 'sass-loader', 'worker-loader'],\n import.meta.url,\n ),\n ],\n },\n externals:\n // In production/development mode for browser bundles, we don't externalize anything.\n // (For Node bundles, built-ins are always externalized.)\n !isLibraryMode && targetEnvironment === 'browser'\n ? undefined\n : (data, callback) => {\n const { request } = data;\n // ! is a webpack loader prefix.\n if (!request || request.includes('!')) {\n return callback();\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 callback(undefined, supportsModuleImport ? `module-import ${request}` : request);\n }\n\n callback();\n },\n target: [targetEnvironment === 'node' ? 'node18' : 'web', defaultTargetSyntax],\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: 'swc-loader',\n options: swcConfig.jsx,\n },\n {\n // transform ts files\n test: /\\.[cm]?tsx?$/,\n loader: 'swc-loader',\n options: swcConfig.tsx,\n },\n ]\n : []),\n getCssRule('sass'),\n {\n test: /\\.worker\\.js$/,\n use: { loader: 'worker-loader' },\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 },\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 usedExports: !isLibraryMode,\n\n chunks: 'all',\n\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,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/bundler-webpack",
3
- "version": "0.2.64",
3
+ "version": "0.3.1",
4
4
  "description": "A cloudpack plugin for abstracting webpack.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,22 +14,22 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@ms-cloudpack/bundler-capabilities": "^0.2.32",
18
- "@ms-cloudpack/bundler-utilities": "^0.4.3",
19
- "@ms-cloudpack/common-types": "^0.26.2",
20
- "@ms-cloudpack/esm-stub-utilities": "^0.15.5",
17
+ "@ms-cloudpack/bundler-capabilities": "^0.2.34",
18
+ "@ms-cloudpack/bundler-utilities": "^0.5.1",
19
+ "@ms-cloudpack/common-types": "^0.26.4",
20
+ "@ms-cloudpack/esm-stub-utilities": "^0.15.7",
21
21
  "@ms-cloudpack/path-string-parsing": "^1.2.7",
22
- "@ms-cloudpack/path-utilities": "^3.1.12",
22
+ "@ms-cloudpack/path-utilities": "^3.1.14",
23
23
  "@swc/core": "^1.3.0",
24
- "css-loader": "^6.0.0",
24
+ "css-loader": "^7.0.0",
25
25
  "ejs-loader": "^0.5.0",
26
26
  "resolve-typescript-plugin": "^2.0.0",
27
27
  "sass": "^1.0.0",
28
- "sass-loader": "^14.0.0",
28
+ "sass-loader": "^16.0.0",
29
29
  "semver": "^7.6.0",
30
30
  "style-loader": "^4.0.0",
31
31
  "swc-loader": "^0.2.0",
32
- "webpack": "^5.0.0",
32
+ "webpack": "^5.27.0",
33
33
  "webpack-merge": "^6.0.0",
34
34
  "worker-loader": "^3.0.0"
35
35
  },