Skip to content

Latest commit

 

History

History
69 lines (58 loc) · 2.35 KB

file-structure-naming.md

File metadata and controls

69 lines (58 loc) · 2.35 KB

React / File structure and naming

See also:

Example project structure

.
├── COPYRIGHT.txt
├── package.json
├── public
│   ├── assets
│   │   └── image.jpg
│   ├── favicon.ico
│   └── index.html
├── README.md
├── src
│   ├── styles
│   │   └── layout.css
│   ├── components
│   │   ├── App
│   │   │   ├── App.css or App.style.js
│   │   │   ├── App.js
│   │   │   ├── App.test.js
│   │   │   └── App.test.js.snap
│   │   └── Header
│   │       ├── Header.css or Header.style.js
│   │       ├── Header.js
│   │       ├── Header.test.js
│   │       └── Header.spec.js.snap
│   └── utils
│       ├── testing
│       │   └── TestHelpers.js
│       └── proxy
│           └── GetProxyURL.js
└── webpack.config.js

Casing

  • Category folders use snake_case
    • e.g. utils, components
  • Component folders, files and class names use UpperCamelCase
    • e.g. LeagueSelector, UrlBuilder
  • Variables, functions use lowerCamelCase
    • e.g. fetchLeagues, fetchItems

Special folders

  • src/components
  • src/utils
    • Non-UI / non-component / utility features not tightly linked to the specific project (e.g. Api, CorsProxy)
  • src/resources
    • Machine readable, hardcoded data (e.g. JSON)
  • src/styles
    • style files applied to the whole project

Grouping

  • Files are grouped by functionality (components) in folders
  • A component folder contains all related code (e.g. js, styles, tests). See also: Jest conventions
  • Jest snapshot location can be configured in v24+
  • Files can be logically groupped into more folders (e.g. selectors/LeagueSelector and selectors/ItemTypeSelector)

Etc