PHPackages                             denis-korchagin95/fs-control - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. denis-korchagin95/fs-control

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

denis-korchagin95/fs-control
============================

fs-control helps you to keep your directory tree under control.

v1.4.1(2w ago)126.6k↓64.9%1MITPHPPHP &gt;=8.1CI passing

Since Dec 2Pushed 2w ago1 watchersCompare

[ Source](https://github.com/denis-korchagin95/fs-control)[ Packagist](https://packagist.org/packages/denis-korchagin95/fs-control)[ RSS](/packages/denis-korchagin95-fs-control/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (8)Dependencies (24)Versions (10)Used By (0)

fs-control
==========

[](#fs-control)

fs-control is an analyzer for your directory tree to allow you to keep it under control.

Maybe you have some agreements in your project and rules to the directory tree, but actually in real life it may not work on 100%. This tool can allow you to define your variant of configuration and help you to fix that and control.

If your mindset changes about the directory tree, okay, it's cool. Just edit configuration and fs-control will care about for you. Also set you free from some "review battles" and allow you to concentrate on more important things.

Getting started
---------------

[](#getting-started)

You can install fs-control via Composer using the main `composer.json`:

```
composer require --dev denis-korchagin95/fs-control
```

Or you may to install fs-control via Composer in a dedicated `composer.json`, for example, in the `tools/fs-control` directory:

```
mkdir -p tools/fs-control
composer require --working-dir=tools/fs-control denis-korchagin95/fs-control
```

Usage
-----

[](#usage)

You need to create a configuration file for a whole project or just its small part.

The basic configuration file may look like:

```
fs_control:
  paths:
    - ./example-fs/Container
  exclude_paths:
    - ./example-fs/Container/Infrastructure/ParamConverter/Check
  groups:
    Application: ~
    Domain: ~
    Infrastructure: ~
  bindings:
    $/Application: Application
    $/Domain: Domain
    $/Infrastructure: Infrastructure
  rules:
    Entity:
      - Domain
    ParamConverter:
      - Infrastructure
    Command:
      - Application
```

You can analyze the project using a configuration file for some project.

```
./vendor/bin/fs-control example-fs-config.yaml
```

See [usage](./docs/usage.md), [tool concepts](./docs/concepts.md), [built-in extension list](./docs/built_in_extensions.md), and [config reference](./docs/config_reference.md) documentation for more examples and details.

If you need to solve your specific problems that are not supported by the tool, you can [create a custom extension](./docs/create_custom_extension.md).

Contribute
----------

[](#contribute)

Any contributions are welcome. This repository is open to pull requests.

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance96

Actively maintained with recent releases

Popularity29

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 97.9% 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 ~184 days

Recently: every ~322 days

Total

8

Last Release

20d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9b399d85d08a80f9ecff68bb0858dd8009b514706ce8dda2fc0d6db53fcf9bad?d=identicon)[Denis Korchagin](/maintainers/Denis%20Korchagin)

---

Top Contributors

[![denis-korchagin95](https://avatars.githubusercontent.com/u/36280142?v=4)](https://github.com/denis-korchagin95 "denis-korchagin95 (47 commits)")[![Mitrichius](https://avatars.githubusercontent.com/u/7609386?v=4)](https://github.com/Mitrichius "Mitrichius (1 commits)")

---

Tags

directory-treefs-control

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/denis-korchagin95-fs-control/health.svg)

```
[![Health](https://phpackages.com/badges/denis-korchagin95-fs-control/health.svg)](https://phpackages.com/packages/denis-korchagin95-fs-control)
```

###  Alternatives

[phpactor/phpactor

PHP refactoring and intellisense tool for text editors

1.9k17.1k1](/packages/phpactor-phpactor)[friendsoftypo3/content-blocks

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

103519.9k53](/packages/friendsoftypo3-content-blocks)[flow-php/etl

PHP ETL - Extract Transform Load - Abstraction

378604.0k104](/packages/flow-php-etl)[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)[blackfire/player

A powerful web crawler and web scraper with Blackfire support

49617.1k](/packages/blackfire-player)[altis/local-server

Local Server module for Altis

18221.6k3](/packages/altis-local-server)

PHPackages © 2026

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