forked from alibaba-fusion/next
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprod.js
More file actions
78 lines (73 loc) · 2.53 KB
/
prod.js
File metadata and controls
78 lines (73 loc) · 2.53 KB
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
const webpack = require('webpack');
const path = require('path');
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CssSplitWebpackPlugin = require('css-split-webpack-plugin').default;
const loaders = require('./loaders');
module.exports = function(options = {}) {
const minimize = options.minimize;
const packagePath = path.resolve('package.json');
const version = require(packagePath).version;
const config = {
output: {},
resolve: {
extensions: ['.js', '.jsx'],
},
module: {
rules: [
{
test: /\.jsx?$/,
use: loaders.js(),
exclude: /node_modules/,
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: loaders.css({ minimize }).slice(1),
}),
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: loaders.scss({ minimize }).slice(1),
}),
},
],
},
plugins: [
new webpack.BannerPlugin(`@alifd/next@${version} (https://fusion.design)
Copyright 2018-present Alibaba Group,
Licensed under MIT (https://github.com/alibaba-fusion/next/blob/master/LICENSE)`),
new CaseSensitivePathsPlugin(),
new webpack.optimize.ModuleConcatenationPlugin(),
// support ie 9
new CssSplitWebpackPlugin({
size: 4000,
preserve: true,
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"',
}),
new webpack.ProgressPlugin(),
],
};
if (minimize) {
config.output.filename = '[name].min.js';
config.plugins.push(
new ExtractTextPlugin(options.extractTextName || '[name].min.css'),
new webpack.optimize.UglifyJsPlugin({
output: {
ascii_only: true, // eslint-disable-line
},
})
);
} else {
config.output.filename = '[name].js';
config.plugins.push(
new ExtractTextPlugin(options.extractTextName || '[name].css')
);
}
return config;
};