1.配置文件webpack.config
const path = require('path')
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const HTMLPlugin = require('html-webpack-plugin')
const webpack = require('webpack')
const ExtractPlugin = require('extract-text-webpack-plugin')
const isDev = process.env.NODE_ENV =='development'
const config= {
target:'web',
entry: path.join(__dirname, "src/index.js"), //輸入文件
output: {
filename: "build.[hash:8].js", //輸出文件
path: path.join(__dirname, 'dist') //輸出路徑
},
module:{
rules:[
{
test:/\.vue$/,
loader:'vue-loader'
},{
test: /\.jsx$/,
loader: 'babel-loader'
},
{
test:/\.(gif|png|jpg|jpeg|svg)$/,
use:[{
loader:'url-loader',
options:{
limit:1024,
name:'[name]-[hash].[ext]'
}
}]
},
]
},
plugins: [
// make sure to include the plugin for the magic
new VueLoaderPlugin(),
new webpack.DefinePlugin({
'process.env':{
NODE_ENV:isDev?'"development"':'"production"',
}
}),
new HTMLPlugin(),
],
}
if(isDev){
config.module.rules.push({
test: /\.styl/,
use: ['style-loader', 'css-loader', {
loader: 'postcss-loader',
options: {
sourceMap: true
}
}, 'stylus-loader']
})
config.devtool='#cheap-module-eval-source-map',
config.devServer={
port:8000,
host:'0.0.0.0',
overlay:{
errors:true
},
// open:true //每次都打開(kāi)一個(gè)網(wǎng)頁(yè)
hot:true //只渲染一個(gè)組件
}
config.plugins.push(
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
)
}else{
config.entry={
app:path.join(__dirname,'src/index.js'),
vendor:['vue']
}
config.output.filename = '[name].[chunkhash:8].js'
config.module.rules.push(
{
test: /\.styl/,
use:ExtractPlugin.extract({
fallback:'style-loader',
use:[
'css-loader',
{
loader: 'postcss-loader',
options: {
sourceMap: true
}
},
'stylus-loader'
]
})
}
)
config.optimization={
splitChunks: {
cacheGroups: {
commons: {
name: "vendor",
chunks: "initial",
minChunks: 2
}
}
}
}
config.optimization = {
splitChunks: {
cacheGroups: {
commons: {
name: "runtime",
chunks: "initial",
minChunks: 2
}
}
}
}
config.plugins.push(
new ExtractPlugin('styles.[name].css'),
// new webpack.optimize.CommonsChunkPlugin({
// name:'vendor'
// })
)
}
module.exports=config