跳至所需内容

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;

WebpackPlugin

请参阅 https://webpack.js.cn/plugins/