@watchmen/cra-config
v1.1.2
Published
rich configuration for create-react-app
Downloads
4
Maintainers
Readme
cra-config
enable configuration containing complex javascript objects for create-react-app based applications
create-react-app has support for flat environment variables around a fixed set of predefined environments corrosponding to managed values of NODE_ENV
, this may be sufficient for your use-cases.
if your requirements involve environments outside of those supported and/or you wish to work with rich javascript objects for configuration, then this package may be of value to you.
usage
create a folder called
config
at the root of your project and place files in it with the format and naming conventions described below.in your
package.json
scripts, invoke the binary to generate the value for theREACT_APP_CONFIG
environment-variable like so:
"scripts": {
"start": "REACT_APP_CONFIG=$(cra-config) react-scripts start",
"build": "REACT_APP_CONFIG=$(cra-config) react-scripts build",
"test": "NODE_ENV=test REACT_APP_CONFIG=$(cra-config) react-scripts test",
"eject": "react-scripts eject"
}
- in your code, import the
cra-config
module as below to reference the configuration values:
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import config from 'cra-config';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
<p>
CONFIG = {config.someStringKey} // <--------------------- ta-dah!
</p>
</header>
</div>
);
}
}
export default App;
format
module.exports = {
someStringKey: "some-value",
someIntegerKey: 123,
someBooleanKey: true,
someObjectKey: {
someNestedStringKey: "some-nested-value"
},
someArrayKey: ["red", "white", "blue"]
};
{environment-name}.js
this file would contain values to be used when the environment-variable NODE_ENV
is set to environment-name
.
for example,
lab.js
would be used when theNODE_ENV
environment-variable is set tolab
default.js
this file would contain values to be used across all environments, or those which should be defaulted if not provided in environment specific files.
the key/values in this file would always be present unless overridden by an environment specific file
local.js
this would be used to customize default values for local usage
add
config/local.js
to your.gitignore
file