Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://zendframework.github.io/zend-component-installer/

Composer post-package-(un)install scripts for modules and components.
https://zendframework.github.io/zend-component-installer/

Last synced: 3 months ago
JSON representation

Composer post-package-(un)install scripts for modules and components.

Awesome Lists containing this project

README

        

# Component Installer for Zend Framework 3 and Expressive Applications
[![Build Status](https://secure.travis-ci.org/zendframework/zend-component-installer.svg?branch=master)](https://secure.travis-ci.org/zendframework/zend-component-installer)
[![Coverage Status](https://coveralls.io/repos/github/zendframework/zend-component-installer/badge.svg?branch=master)](https://coveralls.io/github/zendframework/zend-component-installer?branch=master)

> ## Repository abandoned 2019-12-31
>
> This repository has moved to [laminas/laminas-component-installer](https://github.com/laminas/laminas-component-installer).

This repository contains the Composer plugin class `Zend\ComponentInstaller\ComponentInstaller`,
which provides Composer event hooks for the events:

- post-package-install
- post-package-uninstall

## Via Composer global install

To install the utility for use with all projects you use:

```bash
$ composer global require zendframework/zend-component-installer
```

## Per project installation

To install the utility for use with a specific project already managed by
composer:

```bash
$ composer require zendframework/zend-component-installer
```

## Writing packages that utilize the installer

Packages can opt-in to the workflow from zend-component-installer by defining
one or more of the following keys under the `extra.zf` configuration in their
`composer.json` file:

```json
"extra": {
"zf": {
"component": "Component\\Namespace",
"config-provider": "Classname\\For\\ConfigProvider",
"module": "Module\\Namespace"
}
}
```

- A **component** is for use specifically with zend-mvc + zend-modulemanager;
a `Module` class **must** be present in the namespace associated with it.
The setting indicates a low-level component that should be injected to the top
of the modules list of one of:
- `config/application.config.php`
- `config/modules.config.php`
- `config/development.config.php`

- A **module** is for use specifically with zend-mvc + zend-modulemanager;
a `Module` class **must** be present in the namespace associated with it.
The setting indicates a userland or third-party module that should be injected
to the bottom of the modules list of one of:
- `config/application.config.php`
- `config/modules.config.php`
- `config/development.config.php`

- A **config-provider** is for use with applications that utilize
[expressive-config-manager](https://github.com/mtymek/expressive-config-manager)
or [zend-config-aggregator](https://github.com/zendframework/zend-config-aggregator)
(which may or may not be Expressive applications). The class listed must be an
invokable that returns an array of configuration, and will be injected at the
top of:
- `config/config.php`

## Whitelisting packages to install automatically

At the project level, you can mark packages that expose configuration providers
and modules that you want to automatically inject via the `component-whitelist`
key:

```json
"extra": {
"zf": {
"component-whitelist": [
"zendframework/zend-expressive",
"zendframework/zend-expressive-helpers"
]
}
}
```

This configuration must be made at the root package level (the package
_consuming_ configuration providing packages).