Webpack Asset 模块
Webpack asset module 的实用函数
const {
assetModuleByName,
getAssetModule,
getAssetModules,
addBeforeAssetModule,
addBeforeAssetModules,
addAfterAssetModule,
addAfterAssetModules,
removeAssetModules,
} = require('@craco/craco');
函数
assetModuleByName
assetModuleByName(targetAssetModuleName: string): AssetModuleMatcher
返回一个 asset module matcher 函数,用于与其他 asset module 实用函数一起使用,以将名称与现有的 asset module 进行匹配。
getAssetModule
getAssetModule(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher)
从 Webpack 配置中获取匹配器返回 true 的第一个asset 模块。
返回类型
{
isFound: boolean;
match: {
rule: Rule;
index: number;
}
}
用法
const { getAssetModule, assetModuleByName } = require('@craco/craco');
const { isFound, match } = getAssetModule(
webpackConfig,
assetModuleByName('asset/source')
);
if (isFound) {
// do stuff...
}
getAssetModules
getAssetModules(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher)
从 Webpack 配置中获取匹配器返回 true 的所有asset 模块。
返回类型
{
hasFoundAny: boolean;
matches: [
{
rule: Rule;
index: number;
}
]
}
用法
const { getAssetModules, assetModuleByName } = require('@craco/craco');
const { hasFoundAny, matches } = getAssetModules(
webpackConfig,
assetModuleByName('asset/inline')
);
if (hasFoundAny) {
matches.forEach((x) => {
// do stuff...
});
}
addBeforeAssetModule
addBeforeAssetModule(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher, newAssetModule: Rule)
在匹配器返回 true 的资产模块之前添加一个新的资产模块,该模块在 Webpack 配置中。
返回类型
{
isAdded: boolean;
}
用法
const { addBeforeAssetModule, assetModuleByName } = require('@craco/craco');
const myNewWebpackAssetModule = {
test: /\.png/,
type: 'asset/resource',
};
addBeforeAssetModule(
webpackConfig,
assetModuleByName('asset/source'),
myNewWebpackAssetModule
);
addBeforeAssetModules
addBeforeAssetModules(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher, newAssetModule: 规则)
在 Webpack 配置中,向 matcher 返回 true 的所有资产模块之前添加新的资产模块。
返回类型
{
isAdded: boolean;
addedCount: number;
}
用法
const { addBeforeAssetModules, assetModuleByName } = require('@craco/craco');
const myNewWebpackAssetModule = {
test: /\.png/,
type: 'asset/resource',
};
addBeforeAssetModules(
webpackConfig,
assetModuleByName('asset/source'),
myNewWebpackAssetModule
);
addAfterAssetModule
addAfterAssetModule(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher, newAssetModule: 规则)
在 Webpack 配置中,向 matcher 返回 true 的所有资产模块之后添加新的资产模块。
返回类型
{
isAdded: boolean;
}
用法
const { addAfterAssetModule, assetModuleByName } = require('@craco/craco');
const myNewWebpackAssetModule = {
test: /\.png/,
type: 'asset/resource',
};
addAfterAssetModule(
webpackConfig,
assetModuleByName('asset/source'),
myNewWebpackAssetModule
);
addAfterAssetModules
addAfterAssetModules(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher, newAssetModule: 规则)
在 Webpack 配置中,向 matcher 返回 true 的所有资产模块之后添加新的资产模块。
返回类型
{
isAdded: boolean;
addedCount: number;
}
用法
const { addAfterAssetModules, assetModuleByName } = require('@craco/craco');
const myNewWebpackAssetModule = {
test: /\.png/,
type: 'asset/resource',
};
addAfterAssetModules(
webpackConfig,
assetModuleByName('asset/source'),
myNewWebpackAssetModule
);
removeAssetModules
removeAssetModules(webpackConfig: WebpackConfig, matcher: AssetModuleMatcher)
从 Webpack 配置中移除 matcher 返回 true 的所有资产模块。
返回类型
{
hasRemovedAny: boolean;
removedCount: number;
}
用法
const { removeAssetModules, assetModuleByName } = require('@craco/craco');
removeAssetModules(webpackConfig, assetModuleByName('asset/source'));
引用
WebpackConfig
请参阅 https://webpack.js.cn/configuration/。
AssetModuleMatcher
如果提供的资产模块(在一项规则中)匹配指定条件,则资产模块匹配器应返回 true。函数的类型为以下类型
(rule: Rule) => boolean;