-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.prod.js
executable file
·131 lines (116 loc) · 3.53 KB
/
webpack.prod.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
121
122
123
124
125
126
127
128
129
130
131
/*
* @Author: Nokey
* @Date: 2017-02-24 14:16:31
* @Last Modified by: Mr.B
* @Last Modified time: 2021-03-17 19:22:25
*/
'use strict';
const webpack = require('webpack')
const path = require('path')
const config = require('./config')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const poststylus = require('poststylus')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
/**
* Common config that can be used in dev & prod environment
*/
const ENTRY = require('./webpack/entry')
const RULES = require('./webpack/rules').rules
const PLUGINS = require('./webpack/plugins').plugins
const RESOLVE = require('./webpack/resolve')
const OPTIMIZITION = require('./webpack/optimization')
/**
* Config
*/
const PUBLIC_PATH = config.public_path_prod
let NEW_PLUGINS
if(config.analyse_bundle){
NEW_PLUGINS = PLUGINS.concat([ new BundleAnalyzerPlugin() ])
}else{
NEW_PLUGINS = PLUGINS
}
module.exports = {
mode: 'production',
optimization: OPTIMIZITION,
// dectool should be false if env is production!!!
devtool: false, // false || 'cheap-eval-source-map'
entry: ENTRY,
output: {
path: path.join(__dirname, "build"),
filename: "bundle/[name].js",
publicPath: PUBLIC_PATH,
clean: true
},
module: {
rules: RULES.concat([
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
// you can specify a publicPath here
// by default it use publicPath in webpackOptions.output
// publicPath: '../'
}
},
'css-loader'
]
},
{
test: /\.styl$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
// you can specify a publicPath here
// by default it use publicPath in webpackOptions.output
// publicPath: '../'
}
},
{
loader: 'css-loader',
options: {
modules: {
auto: /\.styl$/i,
localIdentName: '[hash:base64:6]'
}
}
},
{
loader: 'stylus-loader',
options: {
stylusOptions: {
use: [
poststylus([ 'autoprefixer', 'rucksack-css' ])
]
}
}
}
]
}
])
},
plugins: NEW_PLUGINS.concat([
new webpack.DefinePlugin({
PRODUCTION: JSON.stringify(true)
})
]),
resolve: RESOLVE,
stats: {
// copied from `'minimal'`
all: false,
modules: true,
// maxModules: 0,
errors: true,
warnings: true,
// our additional options
moduleTrace: true,
errorDetails: true,
builtAt: true,
// 添加资源信息
assets: true,
performance: true,
colors: true
}
};