Node.js utilities - projects shared configuration
Установка:
$ npm i @nodutilus/project-config --save-dev
Справка:
$ npx nodutilus help
Запустить все проверки:
$ npx nodutilus all
Пример настройки GitHub Actions из nodutilus/project-config:
name: Checks ➜ Tests ➜ Publish
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
main:
uses: nodutilus/project-actions/.github/workflows/main.yml@main
with:
eslint: true
eslintcc: true
types: true
tests: true
coverage: true
publish: true
publish_branche: main
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Конфиг для статического анализа модулей в формате ESM при помощи утилиты eslint.
.eslintrc.json
:
{
"extends": "@nodutilus"
}
$ npx nodutilus eslint
name: Checks
jobs:
checks:
steps:
- uses: npx nodutilus eslint
Для оценки сложности кода используется модуль: eslintcc. На странице модуля есть описание настроек и критериев оценки.
Для работы модуль использует настройки ESLint текущего проекта.
$ npx nodutilus eslintcc
name: Checks
jobs:
checks:
steps:
- uses: npx nodutilus eslintcc
Проверка типов в коде написанном на JavaScript при помощи TypeScript
Подробнее о проверке типов в см. статье: JS Projects Utilizing TypeScript
tsconfig.json
:
{
"extends": "@nodutilus/project-config/tsconfig"
}
$ npx nodutilus ts-check
name: Checks
jobs:
checks:
steps:
- uses: npx nodutilus ts-check
Для запуска тестов используется команда node test
или npm run test
(если настроен скрипт в package.json).
Так же можно настроить пред- и пост- обработчик запуска тестов скриптами npm run pre-test
и npm run post-test
package.json
:
{
"scripts": {
"pre-test": "node test/pre-test",
"test": "node test/index",
"post-test": "node test/post-test"
}
}
$ npx nodutilus test
name: Tests
jobs:
tests:
steps:
- uses: npx nodutilus test
Покрытие кода с использованием встроенных функций Node.js. Для настройки используется конфигурация nyc
Для оценки покрытия запускается сценарии аналогичные описанным в разделе Run tests (Покрытие оценивается только для сценария запуска тестов)
.nycrc.json
:
{
"extends": "@nodutilus/project-config/nyc"
}
$ npx nodutilus c8
name: Coverage
jobs:
coverage:
steps:
- uses: npx nodutilus c8