-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.config.js
120 lines (104 loc) · 2.74 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const path = require('path');
const webpack = require('webpack');
/****************************************************
* config entry
***************************************************/
const entry = {};
// ./src/index.ts
entry.app = [`./src/LoggerWeb.ts`];
/****************************************************
* config output
***************************************************/
const output = {};
output.publicPath = './';
output.path = path.resolve(__dirname);
output.filename = `index.js`;
output.libraryTarget = 'commonjs2';
/****************************************************
* config resolve
***************************************************/
const resolve = {
extensions: [".ts", ".tsx", ".js"],
alias: {
'src': path.resolve('src'),
}
};
/****************************************************
* config module
***************************************************/
const moduleOptions = {
rules: []
};
//typescript
//----------------
// ts
moduleOptions.rules.push({
test: /\.(ts|tsx)$/,
exclude: /kirin-strap\/node_modules/,
loader: 'ts-loader',
options: {
allowTsInNodeModules: true
}
});
// tslint
// moduleOptions.rules.push({
// test: /\.(ts|tsx)$/,
// enforce: 'pre',
// exclude: /node_modules/,
// loader: 'tslint-loader',
// });
/****************************************************
* config plugins
***************************************************/
const plugins = [];
// plugins.push(new webpack.DefinePlugin()};
/****************************************************
* config target
***************************************************/
const mode = process.env.NODE_ENV;
const webpackConfig = {entry, mode, output,
module: moduleOptions, resolve, plugins,
};
/*
const buildList = [
{
entry: './src/logger/index.ts',
output: 'logger.js',
}
];
//*/
const buildList = [
{
entry: './src/LoggerWeb.ts',
output: 'logger-web.js',
target: 'web'
},
{
entry: './src/LoggerNode.ts',
output: 'logger-node.js',
target: 'node'
},
];
//*/
let buildIndex = 0;
function build (buildOption) {
buildIndex++;
webpackConfig.entry.app = [buildOption.entry];
webpackConfig.output.filename = buildOption.output;
webpackConfig.target = buildOption.target;
webpack(webpackConfig, ( error, stats ) => {
// error
if( error ) throw error;
// config of output style
const outputConfig = {};
outputConfig.colors = true;
outputConfig.modules = false;
outputConfig.chunks = false;
outputConfig.chunkModules = false;
// output stats
process.stdout.write( `${stats.toString( outputConfig )}\n` );
if ( buildIndex === buildList.length ) { process.exit(); }
build(buildList[buildIndex]);
});
}
build(buildList[buildIndex]);