@workleap/webpack-configs 1.5.2 → 1.5.3
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/CHANGELOG.md +6 -0
- package/dist/build.d.ts +18 -19
- package/dist/build.js +219 -3
- package/dist/build.js.map +1 -0
- package/dist/dev.d.ts +16 -17
- package/dist/dev.js +208 -3
- package/dist/dev.js.map +1 -0
- package/dist/index.d.ts +6 -12
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -0
- package/dist/transformers/applyTransformers.d.ts +4 -7
- package/dist/transformers/applyTransformers.js +20 -1
- package/dist/transformers/applyTransformers.js.map +1 -0
- package/dist/transformers/moduleRules.d.ts +15 -17
- package/dist/transformers/moduleRules.js +166 -1
- package/dist/transformers/moduleRules.js.map +1 -0
- package/dist/transformers/plugins.d.ts +11 -14
- package/dist/transformers/plugins.js +69 -1
- package/dist/transformers/plugins.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +4 -6
- package/dist/utils.js +22 -1
- package/dist/utils.js.map +1 -0
- package/package.json +24 -22
- package/src/build.ts +240 -0
- package/src/dev.ts +233 -0
- package/src/index.ts +7 -0
- package/src/transformers/applyTransformers.ts +28 -0
- package/src/transformers/moduleRules.ts +229 -0
- package/src/transformers/plugins.ts +102 -0
- package/src/types.ts +1 -0
- package/src/utils.ts +19 -0
- package/dist/chunk-2YARCRX5.js +0 -15
- package/dist/chunk-34O5ZLZ6.js +0 -154
- package/dist/chunk-5ACA7GOB.js +0 -17
- package/dist/chunk-6F4PWJZI.js +0 -1
- package/dist/chunk-CW54GSNS.js +0 -197
- package/dist/chunk-JPURRV2F.js +0 -71
- package/dist/chunk-JU2EHEXW.js +0 -186
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @workleap/webpack-configs
|
|
2
2
|
|
|
3
|
+
## 1.5.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#230](https://github.com/gsoft-inc/wl-web-configs/pull/230) [`0a4279c`](https://github.com/gsoft-inc/wl-web-configs/commit/0a4279c40b7c2ea76c7e1884a8e2fd744ca9b7c1) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Packages now includes the source codes and sourcemap.
|
|
8
|
+
|
|
3
9
|
## 1.5.2
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/dist/build.d.ts
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import { Config } from
|
|
2
|
-
import { Config as
|
|
3
|
-
import HtmlWebpackPlugin from
|
|
4
|
-
import MiniCssExtractPlugin from
|
|
5
|
-
import webpack
|
|
6
|
-
import { WebpackConfigTransformer } from
|
|
7
|
-
|
|
8
|
-
declare function defineBuildHtmlWebpackPluginConfig(options?: HtmlWebpackPlugin.Options): HtmlWebpackPlugin.Options;
|
|
1
|
+
import type { Config as SvgrOptions } from "@svgr/core";
|
|
2
|
+
import type { Config as SwcConfig } from "@swc/core";
|
|
3
|
+
import HtmlWebpackPlugin from "html-webpack-plugin";
|
|
4
|
+
import MiniCssExtractPlugin from "mini-css-extract-plugin";
|
|
5
|
+
import webpack from "webpack";
|
|
6
|
+
import { type WebpackConfigTransformer } from "./transformers/applyTransformers.ts";
|
|
7
|
+
import type { WebpackConfig } from "./types.ts";
|
|
8
|
+
export declare function defineBuildHtmlWebpackPluginConfig(options?: HtmlWebpackPlugin.Options): HtmlWebpackPlugin.Options;
|
|
9
9
|
type MiniCssExtractPluginOptions = NonNullable<ConstructorParameters<typeof MiniCssExtractPlugin>[number]>;
|
|
10
|
-
declare function defineMiniCssExtractPluginConfig(options?: MiniCssExtractPluginOptions): MiniCssExtractPluginOptions;
|
|
11
|
-
type WebpackOptimization = NonNullable<
|
|
12
|
-
type OptimizeOption = boolean | "readable";
|
|
13
|
-
declare function getOptimizationConfig(optimize: OptimizeOption): WebpackOptimization;
|
|
14
|
-
interface DefineBuildConfigOptions {
|
|
10
|
+
export declare function defineMiniCssExtractPluginConfig(options?: MiniCssExtractPluginOptions): MiniCssExtractPluginOptions;
|
|
11
|
+
export type WebpackOptimization = NonNullable<WebpackConfig["optimization"]>;
|
|
12
|
+
export type OptimizeOption = boolean | "readable";
|
|
13
|
+
export declare function getOptimizationConfig(optimize: OptimizeOption): WebpackOptimization;
|
|
14
|
+
export interface DefineBuildConfigOptions {
|
|
15
15
|
entry?: string;
|
|
16
16
|
outputPath?: string;
|
|
17
17
|
publicPath?: `${string}/` | "auto";
|
|
18
|
-
moduleRules?: NonNullable<
|
|
19
|
-
plugins?:
|
|
18
|
+
moduleRules?: NonNullable<WebpackConfig["module"]>["rules"];
|
|
19
|
+
plugins?: WebpackConfig["plugins"];
|
|
20
20
|
htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;
|
|
21
21
|
miniCssExtractPluginOptions?: MiniCssExtractPluginOptions;
|
|
22
22
|
optimize?: OptimizeOption;
|
|
23
23
|
cssModules?: boolean;
|
|
24
|
-
svgr?: boolean |
|
|
24
|
+
svgr?: boolean | SvgrOptions;
|
|
25
25
|
environmentVariables?: Record<string, unknown>;
|
|
26
26
|
transformers?: WebpackConfigTransformer[];
|
|
27
27
|
verbose?: boolean;
|
|
28
28
|
}
|
|
29
|
-
declare function defineBuildConfig(swcConfig:
|
|
30
|
-
|
|
31
|
-
export { type DefineBuildConfigOptions, type OptimizeOption, type WebpackOptimization, defineBuildConfig, defineBuildHtmlWebpackPluginConfig, defineMiniCssExtractPluginConfig, getOptimizationConfig };
|
|
29
|
+
export declare function defineBuildConfig(swcConfig: SwcConfig, options?: DefineBuildConfigOptions): webpack.Configuration;
|
|
30
|
+
export {};
|
package/dist/build.js
CHANGED
|
@@ -1,3 +1,219 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__ from "html-webpack-plugin";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_mini_css_extract_plugin_0b345af5__ from "mini-css-extract-plugin";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__ from "node:module";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__ from "terser-webpack-plugin";
|
|
6
|
+
import * as __WEBPACK_EXTERNAL_MODULE_webpack__ from "webpack";
|
|
7
|
+
import * as __WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__ from "./transformers/applyTransformers.js";
|
|
8
|
+
import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
|
|
9
|
+
|
|
10
|
+
;// CONCATENATED MODULE: external "html-webpack-plugin"
|
|
11
|
+
|
|
12
|
+
;// CONCATENATED MODULE: external "mini-css-extract-plugin"
|
|
13
|
+
|
|
14
|
+
;// CONCATENATED MODULE: external "node:module"
|
|
15
|
+
|
|
16
|
+
;// CONCATENATED MODULE: external "node:path"
|
|
17
|
+
|
|
18
|
+
;// CONCATENATED MODULE: external "terser-webpack-plugin"
|
|
19
|
+
|
|
20
|
+
;// CONCATENATED MODULE: external "webpack"
|
|
21
|
+
|
|
22
|
+
;// CONCATENATED MODULE: external "./transformers/applyTransformers.js"
|
|
23
|
+
|
|
24
|
+
;// CONCATENATED MODULE: external "./utils.js"
|
|
25
|
+
|
|
26
|
+
;// CONCATENATED MODULE: ./src/build.ts?__rslib_entry__
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
// Aliases
|
|
36
|
+
const DefinePlugin = __WEBPACK_EXTERNAL_MODULE_webpack__["default"].DefinePlugin;
|
|
37
|
+
// Using node:module.createRequire until
|
|
38
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve
|
|
39
|
+
// is available
|
|
40
|
+
const build_rslib_entry_require = (0,__WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__.createRequire)(import.meta.url);
|
|
41
|
+
function defineBuildHtmlWebpackPluginConfig(options = {}) {
|
|
42
|
+
const { template = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./public/index.html"), ...rest } = options;
|
|
43
|
+
return {
|
|
44
|
+
...rest,
|
|
45
|
+
template
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function defineMiniCssExtractPluginConfig(options = {}) {
|
|
49
|
+
const { filename = "[name].css", ...rest } = options;
|
|
50
|
+
return {
|
|
51
|
+
...rest,
|
|
52
|
+
filename
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function getOptimizationConfig(optimize) {
|
|
56
|
+
if (optimize === "readable") {
|
|
57
|
+
return {
|
|
58
|
+
minimize: true,
|
|
59
|
+
minimizer: [
|
|
60
|
+
new __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"]({
|
|
61
|
+
minify: __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"].swcMinify,
|
|
62
|
+
terserOptions: {
|
|
63
|
+
toplevel: true,
|
|
64
|
+
mangle: false,
|
|
65
|
+
keep_classnames: true,
|
|
66
|
+
keep_fnames: true,
|
|
67
|
+
compress: {
|
|
68
|
+
toplevel: true,
|
|
69
|
+
hoist_props: false
|
|
70
|
+
},
|
|
71
|
+
output: {
|
|
72
|
+
comments: true
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
],
|
|
77
|
+
chunkIds: "named",
|
|
78
|
+
moduleIds: "named",
|
|
79
|
+
mangleExports: false,
|
|
80
|
+
mangleWasmImports: false
|
|
81
|
+
};
|
|
82
|
+
} else if (optimize) {
|
|
83
|
+
return {
|
|
84
|
+
minimize: true,
|
|
85
|
+
minimizer: [
|
|
86
|
+
new __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"]({
|
|
87
|
+
minify: __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"].swcMinify
|
|
88
|
+
})
|
|
89
|
+
]
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Doesn't turnoff everything but is good enough to help with debugging scenarios.
|
|
93
|
+
return {
|
|
94
|
+
minimize: false,
|
|
95
|
+
chunkIds: "named",
|
|
96
|
+
moduleIds: "named",
|
|
97
|
+
concatenateModules: false,
|
|
98
|
+
flagIncludedChunks: false,
|
|
99
|
+
mangleExports: false,
|
|
100
|
+
mangleWasmImports: false,
|
|
101
|
+
removeAvailableModules: false,
|
|
102
|
+
usedExports: false
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function defineBuildConfig(swcConfig, options = {}) {
|
|
106
|
+
const { entry = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./src/index.tsx"), outputPath = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("dist"), // The trailing / is very important, otherwise paths will not be resolved correctly.
|
|
107
|
+
publicPath = "http://localhost:8080/", moduleRules = [], plugins = [], htmlWebpackPlugin = defineBuildHtmlWebpackPluginConfig(), miniCssExtractPluginOptions = defineMiniCssExtractPluginConfig(), optimize = true, cssModules = false, svgr = true, // Using an empty object literal as the default value to ensure
|
|
108
|
+
// "process.env" is always available.
|
|
109
|
+
environmentVariables = {}, transformers = [], verbose = false } = options;
|
|
110
|
+
const config = {
|
|
111
|
+
mode: "production",
|
|
112
|
+
target: "web",
|
|
113
|
+
entry,
|
|
114
|
+
output: {
|
|
115
|
+
path: outputPath,
|
|
116
|
+
filename: "[name].js",
|
|
117
|
+
publicPath,
|
|
118
|
+
clean: true,
|
|
119
|
+
assetModuleFilename: "[name][ext][query]"
|
|
120
|
+
},
|
|
121
|
+
optimization: getOptimizationConfig(optimize),
|
|
122
|
+
infrastructureLogging: verbose ? {
|
|
123
|
+
appendOnly: true,
|
|
124
|
+
level: "verbose",
|
|
125
|
+
debug: /PackFileCache/
|
|
126
|
+
} : undefined,
|
|
127
|
+
module: {
|
|
128
|
+
rules: [
|
|
129
|
+
{
|
|
130
|
+
test: /\.(js|jsx|ts|tsx)$/i,
|
|
131
|
+
exclude: /node_modules/,
|
|
132
|
+
loader: build_rslib_entry_require.resolve("swc-loader"),
|
|
133
|
+
options: swcConfig
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
// https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten
|
|
137
|
+
test: /\.js$/i,
|
|
138
|
+
include: /node_modules/,
|
|
139
|
+
resolve: {
|
|
140
|
+
fullySpecified: false
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
test: /\.css$/i,
|
|
145
|
+
use: [
|
|
146
|
+
{
|
|
147
|
+
loader: __WEBPACK_EXTERNAL_MODULE_mini_css_extract_plugin_0b345af5__["default"].loader
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
loader: build_rslib_entry_require.resolve("css-loader"),
|
|
151
|
+
options: cssModules ? {
|
|
152
|
+
// Must match the number of loaders applied before this one.
|
|
153
|
+
importLoaders: 1,
|
|
154
|
+
modules: true
|
|
155
|
+
} : undefined
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
loader: build_rslib_entry_require.resolve("postcss-loader")
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
...svgr ? [
|
|
163
|
+
{
|
|
164
|
+
test: /\.svg$/i,
|
|
165
|
+
loader: build_rslib_entry_require.resolve("@svgr/webpack"),
|
|
166
|
+
options: (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(svgr) ? svgr : undefined
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
test: /\.(png|jpe?g|gif)$/i,
|
|
170
|
+
type: "asset/resource"
|
|
171
|
+
}
|
|
172
|
+
] : [
|
|
173
|
+
{
|
|
174
|
+
test: /\.(png|jpe?g|gif|svg)$/i,
|
|
175
|
+
type: "asset/resource"
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
...moduleRules
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
resolve: {
|
|
182
|
+
extensions: [
|
|
183
|
+
".js",
|
|
184
|
+
".jsx",
|
|
185
|
+
".ts",
|
|
186
|
+
".tsx",
|
|
187
|
+
".css"
|
|
188
|
+
],
|
|
189
|
+
alias: {
|
|
190
|
+
// Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.
|
|
191
|
+
// View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.
|
|
192
|
+
"@swc/helpers": __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].dirname(build_rslib_entry_require.resolve("@swc/helpers/package.json"))
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
plugins: [
|
|
196
|
+
htmlWebpackPlugin && new __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__["default"]((0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(htmlWebpackPlugin) ? htmlWebpackPlugin : defineBuildHtmlWebpackPluginConfig()),
|
|
197
|
+
new __WEBPACK_EXTERNAL_MODULE_mini_css_extract_plugin_0b345af5__["default"](miniCssExtractPluginOptions),
|
|
198
|
+
// Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
|
|
199
|
+
// after replacement and cause an undefined var error because the production var doesn't exist.
|
|
200
|
+
// For more information, view: https://webpack.js.org/plugins/define-plugin.
|
|
201
|
+
new DefinePlugin({
|
|
202
|
+
"process.env": Object.keys(environmentVariables).reduce((acc, key)=>{
|
|
203
|
+
acc[key] = JSON.stringify(environmentVariables[key]);
|
|
204
|
+
return acc;
|
|
205
|
+
}, {})
|
|
206
|
+
}),
|
|
207
|
+
...plugins
|
|
208
|
+
].filter(Boolean)
|
|
209
|
+
};
|
|
210
|
+
const transformedConfig = (0,__WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__.applyTransformers)(config, transformers, {
|
|
211
|
+
environment: "build",
|
|
212
|
+
verbose
|
|
213
|
+
});
|
|
214
|
+
return transformedConfig;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export { defineBuildConfig, defineBuildHtmlWebpackPluginConfig, defineMiniCssExtractPluginConfig, getOptimizationConfig };
|
|
218
|
+
|
|
219
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sources":["webpack://@workleap/webpack-configs/./src/build.ts"],"sourcesContent":["import type { Config as SvgrOptions } from \"@svgr/core\";\nimport type { Config as SwcConfig } from \"@swc/core\";\nimport HtmlWebpackPlugin from \"html-webpack-plugin\";\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport TerserPlugin from \"terser-webpack-plugin\";\nimport webpack from \"webpack\";\nimport { applyTransformers, type WebpackConfigTransformer } from \"./transformers/applyTransformers.ts\";\nimport type { WebpackConfig } from \"./types.ts\";\nimport { isObject } from \"./utils.ts\";\n\n// Aliases\nconst DefinePlugin = webpack.DefinePlugin;\n\n// Using node:module.createRequire until\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve\n// is available\nconst require = createRequire(import.meta.url);\n\nexport function defineBuildHtmlWebpackPluginConfig(options: HtmlWebpackPlugin.Options = {}): HtmlWebpackPlugin.Options {\n const {\n template = path.resolve(\"./public/index.html\"),\n ...rest\n } = options;\n\n return {\n ...rest,\n template\n };\n}\n\ntype MiniCssExtractPluginOptions = NonNullable<ConstructorParameters<typeof MiniCssExtractPlugin>[number]>;\n\nexport function defineMiniCssExtractPluginConfig(options: MiniCssExtractPluginOptions = {}): MiniCssExtractPluginOptions {\n const {\n filename = \"[name].css\",\n ...rest\n } = options;\n\n return {\n ...rest,\n filename\n };\n}\n\nexport type WebpackOptimization = NonNullable<WebpackConfig[\"optimization\"]>;\nexport type OptimizeOption = boolean | \"readable\";\n\nexport function getOptimizationConfig(optimize: OptimizeOption): WebpackOptimization {\n if (optimize === \"readable\") {\n return {\n minimize: true,\n minimizer: [\n new TerserPlugin({\n minify: TerserPlugin.swcMinify,\n terserOptions: {\n toplevel: true,\n mangle: false,\n keep_classnames: true,\n keep_fnames: true,\n compress: {\n toplevel: true,\n hoist_props: false\n },\n output: {\n comments: true\n }\n }\n })\n ],\n chunkIds: \"named\",\n moduleIds: \"named\",\n mangleExports: false,\n mangleWasmImports: false\n };\n } else if (optimize) {\n return {\n minimize: true,\n minimizer: [\n new TerserPlugin({\n minify: TerserPlugin.swcMinify\n })\n ]\n };\n }\n\n // Doesn't turnoff everything but is good enough to help with debugging scenarios.\n return {\n minimize: false,\n chunkIds: \"named\",\n moduleIds: \"named\",\n concatenateModules: false,\n flagIncludedChunks: false,\n mangleExports: false,\n mangleWasmImports: false,\n removeAvailableModules: false,\n usedExports: false\n };\n}\n\nexport interface DefineBuildConfigOptions {\n entry?: string;\n outputPath?: string;\n publicPath?: `${string}/` | \"auto\";\n moduleRules?: NonNullable<WebpackConfig[\"module\"]>[\"rules\"];\n plugins?: WebpackConfig[\"plugins\"];\n htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;\n miniCssExtractPluginOptions?: MiniCssExtractPluginOptions;\n optimize?: OptimizeOption;\n cssModules?: boolean;\n svgr?: boolean | SvgrOptions;\n environmentVariables?: Record<string, unknown>;\n transformers?: WebpackConfigTransformer[];\n verbose?: boolean;\n}\n\nexport function defineBuildConfig(swcConfig: SwcConfig, options: DefineBuildConfigOptions = {}) {\n const {\n entry = path.resolve(\"./src/index.tsx\"),\n outputPath = path.resolve(\"dist\"),\n // The trailing / is very important, otherwise paths will not be resolved correctly.\n publicPath = \"http://localhost:8080/\",\n moduleRules = [],\n plugins = [],\n htmlWebpackPlugin = defineBuildHtmlWebpackPluginConfig(),\n miniCssExtractPluginOptions = defineMiniCssExtractPluginConfig(),\n optimize = true,\n cssModules = false,\n svgr = true,\n // Using an empty object literal as the default value to ensure\n // \"process.env\" is always available.\n environmentVariables = {},\n transformers = [],\n verbose = false\n } = options;\n\n const config: WebpackConfig = {\n mode: \"production\",\n target: \"web\",\n entry,\n output: {\n path: outputPath,\n filename: \"[name].js\",\n publicPath,\n clean: true,\n assetModuleFilename: \"[name][ext][query]\"\n },\n optimization: getOptimizationConfig(optimize),\n infrastructureLogging: verbose ? {\n appendOnly: true,\n level: \"verbose\",\n debug: /PackFileCache/\n } : undefined,\n module: {\n rules: [\n {\n test: /\\.(js|jsx|ts|tsx)$/i,\n exclude: /node_modules/,\n loader: require.resolve(\"swc-loader\"),\n options: swcConfig\n },\n {\n // https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten\n test: /\\.js$/i,\n include: /node_modules/,\n resolve: {\n fullySpecified: false\n }\n },\n {\n test: /\\.css$/i,\n use: [\n { loader: MiniCssExtractPlugin.loader },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssModules\n ? {\n // Must match the number of loaders applied before this one.\n importLoaders: 1,\n modules: true\n }\n : undefined\n },\n { loader: require.resolve(\"postcss-loader\") }\n ]\n },\n ...(svgr\n ? [\n {\n test: /\\.svg$/i,\n loader: require.resolve(\"@svgr/webpack\"),\n options: isObject(svgr) ? svgr : undefined\n },\n {\n test: /\\.(png|jpe?g|gif)$/i,\n type: \"asset/resource\"\n }\n ]\n : [\n {\n test: /\\.(png|jpe?g|gif|svg)$/i,\n type: \"asset/resource\"\n }\n ]),\n ...moduleRules\n ]\n },\n resolve: {\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".css\"],\n alias: {\n // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.\n // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.\n \"@swc/helpers\": path.dirname(require.resolve(\"@swc/helpers/package.json\"))\n }\n },\n plugins: [\n htmlWebpackPlugin && new HtmlWebpackPlugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineBuildHtmlWebpackPluginConfig()),\n new MiniCssExtractPlugin(miniCssExtractPluginOptions),\n // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, \"production\" would become production\n // after replacement and cause an undefined var error because the production var doesn't exist.\n // For more information, view: https://webpack.js.org/plugins/define-plugin.\n new DefinePlugin({\n \"process.env\": Object.keys(environmentVariables).reduce((acc, key) => {\n acc[key] = JSON.stringify(environmentVariables[key]);\n\n return acc;\n }, {} as Record<string, string>)\n }),\n ...plugins\n ].filter(Boolean) as WebpackConfig[\"plugins\"]\n };\n\n const transformedConfig = applyTransformers(config, transformers, {\n environment: \"build\",\n verbose\n });\n\n return transformedConfig;\n}\n"],"names":["HtmlWebpackPlugin","MiniCssExtractPlugin","createRequire","path","TerserPlugin","webpack","applyTransformers","isObject","DefinePlugin","require","defineBuildHtmlWebpackPluginConfig","options","template","rest","defineMiniCssExtractPluginConfig","filename","getOptimizationConfig","optimize","defineBuildConfig","swcConfig","entry","outputPath","publicPath","moduleRules","plugins","htmlWebpackPlugin","miniCssExtractPluginOptions","cssModules","svgr","environmentVariables","transformers","verbose","config","undefined","Object","acc","key","JSON","Boolean","transformedConfig"],"mappings":"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"}
|
package/dist/dev.d.ts
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import { ReactRefreshPluginOptions } from
|
|
2
|
-
import { Config } from
|
|
3
|
-
import { Config as
|
|
4
|
-
import HtmlWebpackPlugin from
|
|
5
|
-
import webpack
|
|
6
|
-
import { ServerOptions } from
|
|
7
|
-
import { WebpackConfigTransformer } from
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
declare function
|
|
11
|
-
|
|
1
|
+
import type { ReactRefreshPluginOptions } from "@pmmmwh/react-refresh-webpack-plugin/types/lib/types.d.ts";
|
|
2
|
+
import type { Config as SvgrOptions } from "@svgr/core";
|
|
3
|
+
import type { Config as SwcConfig } from "@swc/core";
|
|
4
|
+
import HtmlWebpackPlugin from "html-webpack-plugin";
|
|
5
|
+
import webpack from "webpack";
|
|
6
|
+
import type { ServerOptions } from "webpack-dev-server";
|
|
7
|
+
import { type WebpackConfigTransformer } from "./transformers/applyTransformers.ts";
|
|
8
|
+
import "webpack-dev-server";
|
|
9
|
+
import type { WebpackConfig } from "./types.ts";
|
|
10
|
+
export declare function defineDevHtmlWebpackPluginConfig(options?: HtmlWebpackPlugin.Options): HtmlWebpackPlugin.Options;
|
|
11
|
+
export declare function defineFastRefreshPluginConfig(options?: ReactRefreshPluginOptions): ReactRefreshPluginOptions;
|
|
12
|
+
export interface DefineDevConfigOptions {
|
|
12
13
|
entry?: string;
|
|
13
14
|
https?: boolean | ServerOptions | undefined;
|
|
14
15
|
host?: string;
|
|
15
16
|
port?: number;
|
|
16
17
|
publicPath?: `${string}/` | "auto";
|
|
17
18
|
cache?: boolean;
|
|
18
|
-
moduleRules?: NonNullable<
|
|
19
|
-
plugins?:
|
|
19
|
+
moduleRules?: NonNullable<WebpackConfig["module"]>["rules"];
|
|
20
|
+
plugins?: WebpackConfig["plugins"];
|
|
20
21
|
htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;
|
|
21
22
|
fastRefresh?: boolean | ReactRefreshPluginOptions;
|
|
22
23
|
cssModules?: boolean;
|
|
23
24
|
overlay?: false;
|
|
24
|
-
svgr?: boolean |
|
|
25
|
+
svgr?: boolean | SvgrOptions;
|
|
25
26
|
environmentVariables?: Record<string, unknown>;
|
|
26
27
|
transformers?: WebpackConfigTransformer[];
|
|
27
28
|
verbose?: boolean;
|
|
28
29
|
}
|
|
29
|
-
declare function defineDevConfig(swcConfig:
|
|
30
|
-
|
|
31
|
-
export { type DefineDevConfigOptions, defineDevConfig, defineDevHtmlWebpackPluginConfig, defineFastRefreshPluginConfig };
|
|
30
|
+
export declare function defineDevConfig(swcConfig: SwcConfig, options?: DefineDevConfigOptions): webpack.Configuration;
|
package/dist/dev.js
CHANGED
|
@@ -1,3 +1,208 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE__pmmmwh_react_refresh_webpack_plugin_143c1848__ from "@pmmmwh/react-refresh-webpack-plugin";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__ from "html-webpack-plugin";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__ from "node:module";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE_webpack__ from "webpack";
|
|
6
|
+
import * as __WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__ from "./transformers/applyTransformers.js";
|
|
7
|
+
import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
|
|
8
|
+
import * as __WEBPACK_EXTERNAL_MODULE_webpack_dev_server_0dd3124e__ from "webpack-dev-server";
|
|
9
|
+
|
|
10
|
+
;// CONCATENATED MODULE: external "@pmmmwh/react-refresh-webpack-plugin"
|
|
11
|
+
|
|
12
|
+
;// CONCATENATED MODULE: external "html-webpack-plugin"
|
|
13
|
+
|
|
14
|
+
;// CONCATENATED MODULE: external "node:module"
|
|
15
|
+
|
|
16
|
+
;// CONCATENATED MODULE: external "node:path"
|
|
17
|
+
|
|
18
|
+
;// CONCATENATED MODULE: external "webpack"
|
|
19
|
+
|
|
20
|
+
;// CONCATENATED MODULE: external "./transformers/applyTransformers.js"
|
|
21
|
+
|
|
22
|
+
;// CONCATENATED MODULE: external "./utils.js"
|
|
23
|
+
|
|
24
|
+
;// CONCATENATED MODULE: external "webpack-dev-server"
|
|
25
|
+
|
|
26
|
+
;// CONCATENATED MODULE: ./src/dev.ts?__rslib_entry__
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// Add the "devServer" option to WebpackConfig typings.
|
|
35
|
+
|
|
36
|
+
// Aliases
|
|
37
|
+
const DefinePlugin = __WEBPACK_EXTERNAL_MODULE_webpack__["default"].DefinePlugin;
|
|
38
|
+
// Using node:module.createRequire until
|
|
39
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve
|
|
40
|
+
// is available
|
|
41
|
+
const dev_rslib_entry_require = (0,__WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__.createRequire)(import.meta.url);
|
|
42
|
+
function defineDevHtmlWebpackPluginConfig(options = {}) {
|
|
43
|
+
const { template = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./public/index.html"), ...rest } = options;
|
|
44
|
+
return {
|
|
45
|
+
...rest,
|
|
46
|
+
template
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function defineFastRefreshPluginConfig(options = {}) {
|
|
50
|
+
return options;
|
|
51
|
+
}
|
|
52
|
+
function preflight() {
|
|
53
|
+
if (!dev_rslib_entry_require.resolve("webpack-dev-server")) {
|
|
54
|
+
throw new Error("[webpack-configs] To use the \"dev\" config, install https://www.npmjs.com/package/webpack-dev-server as a \"devDependency\".");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function trySetSwcFastRefresh(config, enabled) {
|
|
58
|
+
if (config?.jsc?.transform?.react) {
|
|
59
|
+
config.jsc.transform.react.refresh = enabled;
|
|
60
|
+
}
|
|
61
|
+
return config;
|
|
62
|
+
}
|
|
63
|
+
function trySetFastRefreshOverlay(options, overlay) {
|
|
64
|
+
if (overlay === false && (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isNil)(options.overlay)) {
|
|
65
|
+
options.overlay = false;
|
|
66
|
+
}
|
|
67
|
+
return options;
|
|
68
|
+
}
|
|
69
|
+
function defineDevConfig(swcConfig, options = {}) {
|
|
70
|
+
preflight();
|
|
71
|
+
const { entry = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./src/index.tsx"), https = false, host = "localhost", port = 8080, publicPath, cache = true, moduleRules = [], plugins = [], htmlWebpackPlugin = defineDevHtmlWebpackPluginConfig(), fastRefresh = true, cssModules = false, overlay, svgr = true, // Using an empty object literal as the default value to ensure
|
|
72
|
+
// "process.env" is always available.
|
|
73
|
+
environmentVariables = {}, transformers = [], verbose = false } = options;
|
|
74
|
+
const config = {
|
|
75
|
+
mode: "development",
|
|
76
|
+
target: "web",
|
|
77
|
+
devtool: "eval-cheap-module-source-map",
|
|
78
|
+
devServer: {
|
|
79
|
+
// According to the Fast Refresh plugin documentation, hot should be "true" to enable Fast Refresh:
|
|
80
|
+
// https://github.com/pmmmwh/react-refresh-webpack-plugin#usage.
|
|
81
|
+
hot: true,
|
|
82
|
+
host,
|
|
83
|
+
port,
|
|
84
|
+
historyApiFallback: true,
|
|
85
|
+
client: overlay === false || fastRefresh ? {
|
|
86
|
+
overlay: false
|
|
87
|
+
} : undefined,
|
|
88
|
+
server: https ? {
|
|
89
|
+
type: "https",
|
|
90
|
+
options: (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(https) ? https : undefined
|
|
91
|
+
} : undefined
|
|
92
|
+
},
|
|
93
|
+
entry,
|
|
94
|
+
output: {
|
|
95
|
+
// The trailing / is very important, otherwise paths will not be resolved correctly.
|
|
96
|
+
publicPath: publicPath ?? `${https ? "https" : "http"}://${host}:${port}/`
|
|
97
|
+
},
|
|
98
|
+
cache: cache && {
|
|
99
|
+
type: "memory",
|
|
100
|
+
maxGenerations: 1
|
|
101
|
+
},
|
|
102
|
+
// See: https://webpack.js.org/guides/build-performance/#avoid-extra-optimization-steps
|
|
103
|
+
optimization: {
|
|
104
|
+
// Keep "runtimeChunk" to false, otherwise it breaks module federation
|
|
105
|
+
// (at least for the remote application).
|
|
106
|
+
runtimeChunk: false,
|
|
107
|
+
removeAvailableModules: false,
|
|
108
|
+
removeEmptyChunks: false,
|
|
109
|
+
splitChunks: false
|
|
110
|
+
},
|
|
111
|
+
infrastructureLogging: verbose ? {
|
|
112
|
+
appendOnly: true,
|
|
113
|
+
level: "verbose",
|
|
114
|
+
debug: /PackFileCache/
|
|
115
|
+
} : undefined,
|
|
116
|
+
module: {
|
|
117
|
+
rules: [
|
|
118
|
+
{
|
|
119
|
+
test: /\.(js|jsx|ts|tsx)$/i,
|
|
120
|
+
exclude: /node_modules/,
|
|
121
|
+
loader: dev_rslib_entry_require.resolve("swc-loader"),
|
|
122
|
+
options: trySetSwcFastRefresh(swcConfig, fastRefresh !== false)
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
// https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten
|
|
126
|
+
test: /\.js$/i,
|
|
127
|
+
include: /node_modules/,
|
|
128
|
+
resolve: {
|
|
129
|
+
fullySpecified: false
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
test: /\.css$/i,
|
|
134
|
+
use: [
|
|
135
|
+
{
|
|
136
|
+
loader: dev_rslib_entry_require.resolve("style-loader")
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
loader: dev_rslib_entry_require.resolve("css-loader"),
|
|
140
|
+
options: cssModules ? {
|
|
141
|
+
// Must match the number of loaders applied before this one.
|
|
142
|
+
importLoaders: 1,
|
|
143
|
+
modules: true
|
|
144
|
+
} : undefined
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
loader: dev_rslib_entry_require.resolve("postcss-loader")
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
...svgr ? [
|
|
152
|
+
{
|
|
153
|
+
test: /\.svg$/i,
|
|
154
|
+
loader: dev_rslib_entry_require.resolve("@svgr/webpack"),
|
|
155
|
+
options: (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(svgr) ? svgr : undefined
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
test: /\.(png|jpe?g|gif)$/i,
|
|
159
|
+
type: "asset/resource"
|
|
160
|
+
}
|
|
161
|
+
] : [
|
|
162
|
+
{
|
|
163
|
+
test: /\.(png|jpe?g|gif|svg)$/i,
|
|
164
|
+
type: "asset/resource"
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
...moduleRules
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
resolve: {
|
|
171
|
+
extensions: [
|
|
172
|
+
".js",
|
|
173
|
+
".jsx",
|
|
174
|
+
".ts",
|
|
175
|
+
".tsx",
|
|
176
|
+
".css"
|
|
177
|
+
],
|
|
178
|
+
alias: {
|
|
179
|
+
// Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.
|
|
180
|
+
// View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.
|
|
181
|
+
"@swc/helpers": __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].dirname(dev_rslib_entry_require.resolve("@swc/helpers/package.json"))
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
plugins: [
|
|
185
|
+
htmlWebpackPlugin && new __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__["default"]((0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(htmlWebpackPlugin) ? htmlWebpackPlugin : defineDevHtmlWebpackPluginConfig()),
|
|
186
|
+
// Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
|
|
187
|
+
// after replacement and cause an undefined var error.
|
|
188
|
+
// For more information, view: https://webpack.js.org/plugins/define-plugin/.
|
|
189
|
+
new DefinePlugin({
|
|
190
|
+
"process.env": Object.keys(environmentVariables).reduce((acc, key)=>{
|
|
191
|
+
acc[key] = JSON.stringify(environmentVariables[key]);
|
|
192
|
+
return acc;
|
|
193
|
+
}, {})
|
|
194
|
+
}),
|
|
195
|
+
fastRefresh && new __WEBPACK_EXTERNAL_MODULE__pmmmwh_react_refresh_webpack_plugin_143c1848__["default"](trySetFastRefreshOverlay((0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(fastRefresh) ? fastRefresh : defineFastRefreshPluginConfig(), overlay)),
|
|
196
|
+
...plugins
|
|
197
|
+
].filter(Boolean)
|
|
198
|
+
};
|
|
199
|
+
const transformedConfig = (0,__WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__.applyTransformers)(config, transformers, {
|
|
200
|
+
environment: "dev",
|
|
201
|
+
verbose
|
|
202
|
+
});
|
|
203
|
+
return transformedConfig;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export { defineDevConfig, defineDevHtmlWebpackPluginConfig, defineFastRefreshPluginConfig };
|
|
207
|
+
|
|
208
|
+
//# sourceMappingURL=dev.js.map
|
package/dist/dev.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sources":["webpack://@workleap/webpack-configs/./src/dev.ts"],"sourcesContent":["import ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\";\nimport type { ReactRefreshPluginOptions } from \"@pmmmwh/react-refresh-webpack-plugin/types/lib/types.d.ts\";\nimport type { Config as SvgrOptions } from \"@svgr/core\";\nimport type { Config as SwcConfig } from \"@swc/core\";\nimport HtmlWebpackPlugin from \"html-webpack-plugin\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport webpack from \"webpack\";\nimport type { ServerOptions } from \"webpack-dev-server\";\nimport { applyTransformers, type WebpackConfigTransformer } from \"./transformers/applyTransformers.ts\";\nimport { isNil, isObject } from \"./utils.ts\";\n\n// Add the \"devServer\" option to WebpackConfig typings.\nimport \"webpack-dev-server\";\nimport type { WebpackConfig } from \"./types.ts\";\n\n// Aliases\nconst DefinePlugin = webpack.DefinePlugin;\n\n// Using node:module.createRequire until\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve\n// is available\nconst require = createRequire(import.meta.url);\n\nexport function defineDevHtmlWebpackPluginConfig(options: HtmlWebpackPlugin.Options = {}): HtmlWebpackPlugin.Options {\n const {\n template = path.resolve(\"./public/index.html\"),\n ...rest\n } = options;\n\n return {\n ...rest,\n template\n };\n}\n\nexport function defineFastRefreshPluginConfig(options: ReactRefreshPluginOptions = {}) {\n return options;\n}\n\nexport interface DefineDevConfigOptions {\n entry?: string;\n https?: boolean | ServerOptions | undefined;\n host?: string;\n port?: number;\n publicPath?: `${string}/` | \"auto\";\n cache?: boolean;\n moduleRules?: NonNullable<WebpackConfig[\"module\"]>[\"rules\"];\n plugins?: WebpackConfig[\"plugins\"];\n htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;\n fastRefresh?: boolean | ReactRefreshPluginOptions;\n cssModules?: boolean;\n overlay?: false;\n svgr?: boolean | SvgrOptions;\n environmentVariables?: Record<string, unknown>;\n transformers?: WebpackConfigTransformer[];\n verbose?: boolean;\n}\n\nfunction preflight() {\n if (!require.resolve(\"webpack-dev-server\")) {\n throw new Error(\"[webpack-configs] To use the \\\"dev\\\" config, install https://www.npmjs.com/package/webpack-dev-server as a \\\"devDependency\\\".\");\n }\n}\n\nfunction trySetSwcFastRefresh(config: SwcConfig, enabled: boolean) {\n if (config?.jsc?.transform?.react) {\n config.jsc.transform.react.refresh = enabled;\n }\n\n return config;\n}\n\nfunction trySetFastRefreshOverlay(options: ReactRefreshPluginOptions, overlay?: boolean) {\n if (overlay === false && isNil(options.overlay)) {\n options.overlay = false;\n }\n\n return options;\n}\n\nexport function defineDevConfig(swcConfig: SwcConfig, options: DefineDevConfigOptions = {}) {\n preflight();\n\n const {\n entry = path.resolve(\"./src/index.tsx\"),\n https = false,\n host = \"localhost\",\n port = 8080,\n publicPath,\n cache = true,\n moduleRules = [],\n plugins = [],\n htmlWebpackPlugin = defineDevHtmlWebpackPluginConfig(),\n fastRefresh = true,\n cssModules = false,\n overlay,\n svgr = true,\n // Using an empty object literal as the default value to ensure\n // \"process.env\" is always available.\n environmentVariables = {},\n transformers = [],\n verbose = false\n } = options;\n\n const config: WebpackConfig = {\n mode: \"development\",\n target: \"web\",\n devtool: \"eval-cheap-module-source-map\",\n devServer: {\n // According to the Fast Refresh plugin documentation, hot should be \"true\" to enable Fast Refresh:\n // https://github.com/pmmmwh/react-refresh-webpack-plugin#usage.\n hot: true,\n host,\n port,\n historyApiFallback: true,\n client: (overlay === false || fastRefresh) ? {\n overlay: false\n } : undefined,\n server: https ? {\n type: \"https\",\n options: isObject(https) ? https : undefined\n } : undefined\n },\n entry,\n output: {\n // The trailing / is very important, otherwise paths will not be resolved correctly.\n publicPath: publicPath ?? `${https ? \"https\" : \"http\"}://${host}:${port}/`\n },\n cache: cache && {\n type: \"memory\",\n maxGenerations: 1\n },\n // See: https://webpack.js.org/guides/build-performance/#avoid-extra-optimization-steps\n optimization: {\n // Keep \"runtimeChunk\" to false, otherwise it breaks module federation\n // (at least for the remote application).\n runtimeChunk: false,\n removeAvailableModules: false,\n removeEmptyChunks: false,\n splitChunks: false\n },\n infrastructureLogging: verbose ? {\n appendOnly: true,\n level: \"verbose\",\n debug: /PackFileCache/\n } : undefined,\n module: {\n rules: [\n {\n test: /\\.(js|jsx|ts|tsx)$/i,\n exclude: /node_modules/,\n loader: require.resolve(\"swc-loader\"),\n options: trySetSwcFastRefresh(swcConfig, fastRefresh !== false)\n },\n {\n // https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten\n test: /\\.js$/i,\n include: /node_modules/,\n resolve: {\n fullySpecified: false\n }\n },\n {\n test: /\\.css$/i,\n use: [\n { loader: require.resolve(\"style-loader\") },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssModules\n ? {\n // Must match the number of loaders applied before this one.\n importLoaders: 1,\n modules: true\n }\n : undefined\n },\n { loader: require.resolve(\"postcss-loader\") }\n ]\n },\n ...(svgr\n ? [\n {\n test: /\\.svg$/i,\n loader: require.resolve(\"@svgr/webpack\"),\n options: isObject(svgr) ? svgr : undefined\n },\n {\n test: /\\.(png|jpe?g|gif)$/i,\n type: \"asset/resource\"\n }\n ]\n : [\n {\n test: /\\.(png|jpe?g|gif|svg)$/i,\n type: \"asset/resource\"\n }\n ]),\n ...moduleRules\n ]\n },\n resolve: {\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".css\"],\n alias: {\n // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.\n // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.\n \"@swc/helpers\": path.dirname(require.resolve(\"@swc/helpers/package.json\"))\n }\n },\n plugins: [\n htmlWebpackPlugin && new HtmlWebpackPlugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineDevHtmlWebpackPluginConfig()),\n // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, \"production\" would become production\n // after replacement and cause an undefined var error.\n // For more information, view: https://webpack.js.org/plugins/define-plugin/.\n new DefinePlugin({\n \"process.env\": Object.keys(environmentVariables).reduce((acc, key) => {\n acc[key] = JSON.stringify(environmentVariables[key]);\n\n return acc;\n }, {} as Record<string, string>)\n }),\n fastRefresh && new ReactRefreshWebpackPlugin(trySetFastRefreshOverlay(isObject(fastRefresh) ? fastRefresh : defineFastRefreshPluginConfig(), overlay)),\n ...plugins\n ].filter(Boolean)\n };\n\n const transformedConfig = applyTransformers(config, transformers, {\n environment: \"dev\",\n verbose\n });\n\n return transformedConfig;\n}\n"],"names":["ReactRefreshWebpackPlugin","HtmlWebpackPlugin","createRequire","path","webpack","applyTransformers","isNil","isObject","DefinePlugin","require","defineDevHtmlWebpackPluginConfig","options","template","rest","defineFastRefreshPluginConfig","preflight","Error","trySetSwcFastRefresh","config","enabled","trySetFastRefreshOverlay","overlay","defineDevConfig","swcConfig","entry","https","host","port","publicPath","cache","moduleRules","plugins","htmlWebpackPlugin","fastRefresh","cssModules","svgr","environmentVariables","transformers","verbose","undefined","Object","acc","key","JSON","Boolean","transformedConfig"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export { WebpackConfigTransformer, WebpackConfigTransformerContext } from
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
import '@svgr/core';
|
|
8
|
-
import '@swc/core';
|
|
9
|
-
import 'html-webpack-plugin';
|
|
10
|
-
import 'mini-css-extract-plugin';
|
|
11
|
-
import '@pmmmwh/react-refresh-webpack-plugin/types/lib/types.d.ts';
|
|
12
|
-
import 'webpack-dev-server';
|
|
1
|
+
export * from "./build.ts";
|
|
2
|
+
export * from "./dev.ts";
|
|
3
|
+
export type { WebpackConfigTransformer, WebpackConfigTransformerContext } from "./transformers/applyTransformers.ts";
|
|
4
|
+
export * from "./transformers/moduleRules.ts";
|
|
5
|
+
export * from "./transformers/plugins.ts";
|
|
6
|
+
export * from "./types.ts";
|