67 lines
2.6 KiB
Plaintext
67 lines
2.6 KiB
Plaintext
# Drupal Metapackages
|
|
|
|
A metapackage is a Composer package that contains only a composer.json, and
|
|
has no other content. In other words, the purpose of a metapackage is to
|
|
provide dependencies, not to provide code or data.
|
|
|
|
|
|
## Metapackages Provided by Drupal Core
|
|
|
|
Drupal Core provides three metapackages that serve different purposes.
|
|
|
|
- drupal/core-recommended: This project pins to the exact version of each
|
|
dependency used in drupal/core. It also requires drupal/core, so
|
|
drupal/core-recommended should be used INSTEAD OF drupal/core. See usage
|
|
diagram below. This relationship makes it easier for Composer to update
|
|
a Drupal project.
|
|
|
|
- drupal/core-dev: This project provides the same version constraints as Drupal
|
|
uses for testing. It is useful for projects that either wish to run some of
|
|
the Drupal tests directly, or for projects that may wish to use the same
|
|
components that Drupal does for testing.
|
|
|
|
- drupal/core-dev-pinned: This project should be used INSTEAD OF
|
|
drupal/core-dev in instances where a project wishes to pin to the exact
|
|
version of each testing dependency used in Drupal. This in general should not
|
|
be necessary.
|
|
|
|
Note that a project that uses both drupal/core-recommended and
|
|
drupal/core-dev-pinned must update them both at the same time, e.g.:
|
|
|
|
composer update drupal/core-recommended drupal/core-dev-pinned --with-updates
|
|
|
|
Composer may have trouble with the update if one of these projects is listed
|
|
on the command line without the other. Running composer update without any
|
|
parameters should also work, because in this instance every dependency is
|
|
updated.
|
|
|
|
|
|
## Metapackage Usage in Template Projects
|
|
|
|
The relationship between the metapackages drupal/core-recommended and
|
|
drupal/core-dev and the project (subtree split) drupal/core, as used in the
|
|
drupal/recommended-project is shown below:
|
|
|
|
+----------------------------+
|
|
| drupal/recommended-project |
|
|
+----------------------------+
|
|
|
|
|
+--"require":
|
|
| |
|
|
| | +-------------------------+ +-------------+
|
|
| +-->| drupal/core-recommended |-->| drupal/core |
|
|
| +-------------------------+ +-------------+
|
|
|
|
|
+--"require-dev":
|
|
|
|
|
| +-------------------------+
|
|
+-->| drupal/core-dev |
|
|
+-------------------------+
|
|
|
|
If a user does not wish to pin their Drupal project's dependencies to the same
|
|
versions used in drupal/core, then they should replace drupal/core-recommended
|
|
with drupal/core in their "require" section.
|
|
|
|
If a user does not need the testing dependencies in their Drupal project, then
|
|
they may simply remove drupal/core-dev from the "require-dev" section.
|