-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
84 lines (80 loc) · 2.59 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
const path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const ts = require('typescript');
const { isImportDeclaration, isExportDeclaration, isStringLiteral } = require('tsutils/typeguard/node');
function getCustomTransformers() {
return { before: [stripJsExt] };
function stripJsExt(context) {
return (sourceFile) => visitNode(sourceFile);
function visitNode(node) {
if (
(isImportDeclaration(node) || isExportDeclaration(node)) &&
node.moduleSpecifier &&
isStringLiteral(node.moduleSpecifier)
) {
const targetModule = node.moduleSpecifier.text;
if (targetModule.endsWith('.js')) {
const newTarget = targetModule.slice(0, targetModule.length - 3);
return isImportDeclaration(node)
? ts.updateImportDeclaration(
node,
node.decorators,
node.modifiers,
node.importClause,
ts.createLiteral(newTarget)
)
: ts.updateExportDeclaration(
node,
node.decorators,
node.modifiers,
node.exportClause,
ts.createLiteral(newTarget)
);
}
}
return ts.visitEachChild(node, visitNode, context);
}
}
}
module.exports = {
mode: 'production',
entry: {
BattleLines: './src/Index.ts',
'BattleLines.min': './src/Index.ts',
},
node: {
Buffer: false,
global: false,
__filename: false,
__dirname: false,
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
libraryTarget: 'umd',
library: 'BattleLines',
umdNamedDefine: true,
},
resolve: {
extensions: ['.ts', '.tsx', '.js'],
},
devtool: 'source-map',
optimization: {
minimizer: [
new UglifyJsPlugin({
sourceMap: true,
include: /\.min\.js$/,
}),
],
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: { compilerOptions: { declaration: false }, getCustomTransformers },
},
],
},
};