Поиск по сайту:

Как использовать GitLab для обмена частными правилами ESLint с вашей командой


ESLint статически анализирует JavaScript для выявления проблем до запуска кода. Он также может находить и исправлять стилистические несоответствия, помогая вашему проекту соответствовать любым руководствам по стилю, которым вы следуете.

Создание полной конфигурации ESLint может занять пару часов. Доступно более сотни правил, и вам нужно решить, какие из них будет использовать ваша команда. ESLint поставляется с «рекомендуемым» набором правил передовой практики; многие другие полезные правила не включены по умолчанию.

В этом руководстве мы покажем, как один раз написать конфигурацию ESLint и поделиться ею с вашей командой, используя частный реестр npm в GitLab. Вы сможете повторно использовать конфигурацию ESLint во всех своих проектах, сославшись на свой пакет реестра. Мы пропустим основы — предполагается, что у вас есть некоторый опыт создания новых групп и проектов GitLab.

Начиная

ESLint упрощает использование общих правил. Любой пакет npm может стать плагином ESLint. Точка входа пакета должна экспортировать объект конфигурации ESLint.

Начните с создания нового проекта GitLab для хранения вашей конфигурации ESLint. Клонируйте репозиторий на свой компьютер. Затем добавьте package.json для описания вашего пакета npm:

{
    "name": "@example-group/eslint-config",
    "author": "Example Author",
    "description": "An example description",
    "version": "1.1.0",
    "main": ".eslintrc.js",
    "peerDependencies": {
        "eslint": ">=7"
    }
}

Обратите внимание на формат пакета name. Это должно соответствовать имени пространства имен GitLab вашего проекта (@group/project). Символ @ создает область пакета. Мы воспользуемся этим позже, чтобы указать npm получать пакеты @group из нашего частного реестра npm. Если у вас сложное имя пространства имен, обратитесь к документации GitLab, чтобы определить правильное имя области для использования.

В поле main должен быть указан файл, который будет содержать вашу конфигурацию ESLint. В этой статье мы используем .eslintrc.js. ESLint указывается как одноранговая зависимость. Это означает, что проекты, использующие вашу библиотеку, должны включать ESLint в свои собственные зависимости.

Создание вашей конфигурации ESLint

Затем создайте фактический файл конфигурации ESLint. Убедитесь, что вы используете файл, указанный как main в package.json.

Вот простой пример:

module.exports = {
    "extends": ["eslint:recommended"],
    "rules": {
        "comma-dangle": ["error", "never"],
        "indent": ["error", "tab", {"SwitchCase": 1}],
        "max-classes-per-file": ["error", 1]
    }
};

Эта конфигурация основана на встроенных правилах ESLint recommended. Это дает вам хорошую отправную точку для наложения собственных правил. Мы добавили три дополнительных правила для запрета висячих запятых, ограничения каждого файла одним именованным классом и принудительного использования табуляции вместо пробелов.

Аутентификация в вашем реестре npm

Теперь вы готовы опубликовать свой пакет в личном реестре npm в GitLab. Сначала вам нужно создать токен API GitLab — щелкните значок своего профиля в правом верхнем углу, а затем пункт меню «Настройки». Выберите «Токены доступа» на боковой панели. Создайте новый токен доступа с областями действия read_registry и write_registry. Запишите значение токена, которое будет отображаться — вы не сможете получить его в будущем.

Далее вам нужно подключить npm к вашему реестру:

npm config set @example-group:registry https://gitlab.example.com/api/v4/packages/npm/
npm config set -- '//gitlab.example.com/api/v4/packages/npm/:_authToken' "$API_TOKEN"

Замените $API_TOKEN на токен доступа к API, который вы создали в GitLab. Первая команда настраивает npm для получения любого пакета в области @example-group из вашего частного реестра. Вторая команда предоставляет npm токен проверки подлинности реестра.

npm позволяет добавлять любое количество областей пакетов. Для каждой частной области требуется собственный токен проверки подлинности. Если вы работаете в нескольких группах GitLab, вам необходимо определить область действия для каждой из них.

Публикация в реестре npm GitLab

Настроенная выше аутентификация применяется к уровню экземпляра реестра GitLab npm. Это идеально подходит для установки зависимостей, поскольку вы можете получить доступ к пакетам в любой группе, к которой у вас есть доступ, без ручного указания идентификаторов проектов.

Для публикации пакетов необходимо использовать конечную точку API уровня проекта. Для этого требуется отдельная аутентификация в npm. Вы можете повторно использовать один и тот же токен API, если у него есть разрешения write_registry для вашего проекта:

npm config set -- '//gitlab.heron-web.com/api/v4/projects/<id>/packages/npm/:_authToken

Замените <id> в URL-адресе реестра на идентификатор проекта GitLab, в котором вы публикуете. Вы можете найти это на главной странице проекта рядом с его названием.

Затем обновите файл package.json с помощью объекта publishConfig. Это указывает npm publish отправить пакет в ваш реестр, а не в общедоступный реестр на npmjs.com.

{
    "publishConfig": {
        "@example-group:registry": "https://gitlab.example.com/api/v4/projects/<id>/packages/npm/"
    }
}

Запустите npm publish, чтобы опубликовать свой пакет в реестре GitLab! Вы должны увидеть свой пакет в разделе «Пакеты и реестры» в интерфейсе GitLab.

Установка пакетов из вашего реестра

Команды mpm, такие как npm install, npm ci и npm outdated, должны работать без дополнительной настройки. npm автоматически обратится к GitLab, чтобы определить последнюю версию ваших приватных пакетов. Затем файлы будут загружены непосредственно из вашего реестра.

Для установки пакетов из общедоступных проектов аутентификация не требуется. Если ваш проект частный, вам необходимо предоставить npm токен GitLab API, как описано в предыдущих разделах. Использование конечной точки на уровне проекта позволит вам установить пакеты этого проекта; конечная точка уровня экземпляра позволяет вам установить любой пакет, к которому у вас есть доступ.

Вот пример package.json для проекта, использующего вашу конфигурацию ESLint:

{
  "name": "demo",
  "version": "1.1.0",
  "devDependencies": {
    "@example-group/eslint-config": "^1.1",
    "eslint": "^7.2"
  },
  "scripts": {
    "lint": "eslint ."
  },
  "eslintConfig": {
    "extends": [
      "@example-group/eslint-config"
    ]
    }
  }
}

Ваш пакет ESLint должен быть добавлен как зависимость для разработки, чтобы он не устанавливался без необходимости. Добавьте блок eslintConfig, чтобы настроить ESLint для вашего пакета. Теперь вы можете запустить ESLint со своей пользовательской конфигурацией, используя npm run lint.

Использование ваших пакетов в сборках CI

Вам не нужно делать ничего особенного, чтобы использовать ваши частные пакеты в конвейере CI. Вам нужно будет обновить свой CI-скрипт, чтобы войти в реестр GitLab npm. Обычно лучше всего создать токен доступа на уровне проекта с областями реестра, а не использовать собственный токен на уровне пользователя.

Используйте команды, показанные выше, для настройки аутентификации npm в вашем конвейере. После этого ваша сборка сможет запускать npm ci для загрузки ваших зависимостей и запуска ESLint.

Вот пример файла .gitlab-ci.yml:

stages:
  - lint

lint:
  stage: lint
  image: node:14
  script:
    - npm config set @example-group:registry https://gitlab.example.com/api/v4/packages/npm/
    - npm config set -- '//gitlab.example.com/api/v4/packages/npm/:_authToken' "${API_TOKEN}"
    - npm ci
    - npm run lint -- --cache
  cache:
    key: $CI_COMMIT_REF_SLUG
    paths:
      - .eslintcache
      - node_modules/

Конвейер содержит один этап, который проходит аутентификацию в частном реестре, устанавливает зависимости и, наконец, вызывает ESLint с помощью скрипта lint. Это было настроено ранее при создании файла package.json проекта. Чтобы получить значение API_TOKEN в конвейер, создайте переменную среды в GitLab. Это позволяет безопасно предоставлять токен без жесткого кодирования его в файле.

Если вы планируете публиковать пакеты из CI, помните, что каждому релизу нужен свой уникальный номер версии. Вам нужно будет разработать стратегию обновления поля version в вашем package.json перед тем, как вы опубликуете npm. Невозможно перезаписать существующие теги пакета.

Краткое содержание

Объединение системы плагинов ESLint с частными реестрами npm GitLab позволяет вам делиться одной конфигурацией со всеми членами вашей команды. Вы можете перестать дублировать правила ESLint в своих проектах, повысив удобство и ремонтопригодность.

Единственное препятствие заключается в одноразовой аутентификации npm, когда новому пользователю необходимо установить ваш пакет. Рассмотрите возможность обновления README вашего проекта, чтобы включить в него руководство по входу в личный реестр. Аутентификация будет сохраняться до тех пор, пока ваш токен GitLab API не будет удален.




Все права защищены. © Linux-Console.net • 2019-2024