2026年7月9日

2026年7月9日

WordPressのnpm workspacesを使ったモノレポ開発

はじめに

この記事では、開発者やプロジェクトマネージャーが複数の関連するnpmパッケージを一元管理するためにnpm workspacesという手法を活用し、WordPressプラグインとテーマのモノレポ(Monorepo)開発について解説します。このアプローチは、依存関係の明確化やコードのリファクタリング、新しい開発者のオンボーディングなどを容易にします。

症状・背景

  • プラグインやテーマが大量になり管理が複雑になる
  • 複数のプロジェクト間で共通ライブラリが必要となる
  • コードの再利用性を高めたい
  • 前方互換性のある開発環境を整えたい

手順・設定方法

ステップ1: npmワークスペースのセットアップ

# ディレクトリを作成する
mkdir wp-monorepo && cd $_

# package.jsonを作成し、プロジェクト全体を管理するnpmスコープを定義する
npx degit scaffold/package monorepo
cd monorepo
cat > package.json <<EOF
{
  "name": "@myorg/monorepo",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "prepare": "npm-run-all --parallel bootstrap:* build:* lint:* test:*"
  }
}
EOF

# ワークスペースディレクトリを作成
mkdir -p packages/core packages/plugins/packages/themes

ステップ2: プラグインとテーマの作成

# coreパッケージを作成する
cd packages/core && npm init --yes
echo '{ "version": "1.0.0" }' > package.json
cat >> package.json <<EOF
{
  "scripts": {
    "build": "tsc",
    "lint": "eslint ."
  }
}
EOF

# pluginsワークスペースを初期化する
cd ../plugins && npm init --yes
echo '{ "version": "1.0.0" }' > package.json
cat >> package.json <<EOF
{
  "scripts": {
    "build": "tsc",
    "lint": "eslint ."
  }
}
EOF

# themesワークスペースを初期化する
cd ../themes && npm init --yes
echo '{ "version": "1.0.0" }' > package.json
cat >> package.json <<EOF
{
  "scripts": {
    "build": "tsc",
    "lint": "eslint ."
  }
}
EOF

# ワークスペースの親ディレクトリに戻る
cd ..

ステップ3: WordPressプラグインとテーマへの依存関係追加

# coreパッケージにWordPressの依存関係を追加する
cd packages/core && npm install --save-dev @wordpress/scripts eslint-plugin-wp webpack

# pluginsワークスペースにcoreパッケージと他の依存関係を追加する
cd ../plugins && npm install --save @myorg/monorepo/packages/core
npm install --save-dev babel-eslint eslint

# themesワークスペースにcoreパッケージと他の依存関係を追加する
cd ../themes && npm install --save @myorg/monorepo/packages/core
npm install --save-dev babel-eslint eslint

ステップ4: プロジェクトのビルド、テスト、デプロイ

# 一括でプロジェクトをビルドする
cd .. && npm run build

# 依存関係が適切に解決されていることを確認する
npm ls @myorg/monorepo/packages/core

# テストスクリプトを実行し、問題がないことを確認する
npm test

注意事項

  • サポートしているNode.jsのバージョンをチェックしてください。
  • 依存関係が適切に解決されているか確認すること。
  • 各パッケージで必要なツールやライブラリを追加インストールする必要があるかもしれません。
  • プロジェクトのセキュリティとパフォーマンスのために定期的なレビューと更新を行うこと。

まとめ

1. npmワークスペースの設定: npm workspacesを使用して一元管理を行い、依存関係を明確化します。

2. プラグイン/テーマの作成: ワークスペースディレクトリを作り、必要なファイルと初期設定を行います。

3. 依存関係の追加: それぞれのパッケージに必要なライブラリや他のパッケージを追加します。

4. ビルド/テスト/デプロイ: プロジェクト全体を一括でビルドし、テストスクリプトを実行して問題がないことを確認します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ