-
-
Notifications
You must be signed in to change notification settings - Fork 80
/
Copy pathwebpack.base.config.js
52 lines (51 loc) · 1.23 KB
/
webpack.base.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const path = require('node:path')
const esbuild = require('esbuild')
const { EsbuildPlugin } = require('esbuild-loader')
const { NormalModuleReplacementPlugin } = require('webpack')
module.exports = ({ outputPath, production, minimizerFormat }) => ({
mode: production ? 'production' : 'none',
resolve: {
extensions: ['.ts', '.js'],
},
entry: `./src/${path.basename(outputPath, '.js')}.ts`,
output: {
filename: path.basename(outputPath),
path: path.dirname(outputPath),
clean: !!production,
library: { type: 'commonjs' },
},
module: {
rules: [
{
test: /\.ts$/,
loader: 'esbuild-loader',
options: {
implementation: esbuild,
target: 'es2021',
},
},
],
},
externals: {
vscode: 'commonjs vscode',
},
optimization: {
minimizer: [
new EsbuildPlugin({
target: 'es2021',
format: minimizerFormat,
keepNames: true,
}),
],
},
plugins: [
// Remove 'node:' prefix
new NormalModuleReplacementPlugin(/^node:/, (resource) => {
resource.request = resource.request.replace(/^node:/, '')
}),
],
performance: {
hints: false,
},
devtool: production ? false : 'nosources-source-map',
})