@z-brain/eslint-plugin-z-brain
v0.0.5
Published
Custom ESLint (TypeScript) rules that are being used in Z-Brain projects. Some of them are project-specific, some are helpful anywhere.
Downloads
3
Maintainers
Readme
Z-Brain ESLint Rules
Custom ESLint (TypeScript) rules that are being used in Z-Brain projects. Some of them are project-specific, some are helpful anywhere.
Notice: If you have any propositions feel free to make an issue or create a pull request.
How to use
Installing
yarn add @z-brain/eslint-plugin-z-brain
ornpm i -s @z-brain/eslint-plugin-z-brain
Adding to .eslintrc
The plugin import and adding the recommended rule set.
module.exports = {
env: {
es6: true,
},
extends: ["plugin:@z-brain/z-brain/recommended"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: ["./tsconfig.json"],
sourceType: "module",
ecmaVersion: "es2019",
},
plugins: ["@z-brain/z-brain"],
};
Configuring specific rules:
module.exports = {
rules: {
'@z-brain/z-brain/empty-array-check-with-absent-length': 'warn',
},
};
Rules
empty-array-check-with-absent-length
Short description:
Protects against forgotten '.length' when checking an array for emptiness
Detailed description:
The condition result being never changed according to current typings.
Add .length
or if you're writing a check for a falsy-value please add an appropriate type to the array definition.
Examples
See all cases & examples in the unit tests.
function foo(ids: number[]) {
if (ids.length) return; // GOOD
if (ids) return; // BAD
}
// GOOD
function foo(ids: number[] | null | undefined) {
if (ids) return;
}
function foo(ids: number[] | boolean) {
if (ids) return;
}
function foo(ids?: number[]) {
if (ids) return;
}
// BAD
function foo(ids: number[]) {
if (ids) return; // in accordance with typings 'ids' is always trusty-value
}
Helpful links
Articles
- Simplest rule: Create a custom eslint rule with typescript
- More details: How I learned to love the AST
- The most complex article: How to write an ESLint plugin in TypeScript
Documentation & repos
- Awesome official guide @typescript-eslint/experimental-utils · GitHub
- Lots of good & simple examples: eslint-plugin-nestjs-typed package - GitHub
- Official ESLint custom rules guide
- Description of all packages in @typescript-eslint · GitHub
- Using the Compiler API · microsoft/TypeScript Wiki · GitHub
- More about type checking via TS Compiler API
Development notes
Quick Start
cd /Users/volumes/code/z-brain
git clone [email protected]:z-brain/eslint-plugin-z-brain.git
cd eslint-plugin-z-brain
yarn install
How to use NodeJS version from the .nvmrc
Install NVM
Use
.nvmrc
file one of the next ways:- Execute
nvm use
in the project root directory - Install NVM Loader and your .nvmrc will be loaded automatically when you open the terminal.
- Execute
How to make a build
yarn run build
How to run lint
Notice: linter isn't configured yet
- Just show problems
yarn run lint
- Fix problems if it is possible
yarn run lint:fix
How to run tests
All tests
yarn run test
yarn run test:watch
Specific tests
yarn run test src/my.spec.ts
yarn run test:watch src/my.spec.ts
How to build and publish NPM package
NPM Token: npm_UVqN......qTww
CI configuration details here: .github/workflows/npmpublish.yml
yarn run ci \
&& npm version patch -m 'Update package version version to %s' \
&& npm publish --access public \
&& git push --no-verify && git push --tags --no-verify
How to build package to local installation
yarn run build
- Then you can install a local package build from the root repo dir (not
dist
) pathfile:.../eslint-plugin-z-brain
.
Author
| Anton Korniychuk | | :---: |