VUE学习笔记十七:Webpack
Webpack3
var path = require('path')
const htmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const webpack = require('webpack')
const ExtractPlugin = require('extract-text-webpack-plugin')
const isDev = process.env.NODE_ENV ==='development'
// const cleanWebpackPlugin = require('clean-webpack-plugin')
console.log(isDev)
const config = {
target:'web',
entry:path.join(__dirname,'src/main.js'),
output:{
filename:'bundle.[hash:8].js',
path:path.join(__dirname,'dist')
},
module:{
rules:[
{
test:/\.vue$/,
loader:'vue-loader'
},
{
test:/\.jsx$/,
loader:'babel-loader'
},
{
test:/\.css$/,
use:[
'style-loader',
'css-loader'
]
},
{
test:/\.(gif|jpg|jpeg|png|svg)$/,
use:[
{
loader:'url-loader',
options:{
limit:1024,
name:'[name]-aaa.[ext]'
}
}
]
}
]
},
plugins: [
new VueLoaderPlugin(),
new htmlWebpackPlugin(),
new webpack.DefinePlugin({
'process.env':{
NODE_ENV:isDev?'"development"':'"production"'
}
}),
// new cleanWebpackPlugin()
],
}
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
},
hot:true
// historyFallback:{},
// open:true
}
config.plugins.push(
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin()
)
}else{
config.entry = {
app:path.join(__dirname,'src/main.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.plugins.push(
new ExtractPlugin('style.[chunkhash:8].css'),
// new webpack.optimize.CommonsChunkPlugin({
// name:'vendor'
// }),
// new webpack.optimize.CommonsChunkPlugin({
// name:'runtime'
// })
)
config.optimization={
splitChunks: {
name: "vendor"
}
}
config.optimization={
splitChunks: {
name: "runtime"
}
}
}
module.exports = configWebpack2
const path = require('path')
const isDev = process.env.NODE_ENV === 'development'
const HTMLPlugin = require('html-webpack-plugin')
const ExtractPlugin = require('extract-text-webpack-plugin')
const webpack = require('webpack')
const config = {
target: 'web',
entry: path.join(__dirname, 'src/index.js'),
output: {
filename: 'bundle.[hash:8].js',
path: path.join(__dirname, 'dist')
},
module: {
rules: [
// {
// test: /\.css$/,
// use: [
// 'style-loader',
// 'css-loader'
// ]
// },
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.jsx$/,
loader: 'babel-loader'
},
{
test: /\.(gif|png|jpe?g|svg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 1024,
name: '[name].urloader.[ext]'
}
}
]
}
]
},
plugins: [
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
},
hot: true,
}
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.plugins.push(
new ExtractPlugin('style.[contentHash:8].css'),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor'
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'runtime'
})
)
}
module.exports = configWebpack1
var path = require('path')
var htmlWebpackPlugin = require('html-webpack-plugin');
var htmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin');
var CleanWebpackPlugin = require('clean-webpack-plugin')
module.exports = {
// entry:['./src/script/main.js','./src/script/a.js'],
entry:'./src/app.js',
output:{
path:path.resolve(__dirname,'./dist'),
filename:'js/[name]-[chunkhash].js',
publicPath:'http://www.qinimai.com/'
},
module:{
loaders:[
{
test:/\.js$/,
loader:'babel-loader',
exclude:path.resolve(__dirname,'./node_modules'),
include:path.resolve(__dirname,'./src/'),
query:{
presets:['latest']
}
},
{
test:/\.css/,
use:[
'style-loader',
'css-loader?importLoaders:1',
'postcss-loader'
]
},
{
test:/\.less$/,
use:[
'style-loader',
'css-loader',
'postcss-loader',
'less-loader'
]
},
{
test:/\.html$/,
loader:'html-loader'
},
{
test:/\.(pgn|jpg|gif|svg)/i,
loaders:[
'file-loader',
'image-webpack-loader'
]
}
]
},
postcss:[
require('autoprefixer')({
browsers:['last 5 versions']
})
],
plugins:[
new htmlWebpackPlugin({
filename:'index.html',
template:'index.html',
inject:'body',
})
]
}var path = require('path')
var htmlWebpackPlugin = require('html-webpack-plugin');
var htmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin');
module.exports = {
// entry:['./src/script/main.js','./src/script/a.js'],
entry:{
main:'./src/script/main.js',
a:'./src/script/a.js',
b:'./src/script/b.js',
c:'./src/script/c.js'
},
output:{
path:path.resolve(__dirname,'./dist'),
filename:'js/[name]-[chunkhash].js',
publicPath:'http://www.qinimai.com/'
},
plugins:[
// new htmlWebpackPlugin({
// filename:'index-[hash].html',
// template:'index.html',
// inject:'head',
// title:'a is good',
// minify:{
// removeComments:true,
// collapseWhitespace:true
// }
// }),
new htmlWebpackPlugin({
filename:'a.html',
template:'index.html',
inject:'head',
title:'a is good',
minify:{
removeComments:true,
collapseWhitespace:true
},
chunks:["main","a"],
inlineSource:'.(main)'
}),
new htmlWebpackPlugin({
filename:'b.html',
template:'index.html',
inject:'head',
title:'b is good',
minify:{
removeComments:true,
collapseWhitespace:true
},
chunks:["main","b"],
inlineSource:'.(main)'
}),
new htmlWebpackPlugin({
filename:'c.html',
template:'index.html',
inject:'head',
title:'c is good',
minify:{
removeComments:true,
collapseWhitespace:true
},
chunks:["main","c"],
excludeChunks:["a","b"],
inlineSource:'.(main)'
}),
new htmlWebpackInlineSourcePlugin()
]
}上一篇:VUE学习笔记十六:高级路由
文章
总共 0 条评论