This project provides a project template to facilitate creating a website for an event like a DrupalCamp or WordCamp. Websites created with the project can be used as a one-time website, or as an ongoing website for a recurring event like an annual camp or monthly user meetup.
Based on drupal-composer/drupal-project and drupalcommerce/project-base.
A quick outline of features:
- Drupal is installed in the
web
directory. - Modules (packages of type
drupal-module
) are placed inweb/modules/contrib/
- Theme (packages of type
drupal-theme
) are placed inweb/themes/contrib/
- Profiles (packages of type
drupal-profile
) are placed inweb/profiles/contrib/
- Creates default writable versions of
settings.php
andservices.yml
. - Creates the
sites/default/files
directory. - Latest version of DrupalConsole is installed locally for use at
vendor/bin/drupal
. - Default
services.yml
andsettings.local.php
symlinked tosites/default
.
First you need to install composer.
Note: The instructions below refer to the global composer installation. You might need to replace
composer
withphp composer.phar
(or similar) for your setup.
After that you can create the project:
composer create-project mglaman/drupalcamp-base some-dir --stability dev --no-interaction
Done! Use composer require ...
to download additional modules and themes:
cd some-dir
composer require "drupal/devel:8.1.x-dev"
The composer create-project
command passes ownership of all files to the
project that is created. You should create a new git repository, and commit
all files not excluded by the .gitignore file.
This project will attempt to keep all of your Drupal Core files up-to-date; the project drupal-composer/drupal-scaffold is used to ensure that your scaffold files are updated every time drupal/core is updated. If you customize any of the "scaffolding" files (commonly .htaccess), you may need to merge conflicts if any of your modified files are updated in a new release of Drupal core.
Follow the steps below to update your core files.
- Run
composer update drupal/core
. - Run
git diff
to determine if any of the scaffolding files have changed. Review the files for any changes and restore any customizations to.htaccess
orrobots.txt
. - Commit everything all together in a single commit, so
web
will remain in sync with thecore
when checking out branches or runninggit bisect
. - In the event that there are non-trivial conflicts in step 2, you may wish
to perform these steps on a branch, and use
git merge
to combine the updated core files with your customized files. This facilitates the use of a three-way merge tool such as kdiff3. This setup is not necessary if your changes are simple; keeping all of your modifications at the beginning or end of the file is a good strategy to keep merges easy.
Your custom modules, themes, and profiles can be added by modifying the
repositories
portion of the composer.json
. See the following examples
Local path
{
"type": "path",
"url": "./tests/testing_camp"
}
Other repo, not on packagist or drupal.org:
{
"type": "vcs",
"url": "https://github.com/drupalcommerce/commerce_base"
}
The virtual environment is Docker. See also the Getting Started Documentation for more details.
To get your Docker VM up-and-running:
- Create the machine:
docker-machine create --driver virtualbox <machine name ie. default|midcamp>
- Set up the environment:
docker-machine env default
- Connect to the new machine:
eval "$(docker-machine env default)"
- Build the docker vm:
docker-compose up --build -d
- See what the IP address is:
docker-machine ip default
Composer recommends no. They provide argumentation against but also workrounds if a project decides to do it anyway.
If you need to apply patches (depending on the project being modified, a pull request is often a better solution), you can do so with the composer-patches plugin.
To add a patch to drupal module foobar insert the patches section in the extra section of composer.json:
"extra": {
"patches": {
"drupal/foobar": {
"Patch description": "URL to patch"
}
}
}