@ms-cloudpack/bundler-webpack 0.2.63 → 0.3.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWebpackConfiguration.d.ts","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"
|
|
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
|
-
import { defaultTargetSyntax, getModuleSearchPaths, getSwcConfig, shouldExternalizePackage, } from '@ms-cloudpack/bundler-utilities';
|
|
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
|
-
|
|
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 `./`.
|
|
@@ -63,47 +70,7 @@ export function getWebpackConfiguration(params, context) {
|
|
|
63
70
|
target: [targetEnvironment === 'node' ? 'node18' : 'web', defaultTargetSyntax],
|
|
64
71
|
module: {
|
|
65
72
|
rules: [
|
|
66
|
-
|
|
67
|
-
oneOf: [
|
|
68
|
-
// Rule for global CSS files
|
|
69
|
-
{
|
|
70
|
-
test: /\.global\.css$/,
|
|
71
|
-
use: [
|
|
72
|
-
'style-loader',
|
|
73
|
-
{
|
|
74
|
-
loader: 'css-loader',
|
|
75
|
-
options: {
|
|
76
|
-
modules: {
|
|
77
|
-
localIdentName: '[local]', // Use the local name for global CSS
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
// Rule for CSS Modules files
|
|
84
|
-
{
|
|
85
|
-
test: /\.module\.css$/,
|
|
86
|
-
use: [
|
|
87
|
-
'style-loader',
|
|
88
|
-
{
|
|
89
|
-
loader: 'css-loader',
|
|
90
|
-
options: {
|
|
91
|
-
modules: true, // Enable CSS Modules
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
// Rule for regular CSS files
|
|
97
|
-
{
|
|
98
|
-
test: /\.css$/,
|
|
99
|
-
exclude: /\.module\.css$/, // Exclude CSS Modules files
|
|
100
|
-
use: [
|
|
101
|
-
'style-loader',
|
|
102
|
-
'css-loader', // Use css-loader without CSS Modules for regular CSS
|
|
103
|
-
],
|
|
104
|
-
},
|
|
105
|
-
],
|
|
106
|
-
},
|
|
73
|
+
getCssRule('css'),
|
|
107
74
|
{
|
|
108
75
|
test: /\.(json|resjson)$/,
|
|
109
76
|
type: 'json',
|
|
@@ -120,24 +87,23 @@ export function getWebpackConfiguration(params, context) {
|
|
|
120
87
|
fullySpecified: false,
|
|
121
88
|
},
|
|
122
89
|
},
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
},
|
|
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
|
+
: []),
|
|
106
|
+
getCssRule('sass'),
|
|
141
107
|
{
|
|
142
108
|
test: /\.worker\.js$/,
|
|
143
109
|
use: { loader: 'worker-loader' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWebpackConfiguration.js","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defaultTargetSyntax,\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 {\n oneOf: [\n // Rule for global CSS files\n {\n test: /\\.global\\.css$/,\n use: [\n 'style-loader',\n {\n loader: 'css-loader',\n options: {\n modules: {\n localIdentName: '[local]', // Use the local name for global CSS\n },\n },\n },\n ],\n },\n // Rule for CSS Modules files\n {\n test: /\\.module\\.css$/,\n use: [\n 'style-loader',\n {\n loader: 'css-loader',\n options: {\n modules: true, // Enable CSS Modules\n },\n },\n ],\n },\n // Rule for regular CSS files\n {\n test: /\\.css$/,\n exclude: /\\.module\\.css$/, // Exclude CSS Modules files\n use: [\n 'style-loader',\n 'css-loader', // Use css-loader without CSS Modules for regular CSS\n ],\n },\n ],\n },\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 {\n test: /\\.s[ac]ss$/i,\n use: ['style-loader', 'css-loader', 'sass-loader'],\n },\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.
|
|
3
|
+
"version": "0.3.0",
|
|
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.
|
|
18
|
-
"@ms-cloudpack/bundler-utilities": "^0.
|
|
19
|
-
"@ms-cloudpack/common-types": "^0.26.
|
|
20
|
-
"@ms-cloudpack/esm-stub-utilities": "^0.15.
|
|
17
|
+
"@ms-cloudpack/bundler-capabilities": "^0.2.33",
|
|
18
|
+
"@ms-cloudpack/bundler-utilities": "^0.5.0",
|
|
19
|
+
"@ms-cloudpack/common-types": "^0.26.3",
|
|
20
|
+
"@ms-cloudpack/esm-stub-utilities": "^0.15.6",
|
|
21
21
|
"@ms-cloudpack/path-string-parsing": "^1.2.7",
|
|
22
|
-
"@ms-cloudpack/path-utilities": "^3.1.
|
|
22
|
+
"@ms-cloudpack/path-utilities": "^3.1.13",
|
|
23
23
|
"@swc/core": "^1.3.0",
|
|
24
|
-
"css-loader": "^
|
|
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": "^
|
|
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.
|
|
32
|
+
"webpack": "^5.27.0",
|
|
33
33
|
"webpack-merge": "^6.0.0",
|
|
34
34
|
"worker-loader": "^3.0.0"
|
|
35
35
|
},
|