Совместное использование файла конфигурации между Python и проектом React, созданным с помощью create-реагировать-приложение
Мне нужно поделиться файлом конфигурации между Python и кодом React - я мог бы использовать JSON, который легко импортировать в каждый, но я бы предпочел иметь возможность добавлять комментарии, включать и выключать детали и т. Д.
Каков хороший способ сделать что-то подобное?
1 ответ
Я пробовал HJSON (понятный человеку JSON), но встраивание текстового файла, такого как HJSON, в сборку React не работает AFAIK без удаления create-реакции-приложения и изменения конфигурации webpack для использования raw-loader или использования response-app-rewired, чтобы сделать что-то подобное.
Я завелся с помощью response-app-rewired -
Сначала добавьте эти библиотеки в проект React -
yarn add react-app-rewired
yarn add hjson
yarn add hjson-loader
Затем добавьте config-overrides.js
файл на верхний уровень проекта React - это изменит конфигурацию веб-пакета на лету -
const { getLoader } = require('react-app-rewired');
function rewireAddHjson(config, env, options = {}) {
const hjsonExtension = /\.hjson$/;
const excludeRule = getLoader(config.module.rules, rule => rule.exclude);
excludeRule.exclude.push(hjsonExtension);
const hjsonRule = {
test: hjsonExtension,
loader: 'hjson-loader',
};
config.module.rules.push(hjsonRule);
return config;
}
module.exports = function override(config, env) {
config = rewireAddHjson(config, env);
return config;
};
И в package.json
замените "ответные скрипты" на "реагирующие приложения":
"scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test --env=jsdom",
+ "start": "react-app-rewired start",
+ "build": "react-app-rewired build",
+ "test": "react-app-rewired test --env=jsdom"
}
Тогда в Python вы можете сказать
import hjson
with open('app/client/src/assets/options.hjson') as f:
options = hjson.load(f)
и в Реакте могу сказать
import options from '../assets/options.hjson'; // a json object