webpack常见Loader包、Plugin包,以及相关配置的注意事项

loader 系列

css和less

//下载包
npm i -D style-loader css-loader less-loader

//webpack.config.js里rules配置示例:
{
  // 处理 less 资源
  test: /\.less$/,
  use: ['style-loader', 'css-loader','less-loader'],
}

url-loader 功能类似于 file-loader
但是在文件大小(单位 byte)低于指定的限制时,可以返回一个 DataURL,一般用来处理图片

//下载包
npm i -D url-loader

//webpack.config.js里rules配置示例:
{
  // 处理 图片 资源
  test: /\.(jpg|png)$/,
  loader: 'url-loader',
  options:{
    limit: 8 * 1024,
    name:'[hash:10].[ext]',
    esModule:false,
    outputPath:'images'
  }
}

处理html里面的 图片 文件等

//下载包
npm i -D html-loader

//webpack.config.js里rules配置示例:
{
  // 处理html里面的 图片 文件
  test: /\.html$/,
  loader: 'html-loader',
}

处理其他资源,排除上面的

//下载包
npm i -D file-loader 

//webpack.config.js里rules配置示例:
{
  // 处理其他资源,排除上面的
  exclude: /\.(html|js|css|less|jpg|png)$/,
  loader: 'file-loader',
  options:{
    name:'[hash:10].[ext]',
    outputPath:'font'
  }
}

通过postcss-loader添加浏览器前缀,做浏览器兼容处理

//下载包
npm i -D postcss-loader postcss-preset-env

//webpack.config.js里rules配置示例:
{
  test: /\.css$/,
  use: [
    MiniCssExtractPlugin.loader,
    'css-loader',
    {
      loader: 'postcss-loader',
      options: {
        ident: 'postcss',
        plugins: () => [
          // postcss的插件,帮助postcss找到package.json里面的browserslist配置,达到兼容指定浏览器的效果
          require('postcss-preset-env')()
        ]
      }
    }
  ]
}


//package.json里面browserslist配置:
"browserslist": {
    "production": [
      ">0.1%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      ">0.1%",
      "not dead",
      "not op_mini all"
    ]
  }

browserslist更多资料参考



Plugin 系列

使用各种Plugin 打包优化、压缩、浏览器兼容等,配合loader完成资源打包等更多高阶功能

1、将js中import的css文件提取出来,以link方式插入html 【推荐使用】

//下载包
npm i mini-css-extract-plugin -D

//webpack.config.js里配置示例:
//先引入插件
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

//在plugins里面增加配置
new MiniCssExtractPlugin()

//rules配置
{
  test: /\.css$/,
  use: [
    MiniCssExtractPlugin.loader,
    'css-loader'
  ]
}




2、处理js中import的css文件 通过css-loader、style-loader、extract-text-webpack-plugin@next将js中import的css文件以link的方式插入到html
webpack3.0通常使用该插件,webpack4.0通常使用mini-css-extract-plugin
【不推荐使用】

//下载包
npm i extract-text-webpack-plugin 
//webpack4之前使用




3、通过安装配置html-webpack-plugin 插件复制’./src/index.html’ 文件,并自动引入打包输出的所有资源(JS/CSS),同时可以实现压缩html的功能

//下载包
npm i -D html-webpack-plugin

new HtmlWebpackPlugin({
 template:'./src/index.html', //指定模板
  // 压缩html 代码
  minify: {
    // 移除空格
    collapseWhitespace: true,
    // 移除注释
    removeComments: true
  }
})

注意: 使用html-webpack-plugin后,源文件不要再引入打包后的资源文件了,要不然编辑报错 ,具体分析见:https://blog.csdn.net/daodaoke/article/details/107370795




4、通过安装配置optimize-css-assets-webpack-plugin 压缩 CSS

//下载包
npm i -D postcss-loader postcss-preset-env





loader 和 Plugin 组合使用

1、js 语法检查

//先下载包
npm i -D eslint-loader eslint eslint-config-airbnb-base eslint-plugin-import


//webpack.config.js里rules配置示例:
{
	test: /\.js$/,
	exclude: /node_modules/,
	loader: 'eslint-loader',
	options: {
		// 自动修复eslint 的错误
		fix: true
	}
}

//package.json里面配置:
"eslintConfig": {
    "extends": "airbnb-base",
    "env": {
      "browser": true
    }
  }

2、js 兼容性处理

//先下载包
npm install --save-dev babel-loader @babel/core @babel/preset-env @babel/polyfill core-js


//webpack.config.js里rules配置示例:
{
 test: /\.js$/,
 exclude: /node_modules/,//排除第三方的库
 loader: 'babel-loader',
 options: {
 // 预设:指示babel 做怎么样的兼容性处理
 presets: [
     [
       '@babel/preset-env',
       {
         // 按需加载polyfill,不配置这个就是默认全部加载
         useBuiltIns: 'usage',
         // 指定core-js 版本
         corejs: {
           version: 3
         },
         // 指定兼容性做到哪个版本浏览器
         targets: {
           chrome: '60',
           firefox: '60',
           ie: '9',
           safari: '10',
           edge: '17'
         }
       }
     ]
   ]
 }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用的webpack loader有babel-loader、css-loader、file-loader和url-loader,常用的plugin有CommonsChunkPlugin、ProvidePlugin、UglifyJsPlugin和HtmlWebpackPluginWebpack 是一种现代化的前端构建工具,它可以将多个源文件(如 JavaScript、CSS、图片等)打成单个的 JavaScript 文件,以优化网页的加载速度和性能。在 Webpack 中,LoaderPlugin 是两个非常重要的概念。 Loader 是用于对模块源代码进行转换的工具,它可以将各种类型的文件转换成 Webpack 能够处理的模块。常见Loader 有: - `babel-loader`:将 ES6+ 语法转换成 ES5 语法,以便浏览器能够兼容。 - `style-loader` 和 `css-loader`:用于处理 CSS 文件,将 CSS 文件转换成 JavaScript 模块,以便在浏览器中使用。 - `file-loader` 和 `url-loader`:用于处理图片、字体等文件,将它们复制到输出目录并修改模块代码,以便在浏览器中使用。 Plugin 则是用于增强 Webpack 功能的工具,它可以在 Webpack 构建过程的不同阶段执行一些额外的任务。常见Plugin 有: - `HtmlWebpackPlugin`:用于生成 HTML 文件,并自动将生成的 JavaScript 文件插入到 HTML 文件中。 - `MiniCssExtractPlugin`:用于将 CSS 文件提取成单独的文件,以便在浏览器中加载。 - `CleanWebpackPlugin`:用于在每次构建之前清除输出目录中的文件,以便确保输出的文件都是最新的。 LoaderPluginWebpack 中都有着非常重要的作用,通过它们,我们可以轻松地处理各种类型的文件,并增强 Webpack 的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值