PHPackages                             jelix/composer-module-setup - 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. jelix/composer-module-setup

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

jelix/composer-module-setup
===========================

Plugin for Composer to declare Jelix modules automatically into a Jelix application

1.1.0(3y ago)1138.1k↓33.4%1MITPHPCI failing

Since Apr 27Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/jelix/composer-module-setup)[ Packagist](https://packagist.org/packages/jelix/composer-module-setup)[ Docs](http://jelix.org)[ RSS](/packages/jelix-composer-module-setup/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (4)Versions (26)Used By (1)

composer-module-setup
=====================

[](#composer-module-setup)

A plugin for Composer to declare automatically jelix modules into a jelix application

For Jelix 1.6.9 and higher.

Authors who provide their modules via Composer, should declare directories containing modules or plugins. It will avoid the developer to declare them into his application.init.php (Jelix 1.7) or in the configuration (Jelix 1.6.9+).

installation
------------

[](#installation)

In the composer.json of your application, declare the plugin and authorize the plugin to be executed by Composer.

```
{
    "require": {
        "jelix/composer-module-setup": "^1.0.0"
    },
    "config": {
        "allow-plugins": {
            "jelix/composer-module-setup": true
        }
    }
}
```

Declaring modules and plugins into a package
--------------------------------------------

[](#declaring-modules-and-plugins-into-a-package)

Authors who provide their modules via Composer, should declare directories containing modules or plugins. It will avoid the developer to declare them into his application.init.php.

To declare them, he should add information into the extra/jelix object in composer.json:

```
{
    "extra": {
        "jelix": {
        }
    }
}
```

In this object, he can add three type of information:

- `modules-dir`, an array containing directories where modules can be found. These paths will be added to the jelix configuration parameter `modulesPath`.
- `plugins-dir`, an array containing directories where plugins can be found. These paths will be added to the jelix configuration parameter `pluginsPath`.
- `modules`, an array containing modules directories. These paths will be added into the `modules` section of the jelix configuration as `.path=`.

For instance, in the repository, if modules are in a "modules/" directory, the author should add this information into his composer.json:

```
{
    "extra": {
        "jelix": {
            "modules-dir" : [
                "modules/"
            ],
            "plugins-dir" : [
                "plugins/"
            ],
            "modules" : [
                "mymoduleaaa/",
                "mymodulebbb/"
            ]
        }
    }
}
```

Declaring modules and plugins at the application level
------------------------------------------------------

[](#declaring-modules-and-plugins-at-the-application-level)

Application developers could declare also their modules and plugins in the same way, in the composer.json of the application:

```
{
    "require": {
        "jelix/composer-module-setup": "^1.0.0"
    },
    "config": {
        "allow-plugins": {
          "jelix/composer-module-setup": true
        }
    },
    "extra": {
        "jelix": {
            "modules-dir" : [
                "myapp/modules/"
            ],
            "plugins-dir" : [
                "myapp/plugins/"
            ],
            "modules" : [
                 "mainmodule/"
            ]
        }
    }
}
```

Enable modules on entrypoints automatically (jelix 1.6 only)
------------------------------------------------------------

[](#enable-modules-on-entrypoints-automatically-jelix-16-only)

In module packages, you can indicate on which entrypoint the module should be enabled.

```
{
    "extra": {
        "jelix": {
            "autoconfig-access-16" : {
                "__any_app" : {
                    "": {
                        "__global": 1
                    }
                },
                "app/identifiant1" : {
                    "": {
                        "__global": 1,
                        "index" : 2,
                        "admin" : 1
                    }
                }
            }
        }
    }
}
```

`app/identifiant1` must be the application id that is indicated into the `project.xml`file ( `id` attribute of the `` element).

In the composer.json of the application, you can also indicate the same informations for each module, when a module does not provide an `"autoconfig-access-16"` configuration

```
{
    "extra": {
        "jelix": {
            "modules-autoconfig-access-16" : {
                "package/name1" : {
                    "": {
                        "__global": 1,
                        "index" : 2,
                        "admin" : 1
                    }
                },
                "package/name2" : {
                    "": {
                        "__global": 1,
                        "index" : 2,
                        "admin" : 1
                    }
                }
            }
        }
    }
}
```

If the package has already an `"autoconfig-access-16"` configuration, this `modules-autoconfig-access-16` configuration has priority over it.

Indicating the path to the app or the configuration directory
-------------------------------------------------------------

[](#indicating-the-path-to-the-app-or-the-configuration-directory)

At the application level, the composer.json may content the path to the application directory (the directory containing the project.xml etc), and the path to the `var/config` directory.

It is useful when the directory containing the composer.json file is not the application directory and/or if the var/config is not in the application directory

So you must set these paths into `app-dir` and `var-config-dir`. Path should be relative to the composer.json directory, or can be absolute.

```
{
    "require": {
        "jelix/composer-module-setup": "^1.1.0"
    },
    "extra": {
        "jelix": {
            "app-dir" : "myapp/",
            "var-config-dir" : "/var/lib/myapp/config/",
            "modules-dir" : []
        }
    }
}
```

In Jelix 1.7 and higher
-----------------------

[](#in-jelix-17-and-higher)

In order to use modules declared into a composer.json file, you should include the `jelix_app_path.php` file into your `application.init.php`:

```
