Drupal Composerレシピ

この投稿では、Drupal Composerテンプレートを使用して作成されたDrupalプロジェクトで作業中に蓄積したComposerを使用するためのレシピをいくつか共有したいと思います。 また、既存のDrupalプロジェクトをComposerに転送する方法も検討します。



まだDrupalプロジェクトでComposerを使用していない場合は、すぐに使用を開始する必要があります! Drupal Composerテンプレートは、このタスクに役立ちます。 新しいプロジェクトの作成は非常に簡単です。



それでもわからない場合は、Drupal Composer開発の利点をご覧ください。





(すべてのレシピはDrupal 8の使用を暗示していますが、Drupal 7でも機能するはずです)



プラグインモジュールのインストール





Drupalカーネルとモジュールの更新





パッチパッケージ



cweagans / composer-patchesプラグイン(Drupal Composerテンプレートに含まれています)は、composer.jsonの追加セクションで説明されているパッチを使用します。



  "extra": { "patches": { "<PACKAGE/NAME>": { "<PATCH DESCRIPTION>": "<PATH/TO/PATCH/OR/URL>", ... }, ... } }
      
      





例:



  "extra": { "patches": { "drupal/core": { "Fix language detection": "patches/2189267-24.patch" } } }
      
      





パッチを追加したら、次を実行します。





Githubを使用してカスタム/フォークされたモジュールをインストールする



モジュールリポジトリに独自のcomposer.jsonファイルが含まれている場合



composer.jsonファイルの「repositories」セクションにリポジトリーを登録します。



  "repositories": [ { "type": "vcs", "url": "https://github.com/<REPOSITORY/NAME>" }, ... ],
      
      





composer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH>



を使用してモジュールをインストールします。



composer.jsonファイルがモジュールリポジトリにない場合



もう少し高度なオプションを使用します。



  "repositories": [ { "type": "package", "package": { "name": "drupal/<MODULE_NAME>", "version": "dev-custom", "type": "drupal-module", "source": { "type": "git", "url": "git@github.com:<REPOSITORY/NAME>.git", "reference": "<BRANCH-NAME>" } } }, ... ],
      
      





composer require drupal/<MODULE_NAME>:dev-custom#<COMMIT_HASH>



を使用してモジュールをインストールします。



宛先ディレクトリがモジュール/ contribと異なる場合



上記のレシピに加えて、composer / installersプラグインを使用します。



  "extra": { "installer-paths": { "web/modules/custom/<MODULE_NAME>": ["drupal/<MODULE_NAME>"], ... } }
      
      





JSライブラリをインストールする



人気のあるJSライブラリは、 Compagerを使用して簡単にインストールできます。これは、(おそらく) Packagistリポジトリにすでに存在しているためです。 難点は、ほとんどのDrupalモジュールが「ライブラリ」ディレクトリにJSライブラリをインストールする必要があるのに対し、Composerは「ベンダー」ディレクトリにインストールすることです。



composer / installersプラグインはインストールパスを再割り当てできますが、依存関係としてそれを示すパッケージに対してのみです。 したがって、composer.jsonライブラリファイルをcomposer / installerに依存するものに置き換える必要があります。



例を見てみましょう:



  "repositories": [ { "type": "package", "package": { "name": "enyo/dropzone", "version": "4.3", "type": "drupal-library", "source": { "url": "https://github.com/enyo/dropzone.git", "type": "git", "reference": "master" }, "dist": { "url": "https://github.com/enyo/dropzone/archive/v4.3.0.zip", "type": "zip" }, "require": { "composer/installers": "~1.0" } } }, ... ], ... "extra": { "installer-paths": { "web/libraries/{$name}" : ["type:drupal-library"], ... } }
      
      





このコードをcomposer.jsonに追加しcomposer require enyo/dropzone:4.3



composer require enyo/dropzone:4.3



を実行してライブラリをインストールします。 Composerがリポジトリを複製する代わりにzipアーカイブをロードできるように、特定のバージョンを指定し、「dist」セクションを追加したことに注意してください。



既存のパッケージを分岐バージョンに切り替える



composer.jsonにforkリポジトリーを登録します。



  "repositories": [ { "type": "vcs", "url": "https://github.com/<REPOSITORY/NAME>" }, ... ],
      
      





composer require <PACKAGE/NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH>



実行composer require <PACKAGE/NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH>







既存のDrupal 8プロジェクトをComposerに切り替える






All Articles