サイトアイコン Capital P

WordPress公式dockerパッケージ wp-env による開発環境構築

二ヶ月ほど前に WordPressによる公式Dockerコンテナである wp-env がリリースされたが、現在は日本語ドキュメントの整備も進み、かなり成熟してきたようだ。

コマンドを走らせてWordPressを起動

wp-envの特徴

さて、wp-envはDockerのnpmラッパーといった趣で、次のような .wp-env.json をリポジトリに用意しておくことで、開発環境がまるっと用意できる。

{
  "core": null,
  "plugins": [
    "."
  ]
}

Dockerを利用したWordPress開発環境はいくつかあるが、利点は下記の通り。

リポジトリ上でのユースケース

さて、それでは実際のリポジトリで例を見てみよう。今回は筆者が運営するWordPressテーマ&プラグインマーケットプレースで「テーマ作者に楽をしてもらおう」と作成している、kunoichi/theme-customizer というライブラリを取り上げる。ざっくり特徴を挙げると……

有料テーマなどを買うと、こういうSEO設定がついてくる。

このリポジトリの .wp-env.json を見てみると、次の通り。

{
  "core": null,
  "plugins": [ "." ],
  "themes": [
    "https://downloads.wordpress.org/theme/twentytwenty.latest-stable.zip"
  ]
}
  1. "core": null としている場合、最新リリース版が利用される。
  2. プラグインとしてカレントディレクトリを指定すると、そのままDockerコンテナ内でそのプラグインが有効化された状態で始まる。もしWooCommerceに依存したプラグインを作成しているなら、WooCommerceプラグインのZip URLを追加する。
  3. テーマはTwenty Twenty を利用。ちなみに、テーマ・プラグインのバージョンを指定することもできる。latest-stable の部分をバージョン番号に変えれば良い。
最初からプラグインが有効化されている。テーマも同様。

他にもポートなどしているできるものがたくさんあるので、詳しくはドキュメントを見て欲しい。

つづいて、package.jsonを見てみよう。

{
  "name": "theme-customizer",
  "version": "1.0.0",
  "description": "A handy PHP class to integrate WordPress Theme Customizer.",
  "main": "index.js",
  "directories": {
    "test": "tests"
  },
 "engines" : {
   "node" : ">=12.0"
 },
"scripts": {
    "start": "wp-env start",
    "test": "echo \"Error: no test specified\" && exit 1",
    "env": "wp-env",
    "cli": "wp-env run cli wp"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/kuno1/theme-customizer.git"
  },
  "keywords": [
    "wordpress"
  ],
  "author": "Kunoichi INC <sushi@kunoichiwp.com>",
  "license": "GPL-3.0-or-later",
  "bugs": {
    "url": "https://github.com/kuno1/theme-customizer/issues"
  },
  "homepage": "https://github.com/kuno1/theme-customizer#readme",
  "devDependencies": {
    "@wordpress/env": "^1.3.0"
  }
}

wp-envのインストールは npm install --dev @wordpress/env で可能。scriptsにはいくつかのスクリプトを登録してある。

以上の設定により、当該リポジトリでのWordPress開発は4コマンドで始められる。

git clone git@github.com:kuno1/theme-customizer.git
composer install # 必要なら
npm install
npm start

「WordPress環境を用意して wp-content/plugins に移動〜」などと言わなくてよいというのはだいぶお手軽だ。

設定の上書き

さて、場合によっては次のようなケースも考えられる。

このようなケースに対し、wp-envは上書き用ファイル .wp-env.override.json が存在する場合、フィールドの値を上書きする。したがって、上記の例でたとえば依存プラグインにWooCommerceを追加したいとなれば、次のような内容を追加すれば良い。

{
  plugins: [
    ".",
    "https://downloads.wordpress.org/plugin/woocommerce.latest-stable.zip"
  ]
}

また、ドキュメントにも書かれている通り、この上書きファイルをリポジトリの無視リスト(.gitignore)に追加しておくことをオススメする。

wp-envの今後

さて、ざっくりとではあるが、wp-envの使い方について説明した。おそらくではあるが、今後のWordPressコア開発は wp-env + GitHubに移行していくだろうし、実際に一部のコントリビューターはすでにそうしているようだ。

wp-envには環境別の指定(production, test)などの項目もあることから、Kubernetesのようなコンテナオーケストレーション環境へのデプロイも視野に入れているのだろう。また、今回は触れなかったが、ユニットテストなども必要なものがそろった状態で始められるはずだ。

なんにせよ、開発も活発であり、コアで実際に使われ始めているので、WordPress開発環境に悩んでいる方は試してみてはいかがだろうか。

モバイルバージョンを終了