92 lines
2.6 KiB
JavaScript
92 lines
2.6 KiB
JavaScript
|
|
var webpack = require("webpack");
|
|||
|
|
var path = require('path');
|
|||
|
|
var uglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
|
|||
|
|
var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
|||
|
|
var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|||
|
|
|
|||
|
|
var ROOT_PATH = path.resolve(__dirname); // 项目跟路径
|
|||
|
|
var APP_PATH = path.resolve(ROOT_PATH, 'Views'); // 项目开发目录src
|
|||
|
|
var APP_FILE = path.resolve(APP_PATH, 'index.js'); // 项目入口的index.js
|
|||
|
|
var DIST_PATH = path.resolve(ROOT_PATH, 'dist'); // 项目打包输出路径
|
|||
|
|
|
|||
|
|
module.exports = {
|
|||
|
|
entry: {
|
|||
|
|
app: APP_FILE,
|
|||
|
|
venders: [
|
|||
|
|
'react',
|
|||
|
|
'react-dom',
|
|||
|
|
'react-router',
|
|||
|
|
// 'antd',这里直接会把所有antd打包
|
|||
|
|
'mockjs',
|
|||
|
|
'babel-polyfill'
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
output: {
|
|||
|
|
path: DIST_PATH,
|
|||
|
|
filename: '[name].js',
|
|||
|
|
chunkFilename: 'js/[name].[chunkhash:5].min.js'
|
|||
|
|
},
|
|||
|
|
module: {
|
|||
|
|
loaders: [
|
|||
|
|
{
|
|||
|
|
test: /\.css$/,
|
|||
|
|
loader: ExtractTextPlugin.extract('style', ['css', 'autoprefixer'])
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
test: /\.less$/,
|
|||
|
|
loader: ExtractTextPlugin.extract('style', ['css', 'autoprefixer', 'less'])
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
test: /\.jsx?$/,
|
|||
|
|
exclude: /node_modules/,
|
|||
|
|
loaders: ['react-hot', 'babel?presets[]=es2015,presets[]=react,presets[]=stage-0']
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
test: /\.(png|jpg)$/,
|
|||
|
|
loader: 'file-loader?limit=8192&name=images/[hash:8].[name].[ext]'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
test: /\.(woff|woff2|eot|ttf|svg)(\?.*$|$)/,
|
|||
|
|
loader: 'url'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
resolve: {
|
|||
|
|
extensions: ['', '.js', '.jsx', '.json', '.less']
|
|||
|
|
},
|
|||
|
|
plugins: [
|
|||
|
|
// new webpack.ProvidePlugin({ $: "jquery" }), // 这是将jquery变成全局变量,不用在自己文件require('jquery')了
|
|||
|
|
new webpack.DefinePlugin({
|
|||
|
|
'process.env': {
|
|||
|
|
NODE_ENV: JSON.stringify('production') //定义生产环境
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
new webpack.optimize.CommonsChunkPlugin('venders', 'venders.js'), // 这是第三方库打包生成的文件
|
|||
|
|
new uglifyJsPlugin({
|
|||
|
|
output: {
|
|||
|
|
comments: false, // remove all comments
|
|||
|
|
},
|
|||
|
|
compress: {
|
|||
|
|
warnings: false
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
new ExtractTextPlugin("[name].css"),
|
|||
|
|
new HtmlWebpackPlugin({
|
|||
|
|
template: './Views/template/template.html', // html模板路径
|
|||
|
|
htmlWebpackPlugin: {
|
|||
|
|
files: {
|
|||
|
|
css: ["app.css"],
|
|||
|
|
js: ["bundle.js", "venders.js"]
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
minify: {
|
|||
|
|
removeComments: true,
|
|||
|
|
collapseWhitespace: true, // 删除空白符与换行符
|
|||
|
|
removeAttributeQuotes: true // 移除HTML中的属性引号
|
|||
|
|
},
|
|||
|
|
filename: 'index.html',
|
|||
|
|
favicon:'./Views/favicon.ico', //favicon路径
|
|||
|
|
})
|
|||
|
|
]
|
|||
|
|
};
|