PHPackages                             ifcastle/package-installer - 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. ifcastle/package-installer

ActiveComposer-plugin[Utility &amp; Helpers](/categories/utility)

ifcastle/package-installer
==========================

A Composer plugin for install IfCastle components.

v0.3.0(1y ago)1131MITPHP

Since Aug 10Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/IFCastle/package-installer)[ Packagist](https://packagist.org/packages/ifcastle/package-installer)[ RSS](/packages/ifcastle-package-installer/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (6)Versions (12)Used By (1)

IfCastle package installer [![PHP Composer](https://github.com/EdmondDantes/ifcastle-package-installer/actions/workflows/php.yml/badge.svg)](https://github.com/EdmondDantes/ifcastle-package-installer/actions/workflows/php.yml)
==================================================================================================================================================================================================================================

[](#ifcastle-package-installer-)

This Composer plugin allows automatic configuration of `Bootloader` and `ServiceManager` for the `IFCastle` framework.

Installation
------------

[](#installation)

To install the package, run the following command:

```
composer require ifcastle/package-installer
```

Usage
-----

[](#usage)

The package uses the description from `composer.json` to configure the application's `BootloaderManager`. The package **adds**, **updates**, or **removes** a package from the `Bootloader` zone.

To use the package, add the following configuration to the `composer.json` file:

```
{
  "extra": {
    "ifcastle-installer": {
      "package": {
        "name": "configurator",
        "isActive": true,
        "mainConfig": {
          "section1": {
            "comment": "This is a comment\nThe section of the main configuration file",
            "config": {
              "key1": "value1",
              "key2": "value2"
            }
          },
          "section2": {
              "config": {
              "key3": "value3",
              "key4": "value4"
              }
          }
        },
        "runtimeTags": ["tag1", "tag2"],
        "excludeTags": ["tag3", "tag4"],
        "bootloaders": [
          "IfCastle\\Configurator\\ConfigApplication"
        ],
        "applications": [
          "console",
          "web"
        ]
      }
    }
  }
}
```

or

```
{
  "extra": {
    "ifcastle-installer": {
      "package": {
        "name": "configurator",
        "groups": [
          {
            "isActive": true,
            "bootloaders": ["list of classes"],
            "applications": ["application1", "application2"],
            "runtimeTags": ["tag1", "tag2"],
            "excludeTags": ["tag3", "tag4"],
            "group": "configurator"
          }
        ]
      }
    }
  }
}
```

- `ifcastle-installer` - Name of an installer section.
- `package` - Main package section.
- `name` - Name of the package.
- `mainConfig` - Main configuration section.
- `bootloaders` - List of bootloader classes which will be added to the `Bootloader` zone.
- `applications` - A list of strings, tags that indicate the type of application for which the specified `Bootloader` will be applied.
- `groups` - A list of groups that contain the following fields:
    - `isActive` - A boolean value that indicates whether the group is active.
    - `bootloaders` - List of bootloader classes which will be added to the `Bootloader` zone.
    - `applications` - A list of strings, tags that indicate the type of application for which the specified `Bootloader` will be applied.
    - `runtimeTags` - A list of tags that must be defined at the application's startup for the Bootloader to include the specified classes in the loading stage.
    - `excludeTags` - A list of tags that must not be defined at the application's startup for the Bootloader
    - `group` - A string that indicates the group name.

Main configuration
------------------

[](#main-configuration)

The application has a main configuration file, typically named `main.ini` or `main.toml`. Using the mainConfig section, you can define default configuration blocks that will be added to the file by the installer if they are not already defined.

Example:

```
 "mainConfig": {
          "section1": {
            "comment": "This is a comment\nThe section of the main configuration file",
            "config": {
              "key1": "value1",
              "key2": "value2"
            }
          }
```

Next keys are available:

- `section` - A string that indicates the section name.
- `comment` - A string that will be added as a comment to the configuration block.
- `config` - An array of key-value pairs that will be added to the configuration block.

Install services
----------------

[](#install-services)

Component may contain services that need to be registered with the ServiceManager. In this case, use the following configuration in the composer.json file.

```
{
  "extra": {
    "ifcastle-installer": {
      "services": [
        {
          "name": "service1",
          "isActive": true,
          "class": "IfCastle\\Configurator\\Service1",
          "config": {
            "key1": "value1",
            "key2": "value2"
          },
          "tags": ["tag1", "tag2"],
          "excludeTags": ["tag3", "tag4"]
        }
      ]
    }
  }
}
```

Nodes:

- `services` - A list of services that contain the following fields:
- `name` - Name of the service.
- `isActive` - A boolean value that indicates whether the service is active.
- `class` - Class name of the service.

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance60

Regular maintenance activity

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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 ~10 days

Total

11

Last Release

538d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0bbbb16082fa2d9cb757d6e84fbac3c18c135b08111bf01611dfbd5123a77f68?d=identicon)[EdmondIf](/maintainers/EdmondIf)

---

Top Contributors

[![EdmondDantes](https://avatars.githubusercontent.com/u/1571649?v=4)](https://github.com/EdmondDantes "EdmondDantes (12 commits)")

---

Tags

plugincomposerpackageinstallerifcastle

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/ifcastle-package-installer/health.svg)

```
[![Health](https://phpackages.com/badges/ifcastle-package-installer/health.svg)](https://phpackages.com/packages/ifcastle-package-installer)
```

###  Alternatives

[ergebnis/composer-normalize

Provides a composer plugin for normalizing composer.json.

1.1k37.3M2.1k](/packages/ergebnis-composer-normalize)[craftcms/plugin-installer

Craft CMS Plugin Installer

283.3M4](/packages/craftcms-plugin-installer)[infinum/eightshift-libs

WordPress libs developed by Eightshift team to use in modern WordPress.

63118.9k3](/packages/infinum-eightshift-libs)[sllh/composer-lint

Extends the composer validate command with extra rules

14214.6k7](/packages/sllh-composer-lint)

PHPackages © 2026

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