この記事はComposerを使ってDrupalサイトを構築した方、しようとしている方向けの記事です。 Composerを日頃使っていて端的に内容を知りたい方は「本題」へどうぞ。
前置き
Drupal8ってComposerでインストールできるし楽だね!が一応売りです。売りにしときます。
ただComposerってPHPライブラリを管理する仕組みであり、 ざくっといえば定義に従って「vendor」ディレクトリにライブラリ(ファイル)がダウンロードされていくだけなんですね。 定義 = composer.jsonです。composer.lockとautoloadの説明は割愛。
Drupalって「vendor」ディレクトリに必要そうなPHPライブラリだけあっても、全然動かない感じがするじゃないですか。 core、modules、themesディレクトリとか.htaccessとかindex.phpが所定の位置にないと動かない感じしますよね。
そこで最初に入れたほうが良いライブラリ群を定義して、えいやってComposerを実行するとzipで落としてきたあのDrupal一式っぽくなります。
このライブラリ群を毎回最初から定義するのって超面倒じゃないですか、ということで初期インストール用のComposerのテンプレートが用意されています。
本題
初期インストール用テンプレートが Drupal8.8を機に変わりました。というより、正式サポートが始まったみたいです。
- 8.7まで
drupal-composer/drupal-project
- 8.8から
drupal/recommended-project
Composerを使ったインストール方法のページでこっそりリビジョンを見ると長い間 drupal-composer/drupal-project を使った手順だったので、これでインストールした人も多いのでは。もっと昔だと drupal/drupal を参照するやつも見たことある人いるかも。
最初に使う定義のテンプレートの中身が違うということは、更新でもComposerの定義も変更する必要がありそうです。
大きな違いはDrupal一式っぽくする専用ライブラリ・定義について、 公式が正式に面倒見ますライブラリ・定義が提供されるようになりました。
変更点
※お手元のcomposer.jsonを見ながらどうぞ。
- composerを実行した時に.htaccessやindex.phpを適切なディレクトリに配置してくれるライブラリ
-
drupal-composer/drupal-scaffold
からdrupal/core-composer-scaffold
へ
-
- テスト関係ライブラリのバージョン固定するための定義
-
webflo/drupal-core-require-dev
からdrupal/core-dev
へ
-
- 依存するライブラリのバージョン固定するための定義
-
webflo/drupal-core-strict
からdrupal/core-recommended
が参照しているdrupal/core
へ
-
ちなみに旧テンプレートの drupal-composer/drupal-project
の最新は、公式が正式に面倒見ます版ライブラリを使用するように更新されています。
2020/2/16 現在、drupal-composer/drupal-project
は非公式になりましたって説明がありつつ、見出しは取消線がついてたりしてどう解釈しようかなーって状態です。
Deprecated: Using drupal-composer/drupal-project
プロファイルの1つ、Lightningも変更されています。
このブログのローカル環境もDrupalなので drupal/recommended-project
の定義とローカル環境定義を比較しながら変更点を取り入れました。いちおう問題なく動いています。
感想
仕事で使うDrupalプロジェクトの初期設定はいつもスーパーな開発者にお願いしていて、 Composerの理解を怠けてたんですがちょっとお近づきになれました。Composerよくできてるって改めて思えました。
8.7->8.8アップの作業が来ても多分大丈夫だぞ!と自分自身に暗示をかけたところでおしまいにします。
この記事の参考ページ
- Drupal Composerを使ったインストール方法
- Drupal Composerを使ったアップデート方法
- drupal/recommended-project
- drupal/core
- drupal-composer/drupal-project
- drupal-composer/drupal-scaffold
- webflo/drupal-core-require-dev
- webflo/drupal-core-strict
- Composerの基礎知識