这是 Darko 答案的扩展和改进版本。我创建它的主要目的是为那些对this comment 中提到的解决方案不完全满意并且没有耐心挖掘this comment 以更好的方式解决问题的人节省时间。
这种“hacky”方法的主要思想是动态重写标准react-scripts 的webpack 配置并将其注入到原始脚本中。
为此,您需要从npmjs.org 安装rewire 包,如下所示:
npm install rewire --save-dev
然后您创建单独的构建脚本,该脚本将“包装”原始 react build 脚本并确保它会解除更正的 webpack 配置。常规方法是将此文件保存在./scripts 文件夹中。所以我们称之为./scripts/build.js。内容:
const rewire = require('rewire');
const path = require('path');
// Pointing to file which we want to re-wire — this is original build script
const defaults = rewire('react-scripts/scripts/build.js');
// Getting configuration from original build script
let config = defaults.__get__('config');
// If we want to move build result into a different folder, we can do that!
// Please note: that should be an absolute path!
config.output.path = path.join(path.dirname(__dirname), 'custom/target/folder');
// If we want to rename resulting bundle file to not have hashes, we can do that!
config.output.filename = 'custom-bundle-name.js';
// And the last thing: disabling splitting
config.optimization.splitChunks = {
cacheGroups: {
default: false,
},
};
config.optimization.runtimeChunk = false;
然后,我们应该在packages.json 中使用这个构建脚本而不是标准脚本,如下所示:
...
"scripts": {
"start": "react-scripts start",
"build": "node ./scripts/build.js",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
...