Awesome Create React App
A collection of awesome things regarding Create React App ecosystem.
Please feel free to file an issue or suggest articles, videos and other useful resources via Pull Requests.
Create React App General Resources
Most discussed / interested issues
- Plugin System #670
- src/node_modules as official solution for absolute imports #1065
- Add runtime error overlay #1101
- (closed) Optional Sass Support #78
- (closed) Preprocess future-proof CSS features #130
- (closed) A global CLI for running a single component #645
- (closed) Proposal: 'configurator' field in package.json #215
Tools
Articles
- Why I Love Create React App
- Learning React With Create-React-App (Part 1)
- Learning React With Create-React-App (Part 2)
- Learning React With Create-React-App (Part 3)
- Learning React With Create-React-App (Part 4)
- Using create-react-app with React Router + Express.js
- How to Create ClojureScript App
- How to Create Elm App
- Surge VS GitHub Pages: How to deploy a create-react-app project
- How to get "create-react-app" to work with your API
- Adding Hot Module Reloading to Create React App
- Tweaking Configuration For React Scripts In Create React App
- Maintaining a fork of react-scripts as an alternative to ejecting
- Using Rekit to quickly create a React app
- Getting Started with Create React App and AVA
- React / Create React App — But I don’t wanna Eject
- "Customizing" create-react-app
- Jumpstate + Redux + Create-React-App — No dispatching or action-creators required!
- Configure create-react-app without ejecting ⏏
- How to deploy a create-react-app (nginx)
- Netlify: Deploy React Apps in less than 30 Seconds
- Zero Configuration Deployment for React apps with Zeit’s now and now-deploy
- Heroku: Deploying React with Zero Configuration
- React Storybooks meets Create React App
- How to build an Electron app using create-react-app. No webpack configuration or “ejecting” necessary
- How you can use react-toolbox with create-react-app
- How to use antd with create-react-app
Video tutorials
- Getting started with React with Create React App
- Create React App - what's all the fuss about?
- Create React App with ExpressJS and Now
- Migrate to Create React App
Alternatives
FAQ
How to use env config
Your project can consume variables declared in your environment as if they were declared locally in your JS files. By default you will have NODE_ENV defined for you, and any other environment variables starting with REACT_APP_. These environment variables will be defined for you on process.env. For example, having an environment variable named REACT_APP_SECRET_CODE will be exposed in your JS as process.env.REACT_APP_SECRET_CODE, in addition to process.env.NODE_ENV
To define permanent environment variables, create a file called .env in the root of your project
How to use multiple env configs
Right now it is possible installing dotenv and updating npm scripts:
"scripts": {
"start": "node -r dotenv/config ./node_modules/.bin/react-scripts start dotenv_config_path=development.env",
"build": "node -r dotenv/config ./node_modules/.bin/react-scripts build dotenv_config_path=production.env"
}
There is the feature request with implemented Pull Request - Support different env configs:
Read different .env
configs according to current command (start / test / build).
- Read
dev.env
when npm start and npm test - Read
prod.env
when npm run build
By default (if custom config does not exist) read env variables from .env file.
How to change dev server port
Add PORT
env variable. Use cross-env to set environment variables across platforms.
"scripts": {
"start": "cross-env PORT=9001 react-scripts start"
}
If you use .env
config - just add PORT
variable:
PORT=9001
How to setup root dir for require (webpack module.resolveDirectory analog)?
Official solution: create node_modules
at src
directory - src/node_modules as official solution for absolute imports #1065
Another way - use NODE_PATH
env variable. It is a directory name to be resolved to the current directory as well as its ancestors, and searched for modules. It is resolve.modulesDirectories for webpack. More details at node official documentation "Loading from the global folders"
"scripts": {
"start": "cross-env NODE_PATH=src/scripts react-scripts start"
}
If you use .env
config - just add NODE_PATH
variable:
NODE_PATH=src/scripts
How to use custom babel presets
Create React App doesn’t support decorator syntax at the moment.
There are PR Adding support for custom babel configuration #1357. If PR is merged then these features will be available:
- Decorators
- Features from stage-0 preset
- Any new babel features and presets
@dan_abramov wrote:
So we do not recommend to use babel presets besides the babel-preset-react-app that is already configured at Create React App.
How to change webpack config?
How to add custom webpack plugins?
"scripts": {
"build:custom": "node scripts/webpack"
}
// scripts/webpack.js
const webpack = require('react-scripts/node_modules/webpack');
const craWebpackConfig = require('react-scripts/config/webpack.config.prod');
const OfflinePlugin = require('offline-plugin');
const config = {
...craWebpackConfig,
plugins: [
...craWebpackConfig.plugins,
new OfflinePlugin()
]
};
webpack(config).run(function(err, stats) {
if (err !== null) {
console.log('done');
} else {
console.log(err);
}
});
Note: this is officially unsupported and can break in any version.
Also note that this is just webpack config extending, not react-scripts build
. There is not beautiful console logs, comparison of the build size and other react-scitpts build
command features.
Such approach (workaround) also helps to resolve problems when need to build/pubish a single component. There is the related issue - How to publish components without ejecting #796. Just override webpack entry point and output.
Always remember that using not usual loaders (like yaml, markdown, dsv loaders etc.), additional plugins and features from drafts and proposals makes your application more complex, maybe with dead syntax features and it is become impossible to migrate from current webpack configuration.