eslint-plugin-amocrm-plugin

0.0.13 • Public • Published

eslint-plugin-amocrm-plugin

Плагин для проверки архитектурных правил.

Installation

Для начала нужно установить eslint в проект ESLint:

npm i eslint --save-dev

Затем установить сам плагин eslint-plugin-amocrm-plugin:

npm install eslint-plugin-amocrm-plugin --save-dev

Usage

Добавьте amocrm-plugin в список плагинов в конфигурационный файл .eslintrc:

{
    "plugins": [
        "amocrm-plugin"
    ]
}

Затем настройте правила, которые вы хотите использовать, в разделе правил:

{
    "rules": {
        "amocrm-plugin/path-checker": [
          'error',
          {
            lang: 'ru',
            rootDir: 'react',
            checkingLayers: ['components', 'pages'],
          },
        ],
        'amocrm-plugin/public-api': [
          'error',
          {
            lang: 'ru',
            checkingLayers: ['components', 'pages'],
          },
        ],
        'amocrm-plugin/import-rule': [
          'error',
          {
            lang: 'ru',
            rootDir: 'react',
            layers: {
              pages: [
                'components',
                'ui',
                'utils',
                'hooks',
                'api',
                'constants',
                'hoc',
                'types',
              ],
              components: [
                'components',
                'ui',
                'utils',
                'hooks',
                'api',
                'constants',
                'hoc',
                'types',
              ],
              ui: ['ui', 'utils', 'hooks', 'api', 'constants', 'hoc', 'types'],
              utils: [
                'ui',
                'utils',
                'hooks',
                'api',
                'constants',
                'hoc',
                'types',
              ],
              hooks: [
                'ui',
                'utils',
                'hooks',
                'api',
                'constants',
                'hoc',
                'types',
              ],
              api: ['ui', 'utils', 'hooks', 'api', 'constants', 'hoc', 'types'],
              constants: [
                'ui',
                'utils',
                'hooks',
                'api',
                'constants',
                'hoc',
                'types',
              ],
              hoc: ['ui', 'utils', 'hooks', 'api', 'constants', 'hoc', 'types'],
              types: [
                'ui',
                'utils',
                'hooks',
                'api',
                'constants',
                'hoc',
                'types',
              ],
            },
            availableLayers: {
              pages: 'pages',
              components: 'components',
              ui: 'ui',
              api: 'api',
              hooks: 'hooks',
              utils: 'utils',
              hoc: 'hoc',
              constants: 'constants',
              types: 'types',
            },
            ignoreImportPatterns: [],
          },
        ],
    }
}

Rules

path-checker

Правило проверяет, что внутри слайсов используются относительные импорты.

Параметры

  • lang - Язык ошибок
  • rootDir - Название директории, в которой лежат слои
  • checkingLayers - Слои, в которых работает это правило

public-api

Правило проверяет, что все импорты происходят из public api.

Параметры

  • lang - Язык ошибок
  • checkingLayers - Слои, в которых работает это правило

import-rule

Правило проверяет, что все импорты происходят из нижележащих слоёв.

Параметры

  • lang - Язык ошибок
  • rootDir - Название директории, в которой лежат слои
  • layers
    • Ключ объекта - название слоя
    • Значение объекта - слои, которые в него можно импортировать
  • availableLayers - Слои, в которых проверяется это правило
  • ignoreImportPatterns - Список регулярных выражений с названиями директорий, которые можно импортировать из вышестоящего слоя

Как разрабатывать npm пакет

Создаём линку npm пакета

В cd /eslint-plugin-amocrm-plugin прописываем:

npm link

В package.json проекта, в котором будем использовать плагин, задаём путь до директории:

{
    "devDependencies": {
        "eslint-plugin-amocrm-plugin": "/Users/artemkolesnikov/Documents/amoCRM/work/eslint-plugin-amocrm-plugin",
    }
}

Далее в проекте нужно рестартнуть сервер eslint.

Если необходимо внести правки в существующее правило, нужно в /tests/название_правила.js добавить тесты для новых правок и запускать их скриптом:

npm run test

Для дебага тестов можно выбрасывать ошибки throw Error(), чтобы при выполнении тестов смотреть логи.

Добавление нового правила

Если нужно добавить новое правило, то в директории /rules/название_правила.js добавляем файл.

Ссылки

Документация по созданию eslint плагина

Dependencies (2)

Dev Dependencies (6)

Package Sidebar

Install

npm i eslint-plugin-amocrm-plugin

Weekly Downloads

1

Version

0.0.13

License

ISC

Unpacked Size

60.1 kB

Total Files

13

Last publish

Collaborators

  • artemkolesnikov