webpack学习2-常用loader

1. style-loader

作用:使得css样式写入html的head中 ,缺点是js打包很大,常和css-loader配合使用

用法:

  {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            }

2. css-loader

作用:css-loader会处理import / require()/ @import / url 引入的.css的文件

用法:

 {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            }

3. less-loader

作用:less-loader会处理import / require()/ @import / url 引入的.less的文件

用法:

 {
                test: /\.less$/,
                use: ['style-loader', 'css-loader','less-loader']
            }

4. file-loader

作用:1,将要加载的文件复制到指定目录 2,生成请求文件资源URL

用法:

 { // 除了这几种格式都用file-loader
                exclude: /\.(html|css|js|less|jpg|png|gif)$/,
                loader: 'file-loader'
            }

5. url-loader

作用:url-loader封装了file-loader,1.文件大小小于limit参数,url-loader将会把文件转为DataURL;2.文件大小大于limit,url-loader会调用file-loader进行处理,参数也会直接传给file-loader。

用法:

 {
                test: /\.(jpg|png|gif)$/,
                loader: 'url-loader',
                options:{
                    limit: 8 * 1024,
                    name: '[hash:10].[ext]'
                }
            },

5. html-loader

作用:处理html中的img

用法:

 {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            }

6. postcss-loader postcss-preset-env

作用:处理css3的兼容性代码 例如 flex 还有动画属性

注意: 1, npm install --D postcss-loader@2.1.1 可能要装这个版本 2, 注意不同环境的代码验证 需要靠这个变量来控制NODE_ENV=development, 设置mode是没用的, 在lessloader 的上面

用法:分为 1、2、

1. 在module中使用
 {
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    {
                        loader: 'postcss-loader',
                        options:{
                            ident:'postcss',
                            plugins:()=>[require('postcss-preset-env')()]
                        }
                    }
                ]
            },
2. 在package.json中写以下配置
  "browserslist": {
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ],
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ]
  }

7. 下载 eslint eslint-loader eslint-config-airbnb-base eslint-plugin-import

注意此插件 可能需要cnpm下载 在rules里 加入enforce: ‘pre’,必须保证eslint的优先执行

作用:代码规范 使用airbnb的规范

用法:1、2、3、

1. module.rules
 {
                test: /\.js$/,
                loader:'eslint-loader',
                enforce: 'pre',
                exclude:'/node_modules/',
                options:{
                    fix: true
                }
            }
2. package.json集成airbnb-base
 "eslintConfig": {
    "extends": "airbnb-base"
  }
3. 在.eslintrc.json中进行兼容配置
{
  "env": {
    "browser": true,
    "node": true
  },
  "parserOptions": {
    "ecmaVersion": 7,
    "sourceType": "module"
  }
}

8. babel-loader @babel/preset-env @babel/core @babel/polyfill core-js

注意此插件 可能需要cnpm下载, 注意presets不要写成了preset

把es6的语法编译成es5的语法 ,兼容浏览器 ,用法1只能兼容到 2才能兼容到全部

用法:

1. 基本用法
  {
                test: /\.js$/,
                loader:'babel-loader',
                exclude:'/node_modules/',
                options:{
                    presets: ['@babel/preset-env']
                }
            },
2. 使用@babel/polyfill 兼容全部情况
  // 在代码中 先引入即可 
  import '@babel/polyfill';
3. 使用core-js 按需加载 注意注释@babel/polyfill
     {
                test: /\.js$/,
                loader:'babel-loader',
                exclude:'/node_modules/',
                options:{
                    presets: [
                        [
                            '@babel/preset-env',
                            {
                                useBuiltIns: 'usage',
                                corejs: {
                                    version: 3
                                },
                                targets: {
                                    chrome: '60',
                                    firefox: '60',
                                    safari: '10',
                                    edge: '17'
                                }
                            }
                        ]
                    ]
                }
            },

9. thread-loader

作用:使用多个进程来打包,增加打包速度,但是利用不好也会减速, 一般用于babel打包比较大的js的场景

用法:

  {
                test: /\.js$/,
                exclude: '/node_modules/',
                use: [
                    {
                      loader: 'thread-loader',
                      options:{
                          workers: 2 // 2个进程
                      }
                    },
                    {
                        loader: 'babel-loader',
                        options: {
                            presets: [
                                '@babel/preset-env',
                            ],
                            cacheDirectory: true
                        },
                    }
                ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值