在Python和使用create-react-app创建的React项目之间共享配置文件

时间:2017-11-25 14:23:16

标签: javascript python reactjs

我需要在Python和React代码之间共享一个配置文件 - 我可以使用JSON,它很容易导入每个,但我更愿意能够添加注释,打开和关闭部件等等。 / p>

这样做的好方法是什么?

1 个答案:

答案 0 :(得分:0)

我一直在尝试HJSON (human-readable JSON),但是如果没有弹出create-react-app并修改webpack配置以使用raw-loader,那么将像HJSON这样的文本文件捆绑到React构建中将无效AFAIK ,或使用react-app-rewired做类似的事情。

我使用react-app-rewired -

结束了

首先将这些库添加到React项目中 -

yarn add react-app-rewired
yarn add hjson
yarn add hjson-loader

然后将config-overrides.js文件添加到React项目的顶层 - 这将动态修改webpack配置 -

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中将“react-scripts”替换为“react-app-rewired”:

"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)

并且在React中可以说

import options from '../assets/options.hjson'; // a json object