By Daniel Sipos

Quick Tip: Set up Drupal 8 with Composer!

By Daniel Sipos

Drupal 8 logo

The recommended approach to getting started with Drupal 8 is now via Composer. An official project template has been created for this. We will create our project directly using the template, which is also available on Packagist.

To create a new project based on this template we can run the following Composer command:

composer create-project drupal-composer/drupal-project:8.x-dev my_project --stability dev --no-interaction

This Composer command will pull in the template from Packagist and run a few Drupal specific scripts to prepare our project for installation. The only thing left to do is point our browser to the web/ directory (since that is where the index.php file is) and run the installer as usual.

This template comes with a /web folder that contains, among other things, the main folders of a Drupal installation that are no longer considered part of Drupal core (such as the index.php file or the modules and themes folders). Additionally, it comes with an autoload.php file used by Drupal that simply points to the Composer vendor/ directory, one folder up. So all PHP libraries are now handled from one single place.

The template’s composer.json file requires the latest stable Drupal core + some additional helper tools such as Drush and the Drupal Console. Additionally, it adds the Drupal specific Packagist repository from where we can install Drupal contributed modules, themes and profiles (that get automatically installed in the right place).

If we want to add a Drupal contributed module, we need to find it on the Drupal Packagist and require it in our project via Composer:

composer require drupal/ctools

This will add the Ctools module directly to our web/modules/ directory and update our composer.json file.

The project template also comes with a .gitignore file that keeps Drupal core and all the contributed packages outside of Git, similar to the regular vendor/ packages. So based on an updated composer.json file, we can maintain a smaller Git repository and recreate our project any time. A lot of the benefits of Drush Make have now been incorporated into a Composer flow.



Drupal 8 has come a long way in catching up with other major PHP software. The possibility of fully managing it via Composer, either as a main project or even just as part of a bigger set of applications, is a testament to the community effort that went in.

  • developermitesh

    Very Well explained, the article is pretty good, and I think Drupal commerce is also offering the same kind of structure with packages. I see the benefit of using this structure that we don’t loose the already downloaded packages on each core update. But the question I have is –

    Is there any other benefit of using ‘vendor’ outside of Drupal root directory?

  • sailendra shakya

    Can I follow above instruction for my project?

    I have got problem when working in same project with different people using git and composer. Do this solve my problem?

  • Peter Stub

    Tks a lot for this article – SO GREAT. My local environment was up
    and running within minutes. Using MAMP/Mac – and there I was able to set
    Document root to web directory.

    BUT – how do I do that on a cheap
    webhotel – without access to any conf files. Did try to add some
    rewrite rules to .htaccess – but Drupal complains a lot…

    Anybody fixed this?

    /Peter Stub

  • Deependra Tandukar

    I received
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

    any help?

Get the latest in PHP, once a week, for free.