Skip to content

Latest commit

 

History

History
186 lines (143 loc) · 4.83 KB

README.md

File metadata and controls

186 lines (143 loc) · 4.83 KB

ESLint Config

Version Build Status License Downloads

ACT's preferred configs for TypeScript, Prettier, ESLint, CommitLint, and MarkdownLint.

Getting Started

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"
  }
},
...

Configure CommitLint

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",
    ...
  }
},
...

Configure ESLint

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",
  ...
},
...

Configure MarkdownLint

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",
  ...
},
...

Configure Prettier

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"
  ]
  ...
},
...

Configure TypeScript

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",
...

Local Development

npm Scripts

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.

Release Process

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"