-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
100 lines (95 loc) · 2.65 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
/**
* This file is part of ComilaJS.
*
* ComilaJS is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* ComilaJS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with ComilaJS. If not, see <http://www.gnu.org/licenses/>.
*/
var FileHeader = require('./src/FileHeader');
var UglifyJSPlugin = require('uglifyjs-webpack-plugin');
var Webpack = require('webpack');
// Export the webpack configuration.
module.exports = function (env, options) {
'use strict';
return {
'devServer': {
'contentBase': __dirname + '/demo',
'lazy': true,
'open': false,
'openPage': '',
'port': 4768
},
'entry': {
'comila': __dirname + '/src/Main.js',
'comila.min': __dirname + '/src/Main.js'
},
'mode': 'production',
'module': {
'rules': [
{
'enforce': 'pre',
'exclude': /node_modules/,
'loader': 'jscs-loader',
'test': /\.js$/
},
{
'enforce': 'pre',
'exclude': /node_modules/,
'loader': 'jshint-loader',
'test': /\.js$/
}
]
},
'optimization': {
'minimize': true,
'minimizer': [
new UglifyJSPlugin({
'include': /\.min\.js$/,
'sourceMap': true,
'uglifyOptions': {
'compress': {
'pure_funcs': (options.mode === 'production' ? [
'console.debug'
] : null),
'warnings': false
},
'mangle': true,
'mangle.properties': {
'regex': /^_/
},
}
})
]
},
'output': {
'filename': '[name].js',
'library': 'comilajs',
'libraryTarget': 'umd',
'path': __dirname + '/' + (options.mode === 'production' ? 'dist' :
'build'),
'publicPath': '/assets/',
'sourceMapFilename': '[file].map',
'umdNamedDefine': true
},
'performance': {
'hints': false
},
'plugins': [
new Webpack.BannerPlugin(FileHeader.text),
new Webpack.LoaderOptionsPlugin({options: {}}),
new Webpack.SourceMapDevToolPlugin({
'filename': '[file].map',
'include': /\.min\.js$/
})
]
}
};