A Better Node Repository Init
A Better Node Repository Init

A Better Node Repository Init

Git Ignore

Git Attributes

Open to see file
## GITATTRIBUTES FOR WEB PROJECTS
#
# These settings are for any web project.
#
# Details per file setting:
#   text    These files should be normalized (i.e. convert CRLF to LF).
#   binary  These files are binary and should be left untouched.
#
# Note that binary is a macro for -text -diff.
######################################################################

# Auto detect
##   Handle line endings automatically for files detected as
##   text and leave all files detected as binary untouched.
##   This will handle all files NOT defined below.
*                 text=auto

# Source code
*.bash            text eol=lf
*.bat             text eol=crlf
*.cmd             text eol=crlf
*.coffee          text
*.css             text
*.htm             text diff=html
*.html            text diff=html
*.inc             text
*.ini             text
*.js              text
*.json            text
*.jsx             text
*.less            text
*.ls              text
*.map             text -diff
*.od              text
*.onlydata        text
*.php             text diff=php
*.pl              text
*.ps1             text eol=crlf
*.py              text diff=python
*.rb              text diff=ruby
*.sass            text
*.scm             text
*.scss            text diff=css
*.sh              text eol=lf
*.sql             text
*.styl            text
*.tag             text
*.ts              text
*.tsx             text
*.xml             text
*.xhtml           text diff=html

# Docker
Dockerfile        text

# Documentation
*.ipynb           text
*.markdown        text
*.md              text
*.mdwn            text
*.mdown           text
*.mkd             text
*.mkdn            text
*.mdtxt           text
*.mdtext          text
*.txt             text
AUTHORS           text
CHANGELOG         text
CHANGES           text
CONTRIBUTING      text
COPYING           text
copyright         text
*COPYRIGHT*       text
INSTALL           text
license           text
LICENSE           text
NEWS              text
readme            text
*README*          text
TODO              text

# Templates
*.dot             text
*.ejs             text
*.haml            text
*.handlebars      text
*.hbs             text
*.hbt             text
*.jade            text
*.latte           text
*.mustache        text
*.njk             text
*.phtml           text
*.tmpl            text
*.tpl             text
*.twig            text
*.vue             text

# Configs
*.cnf             text
*.conf            text
*.config          text
.editorconfig     text
.env              text
.gitattributes    text
.gitconfig        text
.htaccess         text
*.lock            text -diff
package-lock.json text -diff
*.toml            text
*.yaml            text
*.yml             text
browserslist      text
Makefile          text
makefile          text

# Heroku
Procfile          text

# Graphics
*.ai              binary
*.bmp             binary
*.eps             binary
*.gif             binary
*.gifv            binary
*.ico             binary
*.jng             binary
*.jp2             binary
*.jpg             binary
*.jpeg            binary
*.jpx             binary
*.jxr             binary
*.pdf             binary
*.png             binary
*.psb             binary
*.psd             binary
# SVG treated as an asset (binary) by default.
*.svg             text
# If you want to treat it as binary,
# use the following line instead.
# *.svg           binary
*.svgz            binary
*.tif             binary
*.tiff            binary
*.wbmp            binary
*.webp            binary

# Audio
*.kar             binary
*.m4a             binary
*.mid             binary
*.midi            binary
*.mp3             binary
*.ogg             binary
*.ra              binary

# Video
*.3gpp            binary
*.3gp             binary
*.as              binary
*.asf             binary
*.asx             binary
*.fla             binary
*.flv             binary
*.m4v             binary
*.mng             binary
*.mov             binary
*.mp4             binary
*.mpeg            binary
*.mpg             binary
*.ogv             binary
*.swc             binary
*.swf             binary
*.webm            binary

# Archives
*.7z              binary
*.gz              binary
*.jar             binary
*.rar             binary
*.tar             binary
*.zip             binary

# Fonts
*.ttf             binary
*.eot             binary
*.otf             binary
*.woff            binary
*.woff2           binary

# Executables
*.exe             binary
*.pyc             binary

# RC files (like .babelrc or .eslintrc)
*.*rc             text

# Ignore files (like .npmignore or .gitignore)
*.*ignore         text

.gitattributes

NPM

@cdiscount:registry=http://tfsdropserver.cdbdx.biz:8082/repository/npm/
.npmrc

Editor Config

# editorconfig.org
root = true

[*]
indent_style = space
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
.editorconfig

Visual Studio Code Recommended Extensions

{
  "recommendations": [
    "patbenatar.advanced-new-file",
    "formulahendry.auto-rename-tag",
    "naumovs.color-highlight",
    "carbonid1.emmet-jss",
    "irongeek.vscode-env",
    "dsznajder.es7-react-js-snippets",
    "dbaeumer.vscode-eslint",
    "wix.vscode-import-cost",
    "christian-kohler.npm-intellisense",
    "esbenp.prettier-vscode",
    "richie5um2.vscode-sort-json",
    "editorconfig.editorconfig"
  ]
}
.vscode/extensions.json
{
  "files.autoSave": "onFocusChange",
  "editor.formatOnSave": true,
  "files.eol": "\n"
}
.vscode/settings.json

Yarn VS NPM

  • yarn.lock and package.lock.json

Git Hooks

  • lint-staged and husky
  • yarn add -D husky lint-staged
    npm set-script prepare "husky install"
    yarn prepare
    yarn husky add .husky/pre-commit "lint-staged"
  • git-cz and commitlint
  • yarn add -D git-cz @commitlint/config-conventional @commitlint/cli
    yarn husky add .husky/commit-msg 'yarn commitlint --edit "$1"'
  • yarn-deduplicate
  • yarn add yarn-deduplicate

  • prettier et prettier-plugin-packagejson
  • yarn add -D prettier prettier-plugin-packagejson @cdiscount/prettier-config

    {
      "scripts": {
    		"commit": "git-cz",
        "format": "prettier --write **/*.{css,html,js,jsx,json,md}"
      },
    	"lint-staged": {
        "*.{css,html,js,jsx,json,md}": "prettier --write",
        "yarn.lock": "yarn-deduplicate yarn.lock"
      },
      "prettier": "@cdiscount/prettier-config",
    	"commitlint": {
        "extends": [
          "@commitlint/config-conventional"
        ]
      }
    }
    package.json
    _templates
    build
    coverage
    storybook-static
    
    .prettierignore

ESLint

yarn add -D typescript @cdiscount/eslint-config-cdiscount-react

{
  "scripts": {
    "lint": "eslint --cache ."
  },
	"eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest",
      "@cdiscount/cdiscount-react"
    ],
		"rules": {
			"react/react-in-jsx-scope": "off"
		}
  },
  "eslintIgnore": [
    "_templates",
    "build",
    "storybook-static",
    "coverage"
  ]
}
package.json

Readme

# Web App

> _A wonderful web app that enhance feature X for our customer Y._

## Getting Started

Install dependencies and start dev server:

```shell
yarn
yarn start
```

Run the test suite by:

```shell
yarn test
```

Develop your feature, and commit with:

```shell
yarn commit
```

Enjoy! 🎉

## Create React App

Powered by [CRA](./docs/CRA.md).
README.md