javascript - React webpack config:是否可以仅替换数组中一个插件的配置,而无需重置插件数组?
问题描述
我正在使用 react-app-rewired 插件进行构建。我有 config-overrides.js:
const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = function override(config, env) {
if( !config.plugins ) {
config.plugins = [];
}
const miniCssOptions = {
filename: "[name].[hash].css"
}
let miniCssAdded = false;
if( config.plugins.length ) {
config.plugins.forEach( p => {
if( p instanceof MiniCssExtractPlugin) {
delete p;
p = new MiniCssExtractPlugin( miniCssOptions );
miniCssAdded = true;
}
})
}
if( !miniCssAdded ) {
config.plugins.push( new MiniCssExtractPlugin( miniCssOptions ) );
}
config.plugins.push( new CleanWebpackPlugin() );
config.plugins.push( new HtmlWebpackPlugin({
title: 'Caching',
}) );
config.output.filename ='static/js/[name].[hash].js';
config.output.chunkFilename ='static/js/[name].[hash].js';
config.output.path = path.resolve(__dirname, 'build');
config.optimization.splitChunks= {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all',
}
}
}
return config;
}
我可以只替换特定插件的选项而不重置所有由 react-app 创建的插件吗?
解决方案
instanceof 接受的答案对我不起作用,当我尝试替换时webpack-livereload-plugin
,这样做:
config.plugins.forEach((p, i) => {
if(p.constructor.name === 'LiveReloadPlugin') {
config.plugins.splice(i, 1, new LiveReloadPlugin({
port: 35729
}));
}
});
推荐阅读
- python - 解析并对其进行一些更改后,为多部分电子邮件设置的内容类型应该是什么?
- intellij-idea - 地图流 - 误导 Intellij 错误/警告 - 这是一个错误吗?
- javascript - 如何更改事件的目标值(使用 Jest/Enzyme/React 进行单元测试)
- ruby-on-rails - 使用 Rails 仅触发特定操作的某些验证并设计
- html - 按钮被 div 边界切断
- php - php xml dom在结束标记前需要空格`/>`
- reactjs - 如何在使用材质 ui Skeleton 组件做出反应的循环阵列上显示多个加载骨架屏幕?
- python-3.x - Python - requests.get 后跟使用 HashLib 的文件比较
- python - 尽管已安装 matplotlib,但无法导入
- python - 文件未在烧瓶中上传