webpack 从零到一入门(二)

js语法检查eslint

语法检查: eslint-loader eslint
注意:只检查自己写的源代码,第三方的库不用检查
设置检查规则:
package.json 中 eslintConfig 中配置~
"eslintConfig": {
"extends": "airbnb-base"
}
airbnb 规则指南--> eslint-config-airbnb-base, eslint-plugin-import, eslint 三个库
安装:npm i eslint-loader eslint eslint-config-airbnb-base eslint-plugin-import -D

{
    test: /\.js$/,
    exclude: /node_moudles/, // 排除,防止eslint检测
    loader: 'eslint-loader',
       options: {
           // 自动修复
           fix: true
       }
}

js 的兼容性处理

工具:babel-loader @babel/core @babel/preset-env
1. 基本js兼容性处理 --> @babel/preset-env
问题:只能转换基本语法,如 promise 高级语法不能转换
2. 全部的 js 兼容性处理 --> @babel/polyfill (不考虑)
问题:我只要解决部分兼容性问题,但是将所有兼容性代码全部引入,体积太大了~
3. 需要做兼容性处理的就做:按需加载 --> corejs npm i core-js -D
结合1 和3 完成js的兼容性处理

 {
      test: /\.js$/,
      exclude: /node_modules/,
      loader: 'babel-loader',
      options: {
           // 预设: 指示 babel 做怎样的兼容处理
           // presets: ['@babel/preset-env']
           presets: [
               [ 
                  '@babel/preset-env',
                  {
                     // 按需加载
                     useBuiltIns: 'usage',
                     // 指定 core-js 版本
                     corejs: {
                       version: 3
                     },
                    // 指定兼容性做到哪个版本的浏览器
                    targets: {
                       chrome: '60',
                       firefox: '60',
                       ie: '9',
                       safari: '10',
                       edge: '17'
                    }
              ]
          ]
    }
},

注:正常来讲,一个文件只能被一个loader处理
当一个文件要被多个loader处理,那么一定要指定loader执行的先后顺序
先执行eslint 在执行babel
enforce: ‘pre’ 优先执行

js压缩

生产环境下会自动压缩js代码

mode: 'production'

html 压缩

new HtmlWebpackPlugin({
            template: './src/index.html',
            // 压缩html
            minify: {
                // 移除空格
                collapseWhitespace: true,
                // 移除注释
                removeComments: true
            }
}),
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容