PHPackages                             it-nsk/dev-tools - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. it-nsk/dev-tools

ActiveLibrary

it-nsk/dev-tools
================

Shared PHP CS Fixer, PHPStan and Git hook commands for PHP projects

v0.1.1(today)00MITShellPHP ^8.3CI passing

Since Jul 23Pushed todayCompare

[ Source](https://github.com/it-nsk/dev-scripts)[ Packagist](https://packagist.org/packages/it-nsk/dev-tools)[ RSS](/packages/it-nsk-dev-tools/feed)WikiDiscussions dev Synced today

READMEChangelogDependencies (5)Versions (4)Used By (0)

Dev Tools
=========

[](#dev-tools)

Общие PHP CS Fixer, PHPStan и Git hooks для PHP/Symfony-проектов. Пакет хранит логику инструментов в одном месте, а каждый проект задаёт только пути и режим запуска в `.dev-tools.yaml`.

Возможности
-----------

[](#возможности)

- единый набор правил PHP CS Fixer;
- общая конфигурация PHPStan для Symfony и Doctrine;
- запуск инструментов локально или через Docker Compose;
- pre-commit hook, исправляющий только staged PHP-файлы;
- готовые Makefile-цели без копирования команд между проектами.

Требования
----------

[](#требования)

- PHP 8.3 или новее;
- Composer 2;
- Git — для установки и выполнения hook;
- Docker Compose — только для Docker-режима.

Установка
---------

[](#установка)

```
composer require --dev it-nsk/dev-tools
```

Создайте `.dev-tools.yaml`:

```
cs_fixer:
    mode: local
    paths: [src]

phpstan:
    mode: local
    paths: [src]

hooks:
    mode: local
```

Проверьте подключение:

```
vendor/bin/dev-tools help
vendor/bin/dev-tools cs:check
vendor/bin/dev-tools phpstan
```

Docker
------

[](#docker)

Инструменты можно запускать в сервисе приложения:

```
cs_fixer:
    mode: docker
    paths: [src]

phpstan:
    mode: docker
    paths: [src]

hooks:
    mode: docker

docker:
    command: [docker, compose]
    service: app
    env_files: [.env, .env.local]
```

Режим из YAML можно переопределить для одного запуска:

```
vendor/bin/dev-tools cs:check --mode=local
vendor/bin/dev-tools cs:check --mode=docker
vendor/bin/dev-tools phpstan --mode=local
vendor/bin/dev-tools phpstan --mode=docker
```

Команды
-------

[](#команды)

```
dev-tools cs:check [--mode=local|docker]
dev-tools cs:fix [--mode=local|docker]
dev-tools phpstan [path...] [--mode=local|docker]
dev-tools hooks:install [--mode=local|docker]

```

`cs:check` только показывает нарушения. `cs:fix` изменяет настроенные файлы.

Git hook
--------

[](#git-hook)

```
vendor/bin/dev-tools hooks:install --mode=local
# либо
vendor/bin/dev-tools hooks:install --mode=docker
```

Hook копируется в `.git/hooks/pre-commit`, форматирует staged PHP-файлы и снова добавляет их в Git index. Если PHP-файл добавлен частично, после форматирования он станет полностью staged.

Makefile
--------

[](#makefile)

Подключите общие цели:

```
-include vendor/it-nsk/dev-tools/make/dev-tools.mk
```

Доступные команды:

```
make cs-check
make cs-check-local
make cs-check-docker
make cs-fix
make cs-fix-local
make cs-fix-docker
make phpstan
make phpstan-local
make phpstan-docker
make phpstan-files FILES="src/Foo.php src/Bar.php"
make hooks-local
make hooks-docker
```

Проектная конфигурация PHPStan
------------------------------

[](#проектная-конфигурация-phpstan)

Для baseline или проектных исключений укажите:

```
phpstan:
    config: phpstan.dist.neon
```

И подключите общий конфиг:

```
includes:
    - vendor/it-nsk/dev-tools/config/phpstan.neon
    - phpstan-baseline.neon
```

Не подключайте расширения Symfony и Doctrine повторно: они уже входят в общий конфиг.

Разработка
----------

[](#разработка)

```
composer install
composer test
composer test-docker-e2e
composer test-dev-tools-global-e2e
composer test-dev-tools-global-docker-e2e
```

Local E2E создаёт временный Composer/Git-проект и проверяет fixer, PHPStan и hook. Docker E2E повторяет сценарий в PHP 8.3-контейнере и удаляет созданные ресурсы после завершения.

Подробности:

- [интеграция и настройки](docs/quality-tools.md);
- [архитектура и назначение файлов](docs/architecture.md);

Глобальный Docker CLI
---------------------

[](#глобальный-docker-cli)

Глобальный `dev-tools` устанавливается один раз и доступен до запуска Docker и `composer install`:

```
curl -fsSL https://raw.githubusercontent.com/it-nsk/dev-scripts/ITNSK-37-docker-migration/install.sh | sh
```

По умолчанию бинарник устанавливается в `/usr/local/bin`. Общие команды:

```
dev-tools init
dev-tools up
dev-tools down
dev-tools build
dev-tools logs
dev-tools shell
dev-tools dump:download
dev-tools dump:import
dev-tools cs:check
dev-tools phpstan
dev-tools hooks:install
dev-tools migrate
dev-tools self-update
```

Уникальные настройки проекта задаются переменными `BGT_*` в `.env` и при необходимости переопределяются в `.env.local`. Dockerfile, конфигурация Nginx и `docker-compose.example.yml` остаются в репозитории проекта.

Лицензия
--------

[](#лицензия)

[MIT](LICENSE)

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 60% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/473182?v=4)[Maksim Borisov](/maintainers/multifinger)[@multifinger](https://github.com/multifinger)

---

Top Contributors

[![SemyonBorodin](https://avatars.githubusercontent.com/u/165477487?v=4)](https://github.com/SemyonBorodin "SemyonBorodin (3 commits)")[![multifinger](https://avatars.githubusercontent.com/u/473182?v=4)](https://github.com/multifinger "multifinger (1 commits)")[![samsonborodin99](https://avatars.githubusercontent.com/u/301665560?v=4)](https://github.com/samsonborodin99 "samsonborodin99 (1 commits)")

### Embed Badge

![Health badge](/badges/it-nsk-dev-tools/health.svg)

```
[![Health](https://phpackages.com/badges/it-nsk-dev-tools/health.svg)](https://phpackages.com/packages/it-nsk-dev-tools)
```

###  Alternatives

[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k16](/packages/tempest-framework)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1189.8k](/packages/rcsofttech-audit-trail-bundle)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k57](/packages/friendsoftypo3-content-blocks)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1616.4k14](/packages/2lenet-crudit-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
