-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
53 lines (47 loc) · 1.61 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
const path = require('path');
const TerserJsPlugin = require('terser-webpack-plugin');
const packageJson = require('./package.json')
const isProd = process.env.NODE_ENV === 'production';
const calcPackageName = (packageJsonName) => packageJsonName.replace("@", "").replace("/", "-");
const calcRootName = (pkgName) => pkgName.replace(/-/g, " ").replace(/\b\w/g, l => l.toUpperCase()).replace(/ /g, "");
const pkgName = calcPackageName(packageJson.name);
const rootName = calcRootName(pkgName);
const orgName = packageJson.name.indexOf("@") === 0 ? packageJson.name.split("/")[0] : undefined;
const externals = [];
if (orgName) {
externals.push(new RegExp(`^(${orgName})`));
}
module.exports = {
entry: path.resolve(__dirname, './dist.es6/index.js'),
output: {
path: path.resolve(__dirname, './pkg'),
filename: pkgName + (isProd ? '.min' : '') + '.js',
libraryTarget: 'umd',
libraryExport: undefined,
library: {
root: rootName,
amd: packageJson.name,
commonjs: packageJson.name
},
umdNamedDefine: true,
globalObject: 'typeof self !== \'undefined\' ? self : this'
},
target: "web",
externals,
mode: isProd ? "production" : "development",
devtool: isProd ? undefined : "inline-source-map",
node: {
fs: "empty",
path: "empty",
console: false,
global: false,
process: false,
__filename: false,
__dirname: false,
Buffer: false,
setImmediate: false
},
optimization: {
minimizer: isProd ? [ new TerserJsPlugin() ] : []
}
};