Skip to content
Initialise a Drupal composer setup
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Latest Version Software License Build Status Total Downloads

This plugin provides a new composer command (drupal-init) which helps in creating new Drupal installations based on composer. Most of the options are very similar to the default composer init command. There are additional options to specify a Drupal core or distro to use and the docroot.

This plugin also supports Drupal 7 installation but this option needs to be passed in from command line.

The composer.json setup that this plugin generates is inspired by drupal-composer/drupal-project (both D7 and D8 versions). One important difference is that the composer.json generated by this command does not need several scripts which are part of the drupal-composer project. All the functionality is moved to hussainweb/drupal-composer-helper. There are additional benefits like a simpler extra section and a more maintainable installation. For more details, see the drupal-composer-helper plugin.


Since this plugin provides a new composer command that should be used in an empty directory (or at least a directory without a composer.json setup), this has to be installed globally.

composer global require hussainweb/drupal-composer-init:~1.0


composer global update hussainweb/drupal-composer-init --with-dependencies


In a fresh directory, run this command to get started.

composer drupal-init

To intialise a Drupal 7 website, run the following command:

composer drupal-init --drupal-7

Specifying extensions (modules, themes, profiles)

Drupal extensions such as modules, themes, and profiles can be specified in the regular require or require-dev section of composer.json schema.

All Drupal extensions can be specified in the regular packages section with their name prefixed by 'drupal/'. For example, if you want to require panels module, specify drupal/panels.

Define your dependencies.

Would you like to define your dependencies (require) now [yes]?
Search for a package: drupal/panels
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^4.2 for drupal/panels
Search for a package: drupal/redirect
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^1.0@beta for drupal/redirect
Search for a package:

Additional Help

Run composer help drupal-init for more options.

  drupal-init [options]

      --name=NAME                Name of the package
      --description=DESCRIPTION  Description of package
      --author=AUTHOR            Author name of package
      --type[=TYPE]              Type of package (e.g. library, project, metapackage, composer-plugin) [default: "project"]
      --homepage=HOMEPAGE        Homepage of package
      --require=REQUIRE          Package to require with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0" (multiple values allowed)
      --require-dev=REQUIRE-DEV  Package to require for development with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0" (multiple values allowed)
  -c, --core=CORE                Drupal Core or distribution, e.g. drupal/core or acquia/lightning [default: "drupal/core"]
  -s, --stability=STABILITY      Minimum stability (empty or one of: stable, RC, beta, alpha, dev)
  -l, --license=LICENSE          License of package
      --repository=REPOSITORY    Add custom repositories, either by URL or using JSON arrays (multiple values allowed)
  -w, --web-dir=WEB-DIR          Specify the docroot (defaults to web) [default: "web"]
      --drupal-7                 Use Drupal 7 packagist instead of Drupal 8
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

  The drupal-init command creates a composer.json file
  usable for Drupal projects in the current directory.

  php composer.phar drupal-init


Contributions are welcome. Please use the issue queue to describe the problem. Pull requests are welcome.

You can’t perform that action at this time.