
まだDrupalプロジェクトでComposerを使用していない場合は、すぐに使用を開始する必要があります! Drupal Composerテンプレートは、このタスクに役立ちます。 新しいプロジェクトの作成は非常に簡単です。
それでもわからない場合は、Drupal Composer開発の利点をご覧ください。
- プラグインモジュールのコード(およびカーネル自体)をバージョン管理システムに保存する必要はありません。
- Drupalコア、contribモジュール、JSライブラリ、さまざまなプロジェクトで使用される独自のモジュールなど、すべての単一のパッケージ管理ツール。
- カーネルとモジュールの最もシンプルで便利なパッチ。
- Gitサブモジュールを使用する方がはるかに簡単です。
(すべてのレシピはDrupal 8の使用を暗示していますが、Drupal 7でも機能するはずです)
プラグインモジュールのインストール
-
composer require drupal/<MODULE_NAME>:~8.0
最新の安定版リリース(またはDrupal 8のリリースがまだない場合は最新のdevバージョン)をインストールするにはcomposer require drupal/<MODULE_NAME>:~8.0
-
composer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME>
最新のcomposer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME>
バージョンをインストールするには -
composer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH>
特定のバージョンをインストールするには
Drupalカーネルとモジュールの更新
- すべてを更新する
composer update
-
composer update --dry-run
で更新を確認します -
composer update drupal/<MODULE_NAME>
特定のモジュールを更新します
パッチパッケージ
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" } } }
パッチを追加したら、次を実行します。
- パッチを適用する
composer install
-
composer update nothing
(またはcomposer update --lock
)ため、composer-patchesプラグインcomposer update --lock
composer.lockファイルに必要な変更を加える
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に切り替える
- バックアップを作成します;)
- Composerが管理するすべてのものを削除します。「コア」Drupalディレクトリ、プラグインモジュールなど。
- index.php、update.php、README.txtなどのすべてのルートDrupalファイルを削除します...それらすべて。
- プロジェクトのルートに「web」ディレクトリを作成し、残りのすべてのDrupalディレクトリ(サイト、モジュール、テーマ、ライブラリ、プロファイルなど)をそこに移動します
- Drupal Composerテンプレートファイルをプロジェクトのルートにコピーします。
- プロジェクトで使用されるプラグインのバージョン、Drupalカーネル、およびComposerが管理するその他すべてのリストを作成します。 次に、
composer require
実行するには、依存関係ごとに特定のバージョンを指定するcomposer require
ます。 DrupalバージョンをComposerバージョンに変換する必要があります。以下にいくつか例を示します。
-
drupal/core:8.1.8
すべてが適合する -
drupal/admin_toolbar:8.1.15
admin_toolbar 8.x-1.15を意味します -
drupal/ctools:8.3.0-alpha26
ctools 8.x-3.0-alpha26を意味します -
drupal/config_installer:dev-8.x-1.x#a16cc9acf84dd12b9714def53be0ce280a5b0c1a
は、a16cc9a commit brunch 8.x-1.xから作成されたconfig_installerのdevバージョンを意味します。
-
- composer.jsonの「require」セクションで、Drupalカーネルとプラグインモジュールのバージョンを「〜8.0」に変更します。 これにより、将来の更新が可能になります。
-
composer drupal-scaffold
実行すると、必要なルートDrupalファイルが作成されます。 - WebサーバーがWebディレクトリをWebルートとして使用していることを確認してください。