@z-brain/eslint-plugin-z-brain
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

Z-Brain ESLint Rules

Build status NPM version Code Coverage License: GPL v3

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
or
npm 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

Documentation & repos

Development notes

Quick Start

cd /Users/volumes/code/z-brain
git clone git@github.com:z-brain/eslint-plugin-z-brain.git
cd eslint-plugin-z-brain
yarn install

How to use NodeJS version from the .nvmrc

  1. Install NVM

  2. 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. NVM Loader demo

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

  1. yarn run build
  2. Then you can install a local package build from the root repo dir (not dist) path file:.../eslint-plugin-z-brain.

Author


Anton Korniychuk

Package Sidebar

Install

npm i @z-brain/eslint-plugin-z-brain

Weekly Downloads

0

Version

0.0.5

License

GPL-3.0

Unpacked Size

58.5 kB

Total Files

25

Last publish

Collaborators

  • ankor