LoginSignup
9
13

More than 3 years have passed since last update.

【Drupal 8】Composerを使ってモジュールをインストールする

Last updated at Posted at 2017-05-30

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

以上でモジュールの機能が使えるようになります。

9
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
13