diff --git a/packages/core/src/configChain.ts b/packages/core/src/configChain.ts index 211fd21e85..35b205c456 100644 --- a/packages/core/src/configChain.ts +++ b/packages/core/src/configChain.ts @@ -99,6 +99,8 @@ export const CHAIN_ID = { IMAGE: 'image', /** Rule for media */ MEDIA: 'media', + /** Rule for additional assets */ + ADDITIONAL_ASSETS: 'additional-assets', /** Rule for js */ JS: 'js', /** Rule for data uri encoded javascript */ diff --git a/packages/core/src/plugins/asset.ts b/packages/core/src/plugins/asset.ts index cc640815d4..0cdfea3f34 100644 --- a/packages/core/src/plugins/asset.ts +++ b/packages/core/src/plugins/asset.ts @@ -1,5 +1,6 @@ import path from 'node:path'; import type { GeneratorOptionsByModuleType } from '@rspack/core'; +import { CHAIN_ID } from '../configChain'; import { AUDIO_EXTENSIONS, FONT_EXTENSIONS, @@ -109,17 +110,17 @@ export const pluginAsset = (): RsbuildPlugin => ({ const { emitAssets } = config.output; // image - createAssetRule('image', IMAGE_EXTENSIONS, emitAssets); + createAssetRule(CHAIN_ID.RULE.IMAGE, IMAGE_EXTENSIONS, emitAssets); // svg - createAssetRule('svg', ['svg'], emitAssets); + createAssetRule(CHAIN_ID.RULE.SVG, ['svg'], emitAssets); // media createAssetRule( - 'media', + CHAIN_ID.RULE.MEDIA, [...VIDEO_EXTENSIONS, ...AUDIO_EXTENSIONS], emitAssets, ); // font - createAssetRule('font', FONT_EXTENSIONS, emitAssets); + createAssetRule(CHAIN_ID.RULE.FONT, FONT_EXTENSIONS, emitAssets); // assets const assetsFilename = getMergedFilename('assets'); chain.output.assetModuleFilename(assetsFilename); @@ -131,7 +132,9 @@ export const pluginAsset = (): RsbuildPlugin => ({ const { assetsInclude } = config.source; if (assetsInclude) { const { dataUriLimit } = config.output; - const rule = chain.module.rule('additional-assets').test(assetsInclude); + const rule = chain.module + .rule(CHAIN_ID.RULE.ADDITIONAL_ASSETS) + .test(assetsInclude); const maxSize = typeof dataUriLimit === 'number' ? dataUriLimit : dataUriLimit.assets; @@ -140,7 +143,7 @@ export const pluginAsset = (): RsbuildPlugin => ({ rule, maxSize, filename: assetsFilename, - assetType: 'additional', + assetType: 'additional-assets', }); } });