Webpack 插件
适用于 Webpack 插件 的实用函数
const {
pluginByName,
getPlugin,
addPlugins,
removePlugins,
} = require('@craco/craco');
函数
pluginByName
pluginByName(targetPluginName: string): PluginMatcher
返回一个 plugin matcher 函数,与其他插件实用函数一起使用,用于将名称与现有插件匹配。此名称为插件的构造函数 (plugin.constructor.name
)。
getPlugin
getPlugin(webpackConfig: WebpackConfig, matcher: PluginMatcher)
从 Webpack 配置中提取 matcher 返回为 true 的第一个插件。
返回类型
{
isFound: boolean;
match: WebpackPlugin;
}
用法
const { getPlugin, pluginByName } = require('@craco/craco');
const { isFound, match } = getPlugin(
webpackConfig,
pluginByName('ESLintWebpackPlugin')
);
if (isFound) {
// do stuff...
}
addPlugins
addPlugins(webpackConfig: WebpackConfig, plugins: [WebpackPlugin | [WebpackPlugin, 'append' | 'prepend']]): void
向 Webpack 配置中添加新插件。插件的添加方式与 CRACO 配置中使用的语法 相同。
用法
const { addPlugins } = require('@craco/craco');
const myNewWebpackPlugin = require.resolve('ESLintWebpackPlugin');
addPlugins(webpackConfig, [myNewWebpackPlugin]);
addPlugins(webpackConfig, [[myNewWebpackPlugin, 'append']]);
addPlugins(webpackConfig, [[myNewWebpackPlugin, 'prepend']]);
removePlugins
removePlugins(webpackConfig: WebpackConfig, matcher: PluginMatcher)
从 Webpack 配置中移除 matcher 返回为 true 的所有插件。
返回类型
{
hasRemovedAny: boolean;
removedCount: number;
}
用法
const { removePlugins, pluginByName } = require('@craco/craco');
removePlugins(webpackConfig, pluginByName('ESLintWebpackPlugin'));
引用
WebpackConfig
请参见 https://webpack.js.cn/configuration/。
PluginMatcher
如果提供的插件满足特定条件,加载器匹配器应返回真。该函数的类型如下
(plugin: WebpackPlugin) => boolean;