ACT's preferred configs for TypeScript, Prettier, ESLint, CommitLint, and MarkdownLint.
Install this package, husky, and lint-staged as dev dependencies:
npm install --save-dev @actinc/eslint-config husky lint-staged
Configure husky by adding the following to your package.json
file:
...
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
...
To configure CommitLint, create a
commitlint.config.js
file in the root of your project that contains the
following:
module.exports = require('@actinc/eslint-config/commitlint.config');
This will allow CommitLint to discover the configuration this repository
provides from within your node_modules
folder.
Next, add the following to your package.json
file so that CommitLint will
check for infractions in your commit messages every time you create a new
commit:
...
"husky": {
"hooks": {
...
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
...
}
},
...
To configure ESLint, add the following to your
.eslintrc.js
and package.json
files. This will allow ESLint to discover the
configuration this repository provides from within your node_modules
folder,
and will check your *.js
, *.ts
, and *.tsx
files for infractions every
time you create a new commit:
module.exports = {
extends: [
// For front-end (React / Next.js) projects:
'@actinc/eslint-config'
// For back-end (Nest.js) projects:
'@actinc/eslint-config/nest'
]
...
// Add any custom rules/plugins/configuration here
}
...
"lint-staged": {
...
"*.{js,jsx,ts,tsx}": "eslint",
...
},
...
To configure MarkdownLint, add the
following to your package.json
file. This will allow MarkdownLint to discover
the configuration this repository provides from within your node_modules
folder, and will check your *.md
files for infractions every time you create
a new commit:
...
"lint-staged": {
...
"*.{md}": "markdownlint --config node_modules/@actinc/eslint-config/markdownlint.config.json",
...
},
...
To configure prettier, create a prettier.config.js
file in the root of your project that contains the following:
module.exports = require('@actinc/eslint-config/prettier.config');
This will allow Prettier to discover the configuration this repository
provides from within your node_modules
folder.
Next, add the following to your package.json
file so that prettier will check
your files for infractions every time you create a new commit:
...
"lint-staged": {
...
"*.{js,json,md,ts,tsx}": [
"prettier --write",
"git add"
]
...
},
...
To configure TypeScript, add the following
to your tsconfig.json
file. This will allow TypeScript to discover the
configuration this repository provides from within your node_modules
folder:
...
"extends": "node_modules/@actinc/eslint-config/tsconfig.json",
...
There are several npm scripts at your disposal during local development. Here are some of the more important ones:
Script | Description |
---|---|
npm test | Run all tests. |
Upon merge, semantic-release
will scan the main
branch for new commits and will use those commits to choose
a new version for this library and write automated changelog documentation. Thus,
it is important that we accurately capture what type of development we are
doing via our commit messages.
- For changes to documentation, use the
docs
tag:
git commit -m "docs: Updated documentation to clarify XYZ"
- For patches, use
fix
:
git commit -m "fix: Updated an eslint rule to fix false positives in downstream projects"
- For new functionality, use
feat
:
git commit -m "feat: Added new eslint rules around async/await and promises"