var htmlWebpackPlugin = require('html-webpack-plugin');//引用plugin,引用目的见自动生成html的文见
var path=require('path')//nodejs提供的获取路径的方法
//commonjs的模块化输出
module.exports = {
//context:,//运行环境的上下文,默认值为我们 运行该脚本的目录,我此处是根目录所以不需要写,如果你的不是请配置你的运行目
entry: './src/script/main.js',//打包的入口
//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写的输出文件是一个的话,这种写法 还是会打包在一个文件里
output:{ //打包后的文件放在什么地方
path:'./dist/js',
//path:'dist', 将html文件输出到dist目录下
//filename:'js/[name]-[chunkhash].js', //将生成的js文件 输出到js目录下
filename:'bundle.js' //打包后的文件名
//filename:'[name]-[hash].js', //hash是指本次打包的hash
//filename:'[name]-[chunkhash].js',
publicPath:'static/dist'//上线后,引用的打包路径
},
plugins:[//使用引用的plugin
new htmlWebpackPlugin({
filename:'index-[hash].html', //生成的html的 名字,如果每次生成都带hash我们会很难查看哪个是最新生成的,所以我们一般的写法都是'index.html'
template:'index.html', //你想让生成的文件被那个html引用这里就写哪个
inject:'head', //想把生成的js文件的引用放在什么标签里,这里是放在head标签里
//传递参数,将该参数在界面上引用
title:'hhm is good',
aa:'two',
minify:{
removeComments:true, //删除注释
collapseWhitespace:true//删除空格
drop_debugger: true, // 移除debugger
drop_console: true, // 移除console
pure_funcs: ['console.log','console.info']
//更多的属性可见官网api文档
}
}),
new htmlWebpackPlugin({
filename:'a.html',
template:'index.html',
inject:head,
title:'this is a.html',
//chunks:['a']//指定当前生成的html引入哪些js
excludeChunks:['b','c']//排除b c js 其它的都引入
}),
new htmlWebpackPlugin({
filename:'b.html',
template:'index.html',
inject:head,
title:'this is b.html',
chunks:['b']//指定当前生成的html引入哪些js
}),
new htmlWebpackPlugin({
filename:'c.html',
template:'index.html',
inject:head,
title:'this is c.html',
chunks:['c']//指定当前生成的html引入哪些js
})
],
module:{
loaders:[
{test:/\.js$/,
loader:'babel',
exclude:path.resolve(_dirname,'node_modules'),//告诉webpack不想处理的目录,提高打包速度。path.resolve是解析为绝对路径
include:path.resolve(_dirname,'src'),//要处理的目录
query:{ //这段代码也可以写在package.json里
presets:['latest'] //preset是将es6转换成浏览器可理解的js代码
}
},// 告诉浏览器我们处理js的时候 要使用babel,它的presets我们使用latest
{
test:/\.css$/,
loader:'style-Loader!css-Loader!postcss-loader'
//处理通过@Import a.css引入css里的文件impotLoaders的值表示我们在css-loader之后还有几个loader要处理,我们这里只有一个postcss-loader,所以这里写1(less中已经帮我们默认的处理了这种情况)
loader:'style-Loader!css-Loader?importLoaders=1!postcss-loader'//style-Loader可简写成style,其它同理
},
{
test:/\.less$/,
loader:'style!css!postcss!less' //放置顺序:如果你需要把postcss放在webpack的配置文件中就必须放在style-loader前面和sass或less-loader的后面
},
{
test:/\.html$/,
loader:'html'
},
{//只要是添加了图片的loader,不管是样式中的引用还是界面上的引用它会被处理
test:/\.(png|jpg|gif|svg)$/i,
loader:'file-loader', //如果图片很多建议用这个
//loader:'url-loader',
//loaders:[ //如果这样写下面的query就要去掉
'url-loader?limit=2000$name=img/[name]-[hash:5].[ext]',
'image-webpack'
]
query:{ //图片打包后的输出目录
//limit:20000,
name:'img/[name]-[hash:5].[ext]'
}
}
]
},
postcss:[ //处理不容易被浏览器解析的css
require('autoprefixer')({
broswers:['last 5 versions'] //对浏览器的版本进行处理
})
]
}