@workleap/webpack-configs 1.5.1 → 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.
Files changed (40) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/build.d.ts +18 -19
  3. package/dist/build.js +219 -3
  4. package/dist/build.js.map +1 -0
  5. package/dist/dev.d.ts +16 -17
  6. package/dist/dev.js +208 -3
  7. package/dist/dev.js.map +1 -0
  8. package/dist/index.d.ts +6 -12
  9. package/dist/index.js +15 -6
  10. package/dist/index.js.map +1 -0
  11. package/dist/transformers/applyTransformers.d.ts +4 -7
  12. package/dist/transformers/applyTransformers.js +20 -1
  13. package/dist/transformers/applyTransformers.js.map +1 -0
  14. package/dist/transformers/moduleRules.d.ts +15 -17
  15. package/dist/transformers/moduleRules.js +166 -1
  16. package/dist/transformers/moduleRules.js.map +1 -0
  17. package/dist/transformers/plugins.d.ts +11 -14
  18. package/dist/transformers/plugins.js +69 -1
  19. package/dist/transformers/plugins.js.map +1 -0
  20. package/dist/types.d.ts +1 -0
  21. package/dist/types.js +6 -0
  22. package/dist/types.js.map +1 -0
  23. package/dist/utils.d.ts +4 -6
  24. package/dist/utils.js +22 -1
  25. package/dist/utils.js.map +1 -0
  26. package/package.json +41 -38
  27. package/src/build.ts +240 -0
  28. package/src/dev.ts +233 -0
  29. package/src/index.ts +7 -0
  30. package/src/transformers/applyTransformers.ts +28 -0
  31. package/src/transformers/moduleRules.ts +229 -0
  32. package/src/transformers/plugins.ts +102 -0
  33. package/src/types.ts +1 -0
  34. package/src/utils.ts +19 -0
  35. package/dist/chunk-2YARCRX5.js +0 -15
  36. package/dist/chunk-34O5ZLZ6.js +0 -154
  37. package/dist/chunk-5ACA7GOB.js +0 -17
  38. package/dist/chunk-CW54GSNS.js +0 -197
  39. package/dist/chunk-JPURRV2F.js +0 -71
  40. package/dist/chunk-JU2EHEXW.js +0 -186
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
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
+
9
+ ## 1.5.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [#215](https://github.com/gsoft-inc/wl-web-configs/pull/215) [`d6dfe8f`](https://github.com/gsoft-inc/wl-web-configs/commit/d6dfe8f61ab56a606c84c7c580dded75ba5e7bfc) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Fixed typings.
14
+
3
15
  ## 1.5.1
4
16
 
5
17
  ### Patch Changes
package/dist/build.d.ts CHANGED
@@ -1,31 +1,30 @@
1
- import { Config } from '@svgr/core';
2
- import { Config as Config$1 } from '@swc/core';
3
- import HtmlWebpackPlugin from 'html-webpack-plugin';
4
- import MiniCssExtractPlugin from 'mini-css-extract-plugin';
5
- import { Configuration } from 'webpack';
6
- import { WebpackConfigTransformer } from './transformers/applyTransformers.js';
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<Configuration["optimization"]>;
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<Configuration["module"]>["rules"];
19
- plugins?: Configuration["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 | Config;
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: Config$1, options?: DefineBuildConfigOptions): Configuration;
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
- export { defineBuildConfig, defineBuildHtmlWebpackPluginConfig, defineMiniCssExtractPluginConfig, getOptimizationConfig } from './chunk-CW54GSNS.js';
2
- import './chunk-2YARCRX5.js';
3
- import './chunk-5ACA7GOB.js';
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEoD;AACO;AACf;AACf;AACoB;AACnB;AACyE;AAEjE;AAEtC,UAAU;AACV,MAAMQ,eAAeH,2DAAoB;AAEzC,wCAAwC;AACxC,kGAAkG;AAClG,eAAe;AACf,MAAMI,yBAAOA,GAAGP,kEAAaA,CAAC,YAAY,GAAG;AAEtC,SAASQ,mCAAmCC,UAAqC,CAAC,CAAC;IACtF,MAAM,EACFC,WAAWT,iEAAY,CAAC,sBAAsB,EAC9C,GAAGU,MACN,GAAGF;IAEJ,OAAO;QACH,GAAGE,IAAI;QACPD;IACJ;AACJ;AAIO,SAASE,iCAAiCH,UAAuC,CAAC,CAAC;IACtF,MAAM,EACFI,WAAW,YAAY,EACvB,GAAGF,MACN,GAAGF;IAEJ,OAAO;QACH,GAAGE,IAAI;QACPE;IACJ;AACJ;AAKO,SAASC,sBAAsBC,QAAwB;IAC1D,IAAIA,aAAa,YAAY;QACzB,OAAO;YACH,UAAU;YACV,WAAW;gBACP,IAAIb,qEAAYA,CAAC;oBACb,QAAQA,+EAAsB;oBAC9B,eAAe;wBACX,UAAU;wBACV,QAAQ;wBACR,iBAAiB;wBACjB,aAAa;wBACb,UAAU;4BACN,UAAU;4BACV,aAAa;wBACjB;wBACA,QAAQ;4BACJ,UAAU;wBACd;oBACJ;gBACJ;aACH;YACD,UAAU;YACV,WAAW;YACX,eAAe;YACf,mBAAmB;QACvB;IACJ,OAAO,IAAIa,UAAU;QACjB,OAAO;YACH,UAAU;YACV,WAAW;gBACP,IAAIb,qEAAYA,CAAC;oBACb,QAAQA,+EAAsB;gBAClC;aACH;QACL;IACJ;IAEA,kFAAkF;IAClF,OAAO;QACH,UAAU;QACV,UAAU;QACV,WAAW;QACX,oBAAoB;QACpB,oBAAoB;QACpB,eAAe;QACf,mBAAmB;QACnB,wBAAwB;QACxB,aAAa;IACjB;AACJ;AAkBO,SAASc,kBAAkBC,SAAoB,EAAER,UAAoC,CAAC,CAAC;IAC1F,MAAM,EACFS,QAAQjB,iEAAY,CAAC,kBAAkB,EACvCkB,aAAalB,iEAAY,CAAC,OAAO,EACjC,oFAAoF;IACpFmB,aAAa,wBAAwB,EACrCC,cAAc,EAAE,EAChBC,UAAU,EAAE,EACZC,oBAAoBf,oCAAoC,EACxDgB,8BAA8BZ,kCAAkC,EAChEG,WAAW,IAAI,EACfU,aAAa,KAAK,EAClBC,OAAO,IAAI,EACX,+DAA+D;IAC/D,qCAAqC;IACrCC,uBAAuB,CAAC,CAAC,EACzBC,eAAe,EAAE,EACjBC,UAAU,KAAK,EAClB,GAAGpB;IAEJ,MAAMqB,SAAwB;QAC1B,MAAM;QACN,QAAQ;QACRZ;QACA,QAAQ;YACJ,MAAMC;YACN,UAAU;YACVC;YACA,OAAO;YACP,qBAAqB;QACzB;QACA,cAAcN,sBAAsBC;QACpC,uBAAuBc,UAAU;YAC7B,YAAY;YACZ,OAAO;YACP,OAAO;QACX,IAAIE;QACJ,QAAQ;YACJ,OAAO;gBACH;oBACI,MAAM;oBACN,SAAS;oBACT,QAAQxB,yBAAOA,CAAC,OAAO,CAAC;oBACxB,SAASU;gBACb;gBACA;oBACI,uHAAuH;oBACvH,MAAM;oBACN,SAAS;oBACT,SAAS;wBACL,gBAAgB;oBACpB;gBACJ;gBACA;oBACI,MAAM;oBACN,KAAK;wBACD;4BAAE,QAAQlB,8EAA2B;wBAAC;wBACtC;4BACI,QAAQQ,yBAAOA,CAAC,OAAO,CAAC;4BACxB,SAASkB,aACH;gCACE,4DAA4D;gCAC5D,eAAe;gCACf,SAAS;4BACb,IACEM;wBACV;wBACA;4BAAE,QAAQxB,yBAAOA,CAAC,OAAO,CAAC;wBAAkB;qBAC/C;gBACL;mBACImB,OACE;oBACE;wBACI,MAAM;wBACN,QAAQnB,yBAAOA,CAAC,OAAO,CAAC;wBACxB,SAASF,2DAAQA,CAACqB,QAAQA,OAAOK;oBACrC;oBACA;wBACI,MAAM;wBACN,MAAM;oBACV;iBACH,GACC;oBACE;wBACI,MAAM;wBACN,MAAM;oBACV;iBACH;mBACFV;aACN;QACL;QACA,SAAS;YACL,YAAY;gBAAC;gBAAO;gBAAQ;gBAAO;gBAAQ;aAAO;YAClD,OAAO;gBACH,2FAA2F;gBAC3F,6HAA6H;gBAC7H,gBAAgBpB,iEAAY,CAACM,yBAAOA,CAAC,OAAO,CAAC;YACjD;QACJ;QACA,SAAS;YACLgB,qBAAqB,IAAIzB,mEAAiBA,CAACO,2DAAQA,CAACkB,qBAAqBA,oBAAoBf;YAC7F,IAAIT,uEAAoBA,CAACyB;YACzB,yIAAyI;YACzI,+FAA+F;YAC/F,4EAA4E;YAC5E,IAAIlB,aAAa;gBACb,eAAe0B,OAAO,IAAI,CAACL,sBAAsB,MAAM,CAAC,CAACM,KAAKC;oBAC1DD,GAAG,CAACC,IAAI,GAAGC,KAAK,SAAS,CAACR,oBAAoB,CAACO,IAAI;oBAEnD,OAAOD;gBACX,GAAG,CAAC;YACR;eACGX;SACN,CAAC,MAAM,CAACc;IACb;IAEA,MAAMC,oBAAoBjC,6FAAiBA,CAAC0B,QAAQF,cAAc;QAC9D,aAAa;QACbC;IACJ;IAEA,OAAOQ;AACX"}
package/dist/dev.d.ts CHANGED
@@ -1,31 +1,30 @@
1
- import { ReactRefreshPluginOptions } from '@pmmmwh/react-refresh-webpack-plugin/types/lib/types.d.ts';
2
- import { Config } from '@svgr/core';
3
- import { Config as Config$1 } from '@swc/core';
4
- import HtmlWebpackPlugin from 'html-webpack-plugin';
5
- import { Configuration } from 'webpack';
6
- import { ServerOptions } from 'webpack-dev-server';
7
- import { WebpackConfigTransformer } from './transformers/applyTransformers.js';
8
-
9
- declare function defineDevHtmlWebpackPluginConfig(options?: HtmlWebpackPlugin.Options): HtmlWebpackPlugin.Options;
10
- declare function defineFastRefreshPluginConfig(options?: ReactRefreshPluginOptions): ReactRefreshPluginOptions;
11
- interface DefineDevConfigOptions {
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<Configuration["module"]>["rules"];
19
- plugins?: Configuration["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 | Config;
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: Config$1, options?: DefineDevConfigOptions): Configuration;
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
- export { defineDevConfig, defineDevHtmlWebpackPluginConfig, defineFastRefreshPluginConfig } from './chunk-JU2EHEXW.js';
2
- import './chunk-2YARCRX5.js';
3
- import './chunk-5ACA7GOB.js';
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
@@ -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 { Configuration as WebpackConfig } from 'webpack';
2
- export { DefineBuildConfigOptions, OptimizeOption, WebpackOptimization, defineBuildConfig, defineBuildHtmlWebpackPluginConfig, defineMiniCssExtractPluginConfig, getOptimizationConfig } from './build.js';
3
- export { DefineDevConfigOptions, defineDevConfig, defineDevHtmlWebpackPluginConfig, defineFastRefreshPluginConfig } from './dev.js';
4
- export { WebpackConfigTransformer, WebpackConfigTransformerContext } from './transformers/applyTransformers.js';
5
- export { AssetModuleType, ModuleRuleMatch, ModuleRuleMatcher, WithModuleRuleMatcherInfo, addAfterModuleRule, addBeforeModuleRule, findModuleRule, findModuleRules, matchAssetModuleType, matchLoaderName, matchTest, removeModuleRules, replaceModuleRule } from './transformers/moduleRules.js';
6
- export { PluginMatch, PluginMatcher, WebpackPlugin, WithPluginMatcherInfo, addAfterPlugin, addBeforePlugin, findPlugin, matchConstructorName, removePlugin, replacePlugin } from './transformers/plugins.js';
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";