create-react-rover
Version:
bootstrapper CLI for React App with basic conf for Caprover deployment.
80 lines (52 loc) • 2.15 kB
Markdown
# CREATE-REACT-ROVER
bootstrapper CLI for React App with basic conf for Caprover deployment.
It uses [Parcel](https://parceljs.org/) as bundler
## Getting started
You can install it globally OR use npx instead
```bash
npx create-react-rover my-fresh-app
cd my-fresh-app
npm run dev
```
After each push to `master`, GitHub Action will build the app and pushing it to a `production` branch.
**BUT** actually, it doesn't create the Caprover config files on that branch, you have to do it on your own, following this :
```bash
# Create your GitHub repo and link it...
git push -u origin master
# Wait for the action to perform and create production branch
git fetch --all
git checkout production
# copy Dockerfile, captain-definition and default.conf from master branch
git add Dockerfile captain-definition default.conf
git commit -m "youhou, basic config added !"
git push -u origin production
```
Then setup your Caprover app

## Extra dependencies
You can add some extra dependencies during the install prompt.
Currently, only the react-router one provides template files with it !
## GitHub Actions
The template project use GitHub Actions for two things:
- Running ESLint on Pull Request on `master` and `dev`
- Building the app and push it to a `production` branch once code is merged on `master`
If you do not want to use the `production` branch with the build action, to let your Caprover instance building it, **you can delete the `build.yml` file** and replace original Dockerfile with this one :
_(This one just add an automatic build command)_
```Dockerfile
# build environment
FROM node:12 as builder
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY . /usr/src/app
RUN npm install
RUN npm run build
# production environment
FROM nginx:1.13.9-alpine
RUN rm -rf /etc/nginx/conf.d
RUN mkdir -p /etc/nginx/conf.d
COPY ./default.conf /etc/nginx/conf.d/
COPY --from=builder /usr/src/app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```