Я разработал приложение, используя Create React App
. У меня есть config.js
в моей папке public
. Я пытаюсь использовать его как внешний файл в webpack.config.js
, чтобы после его построения я мог изменить значения в моем config.js
, и они отразятся в моем приложении на refre sh. Но он собирается, когда я строю свой проект.
Я использую react-app-rewired
, чтобы переопределить мой CRA webpack.config.js
.
Вот мой config-overrides.js
:
module.exports = function override(config, env) {
const isEnvProduction = env === 'production';
const isEnvDevelopment = env === 'development';
//do stuff with the webpack config...
config.plugins.push(
new WrapperPlugin({
test: /\.js$/, // only wrap output of bundle files with '.js' extension
footer: '\n \n// build: '+commitDate+' '+commitHash
}),
);
config.optimization= {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
output: {
comments: /build/,
},
compress: {
// drop_console: isEnvProduction,
},
},
extractComments: true,
}),
],
};
config.externals = {
'config': JSON.stringify(require('./public/config')),
}
config.output.filename = isEnvProduction ? 'static/js/build.js' : isEnvDevelopment && 'static/js/build.js';
config.output.chunkFilename = isEnvProduction ? 'static/js/build.chunk.js' : isEnvDevelopment && 'static/js/build.chunk.js';
return config;
Вот мой config.js
:
module.exports = {
sideBar: {
showGroupsOption : true,
},
calendar: {
showOthersBookings: true,
showOthersBookingDetails: false
}
}
Я импортирую файл, используя import config from 'config';
в моих компонентах , Это прекрасно работает.
Когда я запускаю npm run build
, запускается react-app-rewired build
, и файл config.js
связывается вместе со сборкой и не требуется во время выполнения. (Я попытался изменить значения в конфигурации. js, и они не отражаются в моем приложении на refre sh).
Что я делаю не так?
А также, когда Я делаю сборку, мой файл config.js
будет присутствовать в моей папке сборки (build/config.js
). Поэтому, когда я пытаюсь изменить свой config-overrides.js
на
config.externals = {
'config': isEnvProduction ? JSON.stringify(require('./config')) : JSON.stringify(require('./public/config')),
}
и пытаюсь его построить, происходит сбой, потому что ./config
не существует. Как мне изменить его, чтобы он ссылался на build/config.js
(эта папка сборки не будет существовать, пока я не сделаю сборку).