Drushのカスタムコマンドを作成する

  •  
 
funada2020年7月28日 - 17:20 に投稿

Drushのカスタムコマンドを作成する

コマンドラインに"Hello!"と表示するだけの簡単なカスタムコマンドを作ります。

# drush hello
Hello!

まずはカスタムモジュールを作り、その中でコマンドを定義します。
今回は"drush_hello"というモジュール名にします。

作成するファイル

  • drush_hello.info.yml
  • drush.services.yml
  • composer.json
  • Hello.php

 

ディレクトリ構造は次のようにします。

files

では順に作成していきましょう。

① drush_hello.info.yml

name: Drush Hello
description: 'Hello!と表示します.'
core: 8.x
type: module

お馴染みのファイルだと思います。特筆する箇所は特にありません。

② drush.services.yml

services:
  drush_hello.commands:
    class: \Drupal\drush_hello\Commands\Hello
    tags:
      - { name: drush.command }

コマンドの中身が書かれているクラスを規定します。
ファイル名は「モジュール名.services.yml」ではなく「drush.services.yml」にする必要があります。(カスタムDrushコマンドの決まりごとのようです)

③ composer.json

{
  "name": "drupal/drush_hello",
  "type": "drupal-module",
  "autoload": {
    "psr-4": {
      "Drupal\\drush_hello\\": "src/"
    }
  },
  "extra": {
    "drush": {
      "services": {
        "drush.services.yml": "^9"
      }
    }
  }
}

このファイルはDrush10で必須となるようです。Drush9では無くても動作するようですが、一応作成しておきましょう。

④ Hello.php

<?php

namespace Drupal\drush_hello\Commands;

use Drush\Commands\DrushCommands;

class Hello extends DrushCommands {

  /**
   * @command hello
   */
  public function hello() {
    $this->output()->writeln('Hello!');
  }

}

このファイルはdrush.services.ymlに記述したとおり、drush_hello/src/Commands/に作成します。
コメント中の「@command hello」でコマンドを定義しています。"drush hello"と打つとhello()が実行され、"Hello!"という文字列が表示されます。

これでモジュールは一通り完成です。

モジュールの有効化

ブラウザからサイトにアクセスし、今作成したモジュールを有効化します。

install

コマンドの実行

これでコマンドを実行できるようになりました。
コマンドライン上で"drush hello"と打ってみます。

# drush hello
Hello!

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。