Create new minimal webpack/babel react project with router and screens structure.
You can create a project by installing it globally or using npx
:
npm i -g react-struct
andreact-struct [-n your-project-name]
npx react-struct [-n your-project-name]
This will create project with name react-struct
. Pass -n your-project-name
to name it differently.
After this, just go into your project and install npm modules cd your-project-name && npm i
.
After installation is done and you installed npm modules, you can open up the project in your favorite editor.
To be ready for your new project install following extensions:
- https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint: this will make editor complain when you write ugly code (options are set in
.eslintrc.yaml
) - https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest: with this extension you can see whether your tests work or not while you type
- https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode:
⌥ + SHIFT + F
to prettify your code (options are set in.prettierrc.yaml
)
After starting so many React projects I always feel repeating myself with same or similar boilerplate code that it became annoying. So I decided to create this boilerplate and maintain it with new practices I come up with.
Lately I started to like "screens" folder structure explained here.
This package follows the same logic.
Routes config is managed in ./src/config/routes
which is then transformed into list of <Route>
components from ./src/utils/utils
. Routes are then spread in ./src/index.js
.
It's just a simple app with react-router with Home, About, Blog, Post /post/:id
empty pages, Layout and Header components.
For starting a project I suggest just emptying src/
folder and start your own app. Source code is there only to demonstrate screens hierarchy.
Webpack, Babel, ESLint, Prettier, Jest, Husky, lint-staged.
npm start
starts webpack-dev-servernpm test
runs testsnpm run lint
runs lintnpm run clean
cleans thedist
foldernpm run dev
builds for developmentnpm run build
builds for production