webpack5项目-编译打包常用资源模块loader配置

前端-webpack5汇总

目录

一.资源模块 

二.编译打包配置

1.编译打包图片文件

2.编译打包字体文件

3.编译打包css文件

4.编译打包less文件

5. 打包sass文件

6.编译打包js文件

排除不应参与转码的库

7.打包vue文件

三.总结

1.npm命令

2.webpack.config.js文件

3.package.json文件

4.babel.config.json文件


一.资源模块 

资源模块(asset module)是一种模块类型,它允许使用资源文件(字体,图标等)而无需配置额外 loader。

在 webpack 5 之前,通常使用:

  • raw-loader 将文件导入为字符串
  • url-loader 将文件作为 data URI 内联到 bundle 中
  • file-loader 将文件发送到输出目录

资源模块类型(asset module type),通过添加 4 种新的模块类型,来替换所有这些 loader:

  • asset/resource 发送一个单独的文件并导出 URL。之前通过使用 file-loader 实现。
  • asset/inline 导出一个资源的 data URI。之前通过使用 url-loader 实现。
  • asset/source 导出资源的源代码。之前通过使用 raw-loader 实现。
  • asset 在导出一个 data URI 和发送一个单独的文件之间自动选择。之前通过使用 url-loader,并且配置资源体积限制实现。

当在 webpack 5 中使用旧的 assets loader(如 file-loader/url-loader/raw-loader 等)和 asset 模块时,你可能想停止当前 asset 模块的处理,并再次启动处理,这可能会导致 asset 重复,你可以通过将 asset 模块的类型设置为 'javascript/auto' 来解决。 

webpack.config.js

module.exports = {
  module: {
   rules: [
      {
        test: /\.(png|jpg|gif)$/i,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 8192,
            }
          },
        ],
        type: 'javascript/auto'
      },
   ]
  },
}

Rule.type

string

可设置值: 'javascript/auto' | 'javascript/dynamic' | 'javascript/esm' | 'json' | 'webassembly/sync' | 'webassembly/async' | 'asset' | 'asset/source' | 'asset/resource' | 'asset/inline'

Rule.type 设置类型用于匹配模块。它防止了 defaultRules 和它们的默认导入行为发生。例如,如果你想 通过自定义 loader 加载一个 .json 文件,你会需要将 type 设置为 javascript/auto 以绕过 webpack 内置的 json 导入。

module.exports = {
  module: {
    rules: [
      //...
      {
        test: /\.json$/,
        type: 'javascript/auto',
        loader: 'custom-json-loader',//用户自定义loader
      },
    ],
  },
};

使用 Asset Modules 可以接收并加载任何文件,然后将其输出到构建目录。这就是说,我们可以将它们用于任何类型的文件,包括图片和字体

二.编译打包配置

1.编译打包图片文件

rules: [
    //type:'asset' 会自动地在 resource 和 inline 之间进行选择:
    //小于 4kb 的文件(如果不设置maxSize,默认为8kb),
    //将会视为 inline 模块类

你可能感兴趣的:(前端,webpack)