The Bounce style guide, formatter, and commit validator.
- Single source of truth for all linting, formatting, commit message validation, changelog generator, semantic versioning
- Minimal config
- Compatible with all Bounce Typescript projects (Express, React, React Native)
- Remove any installations of ESLint or Prettier & all associated config files (keep your
.eslintignore
and.prettierignore
files) - Install with npm
# npm
npm install bounce-in-style -D
# yarn
yarn add bounce-in-style -D
- Fresh install of Husky (version 6 has some major changes, ensure to remove existing Husky installations prior to starting)
npm uninstall husky
npm install husky -D
npx husky install
- Add this "prepare" script to package.json so that husky gets setup on
npm install
:
{
"scripts": {
"prepare": "husky install"
}
}
- Add git hook with Husky
Lint and format
# react projects
npx husky add .husky/pre-commit "npx bis --staged --react"
# react-native projects
npx husky add .husky/pre-commit "npx bis --staged --react-native"
# all other projects (ie backend)
npx husky add .husky/pre-commit "npx bis --staged"
Commit validation
npx husky add .husky/commit-msg "npx commitlint --edit \"\$1\" --config ./node_modules/commitlint-config-bouncedinc/index.js"
# with npm
npx bis -h
# Usage
# $ npx bis [flags]
# Options
# --help Print help message.
# -r, --react Use for React projects.
# -n, --react-native Use for React Native projects.
# -s, --staged Only run on staged files. Useful when adding as a git hook.
# -c, --check Only check files. Skips running Prettier and doesn't use the --fix flag for ESLint.
# This option does not support the --staged flag.
To add linting capabilities to VSCode
- copy the
.vscode
folder at the root of your project - (if using React) replace the
configFile
path with./node_modules/eslint-config-bouncedinc-react/index.js
- (if using React Native) replace the
configFile
path with./node_modules/eslint-config-bouncedinc-react-native/index.js
All Bounce projects should have a git hook (either pre-commit or pre-push) for running tsc
.
We don't recommend extending the config when using internal to Bounce, instead a PR should be made into this repo to add the change for everyone. If you do need to extend the config, you can treat it like any other eslint config. The simplest way to do so can be seen in the .eslintrc
file at the root of this repo.
- Setup semantic versioning & changelog generator
- Add eslint-plugin-cypress to react config