webpack

再撸一遍webpack

2019-06-27  本文已影响0人  lmmy123

Webpack

核心概念

​ 可选值:developmemt / production, 用来启用相应模式下的webpack内置的优化

mainfest

当编译器(compiler)开始执行,解析和映射应用程序时,它会保留所有模块的详细要点,这个数据集合称为‘manifest’

构建目标(targets)

Web pack.config.js

module.exports = {
    target: 'node' //使用 node webpack 会编译为用于「类 Node.js」环境
}
模块热替换(hot module replacement)HRM

Webpack 内置的插件

只用于开发模式

const webpack = require('webpack')
devServer: {
      contentBase: './dist',
+     hot: true
    },
    plugins: [
      new CleanWebpackPlugin(['dist']),
      new HtmlWebpackPlugin({
        title: 'Hot Module Replacement'
      }),
+     new webpack.HotModuleReplacementPlugin()
    ],
tree shaking

【摇树优化】移除js上下文中未引用代码(dead-code)

// webpack.config.js
mode: 'production' // 可以达到tree shaking 效果

生产环境构建

将生产环境和开发环境分别做配置,但保留一个通用的配置,通过webpack-merge合并配置

指定环境

webpack 内置的 DefinePlugin插件 指定系统环境变量

 new webpack.DefinePlugin({
    'process.env.NODE_ENV': JSON.stringify('production')
 })
// process.env.NODE_ENV 在src/ 目录下都可以直接访问
split CSS

ExtractTextPlugin 将CSS文件分离成单独文件

已废弃,使用mini-css-extract-plugin替代

代码分离

webpack-bundle-analyzer 打包分析插件

上一篇下一篇

猜你喜欢

热点阅读