This project uses a "split core" technique to manage your Drupal 8 dependencies with Composer. As of Drupal 8.0.0-rc1, you may add additional dependencies to your site directly using composer require
from your Drupal Root.
See: Avoiding “Dependency Hell” with Site-Local Drush
This project utilizes the pantheon-systems/circle-scripts project in order to achieve the following things:
- Specify the Drupal modules, themes and libraries you use in a composer.json file, and build them with Composer.
- Automatically build components via Circle CI every commit.
- Use Behat to run tests on your site from Circle.
- Automatically deploy your site to your Pantheon dev environment, or some other branch, every time the tests pass.
This project is based on the project drupal-composer/drupal-project.
Before you begin, you should first install composer.
There are two ways to quickly create a new project for your Drupal site, using this project as a template.
- Fork this project in GitHub
- Clone your fork locally
$ cd example-drupal8-circle-composer
composer install
$ ./bin/init-new-project
The init-new-project
script will set up the local files you will need, and commit them to your local git repository.
$ composer create-project pantheon-systems/example-drupal8-circle-composer my-new-project-name
The composer create-project
will download the base files you need for your new project, then run the init-new-project
script to set things up. The results are committed to a local git repository. You might wish to push your repository up to GitHub.
Once you have created a new project, you will still need to do some customization steps to suit your particular needs. See the circle-scripts README for instructions on how to do this.
The folder 'scripts' contain some starting scripts that you may use to customize the environment you need for your tests.
$ ./bin/local-test
The local-test
script will set up a local Drupal site, run it with the PHP built-in webserver, and then run the Behat test suite. This is analagous to what happens on Circle on every commit.
You may place your custom modules and themes in drupal/sites/all/modules/custom
and drupal/sites/all/themes/custom
, respectively, and commit them to the same repository that contains your composer.json file.
If you prefer, you may instead create a Composer project for your custom components, and add them to your composer.json file. It is not necessary to make your code publicly accessible in order to do this; it is possible to create a local composer package definition that points to a private GitHub repository. See Creating your very own Composer Package for details on different ways to create composer packages.
Additional modules may be added using Composer:
$ cd my-new-project-name
$ composer require drupal/devel '8.*'
This will put the specified module in sites/all/modules/contrib
, and will also update your composer.json file with the information on the module that was just added.