-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
88 lines (83 loc) · 2.13 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
77
78
79
80
81
82
83
84
85
86
87
88
const path = require('path');
const merge = require('webpack-merge');
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const TsConfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
// Short usage reference
// `NODE_ENV` = development | test | production
// `LOG_LEVEL` = error | warn | info | debug
/** @type {import('webpack').Configuration} */
const config = {
context: __dirname,
entry: {
bundle: './src/index.ts'
},
name: 'svc',
target: 'node',
cache: true,
resolve: {
extensions: ['.ts', '.js'],
modules: ['src', 'node_modules'],
plugins: [
new TsConfigPathsPlugin({
configFile: path.join(__dirname, 'tsconfig.json')
})
]
},
output: {
path: path.join(__dirname, './dist/svc'),
filename: '[name].js',
sourceMapFilename: '[name].map',
publicPath: '/'
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
use: 'source-map-loader',
},
{
test: /\.ts$/,
loader: 'ts-loader',
options: {
transpileOnly: true
}
}
],
noParse: [
/\.(spec|e2e)\.js$/,
/LICENSE/,
/README.md/
]
},
node: {
fs: 'empty',
global: true,
crypto: 'empty',
process: true,
console: true,
module: false,
clearImmediate: false,
setImmediate: false,
__dirname: false,
__filename: false
},
plugins: [
new LoaderOptionsPlugin({
debug: true,
}),
]
};
console.log('Building svc bundle...');
console.log(`[${process.env.NODE_ENV}] config used...`);
let finalCfg;
if (process.env.NODE_ENV === 'production') {
// minification not used because it does not work
finalCfg = config;
} else {
finalCfg = merge(config, {
devtool: 'inline-source-map'
});
}
module.exports = finalCfg;