Drupal 7までは、特定のモジュールをダウンロードして有効化するときはdrush
コマンド一発で出来ていました。
drush en -y [contrib_module_name]
しかし、Drupal 8だとdrush
コマンドはモジュールの有効化/無効化はできてもダウンロードはしてくれません。
加えて、Drupal 8の多くのモジュールはdrupalに依存しない汎用的なphpライブラリを読み込んでおり、その依存関係をcomposerが自動的に解決してくれます。
そして、Drupal 8はcomposerによってモジュール管理するように設計されています。
そういうことなので、モジュールのインストールに関しては、基本的にcomposerコマンドを利用しましょう。
##Composer本体をインストールする
もしまだComposer自体をインストールしていなければ先に入れましょう。
cd ~
curl -sS https://getcomposer.org/installer | php
composer --version
Composerを動作させるには、ドキュメントルート直下にcomposer.jsonファイルが必要ですが、Drupal 8は初めからドキュメントルート直下にファイル設置されているので新たに作成する必要はありません。
macOSの場合は、Homebrewでもっと簡単にインストール可能です。
brew install composer
以上で、composerコマンドの実行環境は整いました。
##パッケージのリポジトリを設定する
composerにはデフォルトではdrupal.orgのリポジトリが登録されていません。
なので、drupal.orgのリポジトリURLを追加します。
cd /path/to/drupalroot
composer config repositories.drupal composer https://packages.drupal.org/8
コマンド実行されると以下の行がcomposer.jsonファイルに自動追加されます。
{
"repositories": {
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8"
},
}
}
##テーマやモジュールのインストール先を設定する
コントリビュートモジュール・テーマ、およびカスタムモジュール・テーマのインストール先を設定します。
Drupal 8は、modulesフォルダの下にサブフォルダを作成することを推奨しています。
サブフォルダ名は、コントリビュートモジュールの場合は”contrib”フォルダ、カスタムモジュールの場合は”custom”フォルダです。モジュールだけでなくテーマに関しても同様です。
Installing Modules | Drupal.org
https://www.drupal.org/docs/8/extending-drupal-8/installing-modules#mod_subfolders
期待されるフォルダ構造はこのようになります。
|-core
| |-modules
| |-themes
| | |-bartik
| | |-seven
|-modules
| |-contrib
| |-custom
|-themes
| |-contrib
| | |-omega
| |-custom
| | |-omega_subtheme
それでは composer.json ファイルにインストールパスを設定します。
vim composer.json
{
"extra": {
"installer-paths": {
"core": ["type:drupal-core"],
"libraries/{$name}": ["type:drupal-library"],
"modules/contrib/{$name}": ["type:drupal-module"],
"modules/custom/{$name}": ["type:drupal-custom-module"],
"profiles/contrib/{$name}": ["type:drupal-profile"],
"themes/contrib/{$name}": ["type:drupal-theme"],
"themes/custom/{$name}": ["type:drupal-custom-theme"],
"drush/{$name}": ["type:drupal-drush"],
}
}
}
##モジュールをインストールする
今回は、既存の開発プロジェクトで特定のモジュールだけをインストールする場合を想定して、操作手順を紹介します。
例)panelsモジュールをインストールする
まずは、composer require
コマンドを使ってcomposer.json
にパッケージ情報を追加します。
cd /path/to/drupalroot
composer require --no-update --no-interaction drupal/panels
指定可能なオプション
-
--no-interaction
・・・ 対話型のメッセージを表示しない -
--update-no-dev
・・・ 依存関係にあるものを--no-dev
を付けた状態でアップデートする -
--no-update
・・・ 依存関係のアップデートを行わない
基本的に既存の開発プロジェクトで特定のモジュールだけをインストールする場合、--update-no-dev
は指定することはありません。
ほかのパッケージが更新されてしまわないように --no-update
を普段使うことになると思います。
最新バージョンではなく、あえて古いバージョンを使いたければ、下のようにパッケージ名の後ろにバージョンを付けてください。
composer require --update-no-dev --no-interaction drupal/panels:^1.0@alpha
次にcomposer update
コマンドを使って モジュールダウンロードと composer.lock
を更新します。
composer update --no-interaction drupal/panels
パッケージのインストールが完了すると、次の通りにファイル更新がされていることが確認できるはずです。
satoj@macbook dev % git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: composer.json
modified: composer.lock
modified: vendor/composer/installed.json
Untracked files:
(use "git add <file>..." to include in what will be committed)
docroot/modules/contrib/panels/
##モジュールを有効化する
composerコマンドによってモジュール設置ができたら、drushコマンドでモジュールを有効化します。
もしまだdrushコマンドをインストールしていなればこちらの記事が参考になります。
http://qiita.com/J_Sugar__/items/e2993282880471c0d3db
drush en -y panels
以上でモジュールの機能が使えるようになります。