内容简介:webpack简单来说就是一个模块打包器,也是目前最流行的前端构建工具之一,他将整个项目根据依赖关系通过各种loader与plugin的处理后进行打包;可以实现对代码的各种处理,比如less、sass、stylus的解析,ecmascript版本的转换、代码的压缩分割等等loader可以说是webpack最核心的部分,前面所说的各种功能大部分就是又他完成的;loader简单来说就是一个导出为函数的JavaScript模块,webpack会配置文件申明的倒序调用loader,传入资源文件,经loader处理后
webpack简述
webpack简单来说就是一个模块打包器,也是目前最流行的前端构建 工具 之一,他将整个项目根据依赖关系通过各种loader与plugin的处理后进行打包;可以实现对代码的各种处理,比如less、sass、stylus的解析,ecmascript版本的转换、代码的压缩分割等等
webpack之loader
loader可以说是webpack最核心的部分,前面所说的各种功能大部分就是又他完成的;loader简单来说就是一个导出为函数的JavaScript模块,webpack会配置文件申明的倒序调用loader,传入资源文件,经loader处理后传给下一loader或者webpack处理
常用loader
1.sass-loader、less-loader、stylus-loader、style-loader、css-loader
2.babel-loader
3.file-loader、url-loader
4.vue-loader
5.string-loader
webpack之plugin
plugin是webpack的重要组成部分,他能以各种钩子钩入每个编译(compilation)中触发的所有关键事件,插件都具备完全访问compiler对象的能力
常用plugin
1.HtmlWebpackPlugin
2.HotModuleReplacementPlugin
3.DefinePlugin
4.DllPlugin、DllReferencePlugin
以下是详细配置
{
mode: 'development', // production:生产,会压缩代码;development:开发,不会压缩代码,便于debug
devtool: 'inline-source-map',// 添加source map;便于debug,但会严重影响性能,千万不要在生产环境使用
// webpack打包的入口
entry: {
app: './src/index.js', // 路径相对于package.json
// app: ['./vue.js', './src/index.js']
},
// 文件输出
output: {
filename: '[name].js',
path: path.resolve(__dirname, '../dist') // 输出的目录,默认为dist
},
optimization: {
runtimeChunk: true,// 将webpack打包后的主文件单独分离,默认是将主文件放在入口文件当中,当需要在入口文件之前引入打包的公共代码时需要用到,此项建议对webpack有一定了解后再理解,关于打包后的代码分析我会单独写一篇
// 抽离公共代码
splitChunks: {
cacheGroups: {
vendor: { // 抽离第三方插件
test: /node_modules/, // 指定是 node_modules 下的第三方包
chunks: 'initial', // initial 对于异步导入的文件不处理;async 异步chunk,只对异步导入的文件处理;all 全部chunk
name: 'common/vendor', // 打包后的文件名,任意命名,会逆优化首屏加载的速度,慎用,建议每个公共代码块都单独抽离或者手动配置
priority: 10 // 设置优先级,防止和自定义的公共代码提取时被覆盖,不进行打包
},
utils: { // 抽离自定义公共代码
test: /\.js$/,
chunks: 'initial',
name: true, // 每个页面的包只包含需要的文件,不会影响首屏加载的速度,good job
minSize: 0 // 只要超出 0 字节就生成一个新包,默认30000B
}
}
}
},
module: {
rules: [
// 打包css文件需要用到的loader
// 注意:loader的执行顺序是后面的先执行
// style-loader必须在css-loader的前面
{
test: /\.css$/,
use: [
// 将css文件以style标签形式插入
{
loader: 'style-loader',
options: {
singleton: true // 设置为true,多个css文件会在同一个style标签内
}
},
'css-loader'
],
include: path.resolve(__dirname, '../src') // 只处理对应目录下的文件,构建性能提升
},
{
test: /\.js$/,
use: [
'babel-loader', // 配置babel转换代码
],
exclude: path.resolve(__dirname, '../node_modules')
}
]
},
plugins: [
// 在每次打包前清理dist目录
// 注意配置删除dist目录下的所有文件,而不是dist目录,因为当dist目录其他程序打开时将无法删除
new CleanWebpackPlugin(['dist/*'], {
root: path.resolve(__dirname, '../')
}),
// 用于处理入口html,如自动注入entry对应js,并拷贝至压缩目录等等
new HtmlWebpackPlugin({
template: './src/index.html',
// 压缩html
minify: {
removeComments: true, // 删除注释
collapseWhitespace: true, // 删除空格
removeAttributeQuotes: true // 删除属性的引号
}
})
],
// 配置后webpack会跳过对应模块的打包,当使用cdn时需要用到,此项能提升构建性能与前端性能
externals: {
vue: 'vue'
}
}
以上所述就是小编给大家介绍的《webpack配置看这里就够了》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
- git commit 规范校验配置和版本发布配置
- hadoop地址配置、内存配置、守护进程设置、环境设置
- 在hibernate中配置事务级别与命名查询配置【原创】
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Practical Django Projects, Second Edition
James Bennett / Apress / 2009 / 44.99
Build a django content management system, blog, and social networking site with James Bennett as he introduces version 1.1 of the popular Django framework. You’ll work through the development of ea......一起来看看 《Practical Django Projects, Second Edition》 这本书的介绍吧!