@Dale-Lin
2022-03-18T04:00:09.000000Z
字数 1090
阅读 674
webpack5
webpack5 内置 Asset Modules,用来处理各类资源:
const svgToMiniDataURI = require('mini-svg-data-uri')module.exports = {module: {rules: [{test: /\.css$/i,use: ["style-loader","css-loader"]},{test: /\.(png|jpe?g|gif)$/i,type: 'asset',parser: {dataUrlCondition: {maxSize: 8 * 1024 // 8kb}}},{test: /\.html/,type: "asset/resource",generator: {filename: 'static/[hash][ext][query]' // 会被输出到 ${output}/static 下}},{test: /\.svg/,type: "asset/inline", // 转成 Data URIgenerator: {dataUrl: content => {content = content.toString()return svgToMiniDataURI(content)}}},{test: /\.txt/,type: "asset/source" // 会将源代码打进 bundle}]}}
"asset/resource": 把资源作为一个文件输出到 ouput 目录,默认输出文件名 [hash][ext][query] 。"asset/inline": 把资源处理成 Data URL 的形式内联到 bundle。"asset/source": 把资源处理成源代码打进 bundle。"asset": 自动选择使用 "asset/inline" 或者 "asset/resource"。generator.filename 可以用来指定 "asset/resource" 输出的目录和文件名;只对 "asset/resource" 和 "asset" 类型生效。parser.dataUrlCondition.maxSize 用来指定 "asset" 类型自动选择的条件,大于这个值的文件按 "asset/resource" 处理,否则按 "asset/inline" 处理。还可以修改 ouput.assetModuleFilename 来自定义 asset/resource 输出的文件名。
默认情况下,data URL 用 base64 加密,可以指定 generator.dataUrl 来自定义其他加密算法。
