/
webpack.config.js
76 lines (72 loc) · 2.27 KB
/
webpack.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const path = require('path');
const webpack = require('webpack');
const ReplaceInFileWebpackPlugin = require('replace-in-file-webpack-plugin');
function getConfig(mode, agent, entry) {
return {
entry: entry,
target: 'node',
mode: mode,
devtool: mode === 'development' ? 'inline-source-map' : false,
module: {
rules: [{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
}],
},
resolve: {
extensions: ['.tsx', '.ts', '.js', '.json'],
},
output: {
libraryTarget: 'commonjs2',
filename: '[name]/bundle.js',
path: path.resolve(__dirname, `dist/${agent}`),
},
node: {
__dirname: false,
__filename: false
},
plugins: [
new webpack.NormalModuleReplacementPlugin(
/agent\/mock\/build-agent/,
`../agent/${agent}/build-agent`
),
new ReplaceInFileWebpackPlugin([{
dir: `dist/${agent}`,
test: /bundle.js/,
rules: [{
search: /__webpack_require__\(.*\)\(resourceFile\)/,
replace: '_loadResJson(resourceFile)'
}, {
search: /let pkg.*'package.json'\)\);/,
replace: 'let pkg = { version: "1.2.3" };'
}]
}])
],
experiments: {
topLevelAwait: true
}
}
}
const entryPoints = [
'gitversion/setup',
'gitversion/execute',
'gitreleasemanager/setup',
'gitreleasemanager/create',
'gitreleasemanager/discard',
'gitreleasemanager/close',
'gitreleasemanager/open',
'gitreleasemanager/publish',
'gitreleasemanager/addasset',
];
module.exports = (env) => {
const task = env.task || 'compile';
const agent = env.agent || 'mock';
const mode = task === 'compile' ? 'development' : 'production';
const entry = {};
entryPoints.forEach(key => {
const resource = task === 'compile' ? `src/tasks/${key}.ts` : `dist/${agent}/${key}/bundle.js`;
entry[key] = path.resolve(__dirname, resource);
});
return getConfig(mode, agent, entry);
};