模式:
webpack4中可以直接指定模式,以现实不同环境对打包代码做不同的处理,2而webpack2,3中是通过插件进行代码压缩以及改变环境变量的
module.exports = { mode: ‘development‘, }; //相当于 module.exports = { devtool:‘eval‘, plugins: [ new webpack.NamedModulesPlugin(), new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("development") }) ] }
开启开发模式对开发友好,不会对代码进行压缩
module.exports = {
mode: ‘production‘,
};
//相当于
module.exports = {
plugins: [
new UglifyJsPlugin(/*...*/),
new webpack.DefinePlugin({ //改变环境变量
"process.env.NODE_ENV": JSON.stringify("production")
}),
new webpack.optimize.ModuleConcatenationPlugin(),//预编译所有模块到一个闭包中,提升你的代码在浏览器中的执行速度。
new webpack.NoEmitOnErrorsPlugin()//在编译出现错误时,使用 NoEmitOnErrorsPlugin
来跳过输出阶段。这样可以确保输出资源不会包含错误。
]
}
生产模式不用对开发友好,只需要关注打包的性能和生成更小体积的bundle
loader:
loader用于对模块module的源码进行转换,默认webpack只能识别commonjs代码,但是我们在代码中会引入比如vue、ts、less等文件,webpack就处理不过来了;loader拓展了webpack处理多种文件类型的能力,将这些文件转换成浏览器能够渲染的js、css。
css-loader和style-loader:
css-loader和style-loader从名称看起来功能很相似,然而两者的功能有着很大的区别,但是他们经常会成对使用;安装方法:
npm i -D css-loader style-loader
css-loader
解释(interpret) @import
和 url()
,会 import/require()
后再解析(resolve)它们。
css-loader解析css文件以字符串的形式,变成common.js插入到js文件中
style-loader用来将css-loader生成的样式表通过<style>标签
,插入到页面header中去。
sass-loader和less-loader:
用来处理sass和less样式的。安装方法:
npm i -D sass-loader less-loader node-sass
配置:
{ //其他配置 rules: { test: /\.scss$/, use: [{ loader: ‘style-loader‘ }, { loader: ‘css-loader‘ },{ loader: ‘sass-loader‘ }] },{ test: /\.less$/, use: [{ loader: ‘style-loader‘ }, { loader: ‘css-loader‘ },{ loader: ‘less-loader‘ }] } }