cra-universal
Version:
Create React App Universal CLI
147 lines (96 loc) • 5.59 kB
Markdown
[](https://opencollective.com/cra-universal) [](https://badge.fury.io/js/cra-universal)
<p align="center">
<img width="500" height="350" alt="zero" src="https://user-images.githubusercontent.com/7658554/42420108-261a1c5a-82eb-11e8-8ac0-ce2e0245e0ff.png">
</p>
Create React App companion for universal app. No eject, zero config with customization, supports string and node stream API
> [Live Demo](https://codesandbox.io/s/cra-universal-demo-9wnwb7) | [Official Doc](https://antonybudianto.github.io/cra-universal)
- **No [eject](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#npm-run-eject)** needed!
- **Zero config** by default and **customizable**
- **Server-side rendering** for your SEO
- **Code-splitting** that works universally
- The core middleware is fully **unit-tested**
- Works alongside `react-scripts`, not as replacement
- Node >= 14.17.5 LTS recommended
- npx is required
```sh
create-react-app myapp
cd myapp
yarn add -D cra-universal
yarn add @cra-express/core express@4.18.1
```
```sh
yarn add -D cra-universal
yarn add @cra-express/core express@4.18.1
yarn run cra-universal init
```
Please update your render method on `src/index.js`
```js
// before
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
// after
ReactDOM.hydrateRoot(document.getElementById('root'), <App />);
```
```sh
npm start
npx cra-universal start
```
```sh
npx cra-universal build
```
1. First, follow the Production guide mentioned above.
2. Since the bundle used [Webpack Node Externals](https://www.npmjs.com/package/webpack-node-externals), you need to run `npm install --production` on the copied `/dist`, but this time you don't need to install its `devDependencies`
3. Use process manager like [PM2](https://github.com/Unitech/pm2) to run your server, your run target is ./dist/server/bundle.js
- Create React App https://github.com/facebook/create-react-app
- Thanks for https://github.com/ayroblu/ssr-create-react-app-v2 for the base!
If you like this project, please kindly support it by becoming a patron at my [Patreon](https://www.patreon.com/antonybudianto) page. Thanks!
- Stan Day (stan@auraside.com)
## Contributors
### Code Contributors
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
<a href="https://github.com/antonybudianto/cra-universal/graphs/contributors"><img src="https://opencollective.com/cra-universal/contributors.svg?width=890&button=false" /></a>
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/cra-universal/contribute)]
<a href="https://opencollective.com/cra-universal"><img src="https://opencollective.com/cra-universal/individuals.svg?width=890"></a>
Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/cra-universal/contribute)]
<a href="https://opencollective.com/cra-universal/organization/0/website"><img src="https://opencollective.com/cra-universal/organization/0/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/1/website"><img src="https://opencollective.com/cra-universal/organization/1/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/2/website"><img src="https://opencollective.com/cra-universal/organization/2/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/3/website"><img src="https://opencollective.com/cra-universal/organization/3/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/4/website"><img src="https://opencollective.com/cra-universal/organization/4/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/5/website"><img src="https://opencollective.com/cra-universal/organization/5/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/6/website"><img src="https://opencollective.com/cra-universal/organization/6/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/7/website"><img src="https://opencollective.com/cra-universal/organization/7/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/8/website"><img src="https://opencollective.com/cra-universal/organization/8/avatar.svg"></a>
<a href="https://opencollective.com/cra-universal/organization/9/website"><img src="https://opencollective.com/cra-universal/organization/9/avatar.svg"></a>
MIT