• webpack4一些设置


    一.sourceMap: 是一个映射关系,如果出错可以知道实际文件行数出错

    在webpack.config.js设置属性

    devtool: 'source-map'

    在生产环境可以设置为(提醒错误比较全面)

    devtool: 'cheap-module-eval-source-map'

    在线上环境设置为(比较合适)

    devtool: 'cheap-module-source-map' 

    https://segmentfault.com/a/1190000008315937
    https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
    http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html
    https://www.youtube.com/watch?v=NkVes0UMe9Y

    二.@babel 将ES6自动转为ES5,还可设置自动加载ES6函数

    三.Tree Shaking: 根据引用的内容自动选择加载内容 但因为是静态引入方式,所以功能只支持ES module,不支持COMMON JS

    线上和线下模式打包引入结果不一样,线下模式会全部引入,但是在线上模式只会引入需要的模块.,就是判断只要引入一个模块,就会采用Tree Shaking方式进行打包

    在package.json文件中 

    "sideEffects": ["@babel/polyfill"],  如果有需要特殊处理的模块,比如会忽略对 @babel/polyfill的处理
    "sideEffects": false,   如果没有特殊处理的模块,就可以设为false

    在webpack.config.js中

    optimization: {
        usedExports: true
    }

     四.Code Spliting

    4.1t同步代码:

    在配置文件webpack.config.js中

    optimization: {
            splitChunks: {
                chunks: 'all'
            }
     }

    4.2异步代码,会自动进行代码分割

    首先安装插件 npm install --save-dev @babel/plugin-syntax-dynamic-import

    在 .babelrc 中配置plugins加入 

    {
      "plugins": ["@babel/plugin-syntax-dynamic-import"]
    }

    4.3 SplitChunksPlugin配置

    https://webpack.js.org/plugins/split-chunks-plugin/

     五.Bundle Analysis 分析工具

    https://webpack.js.org/guides/code-splitting/#bundle-analysis

    可视化较强的是webpack-bundle-analyzer

    六.懒加载

    https://webpack.js.org/guides/code-splitting/#prefetchingpreloading-modules

    七.CSS打包 MiniCssExtractPlugin

      CSS合并和压缩: optimize-css-assets-webpack-plugin

    PS:因为不支持HMR,所以只在production模式下使用这个CSS打包压缩功能

     八.去除一些性能提醒

    在webpack.config.js中添加属性

    performance: false,

    九.浏览器缓存caching

    在配置文件output的打包目录的文件命名上加上 [contenthash] , 会根据文件内容进行hash

     十.(在plugins中加入配置)自动引入模块 ProvidePlugin (因为在webpack中模块之间是隔离的)这样可以全局引入

    new webpack.ProvidePlugin({
      $: 'jquery',
      // ...
    });

     十一.将模块js文件中的this指向window

    需要先安装imports-loader

    在webpack.config.js中加入代码

    module: {
        rules: [
        { 
            test: /.js$/, 
            exclude: /node_modules/,
            use: [
                {
                    loader: "babel-loader",
                }, {
                    loader: "imports-loader?this=>window"
                }
            ]
        }
    }

     十二.全局变量

    在package.json文件中  可以设置env全局变量,这样可以直接访问webpack.common.js这一个配置文件中而实现线上和线下模式

        "dev-build": "webpack --config ./build/webpack.common.js",
        "dev": "webpack-dev-server --config ./build/webpack.common.js",
        "build": "webpack --env.production --config ./build/webpack.common.js"
  • 相关阅读:
    Linux常用解压文件
    微信开放平台 获取 component_verify_ticket
    mysql root密码重置
    编译安装LNMP
    JS生成二维码
    CURL采集
    JS拖动浮动DIV
    JS拖动DIV布局
    Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
    zepto.js 源码注释备份
  • 原文地址:https://www.cnblogs.com/init-007/p/11348676.html
Copyright © 2020-2023  润新知