メインコンテンツに移動

Drupal8.7から8.8へバージョンアップ Composerの変更点

2020-02-16

この記事は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アップの作業が来ても多分大丈夫だぞ!と自分自身に暗示をかけたところでおしまいにします。

この記事の参考ページ