FuelPHP 1.xのパッケージをComposerでインストールする post

FuelPHP 1.xはComposerと統合されていますので、FuelPHPのパッケージをComposerで管理することも可能です。

というか、Composerで管理した方が何かと便利でしょう。

FuelPHPのパッケージがPackagistに登録されている場合

あまり多くはないですが、FuelPHPのパッケージがPackagistに登録されていれば、普通のComposerのパッケージと同様にcomposer.jsonrequireにパッケージ名を記載するだけでインストールできます。

例えば、このようにインストールできます。

まず、FuelPHPをComposerでインストールします。

$ composer create-project fuel/fuel:dev-1.7/master project --prefer-dist

composer requireコマンドでFuelPHPのパッケージ(hosopy/fuel-jobqueue)をインストールします。

$ cd project
$ composer require hosopy/fuel-jobqueue:dev-master
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)                          
  - Installing pda/pheanstalk (v3.0.2)
    Downloading: 100%         

  - Installing symfony/process (v2.3.0)
    Downloading: 100%         

  - Installing hosopy/fuel-jobqueue (dev-master 36a6843)
    Cloning 36a6843b12fdfa97397d72f723e5f87132a1dc22

Writing lock file
Generating autoload files

これでfuel/packages以下にインストールされました。

$ ls -l fuel/packages/
total 0
drwxr-xr-x  12 kenji  staff  408  6 30 06:10 auth
drwxr-xr-x   7 kenji  staff  238  6 30 06:10 email
drwxr-xr-x  12 kenji  staff  408  6 30 06:23 fuel-jobqueue
drwxr-xr-x  10 kenji  staff  340  6 30 06:10 oil
drwxr-xr-x   7 kenji  staff  238  6 30 06:10 orm
drwxr-xr-x   8 kenji  staff  272  6 30 06:10 parser

ここでのcomposer.jsonの変更点は以下のみです。

$ git diff
diff --git a/composer.json b/composer.json
index 3fa09b0..26833d1 100644
--- a/composer.json
+++ b/composer.json
@@ -25,7 +25,8 @@
         "fuel/parser": "dev-1.7/master",
         "fuelphp/upload": "2.0.2",
         "monolog/monolog": "1.5.*",
-        "michelf/php-markdown": "1.4.0"
+        "michelf/php-markdown": "1.4.0",
+        "hosopy/fuel-jobqueue": "dev-master"
     },
     "suggest": {
         "dwoo/dwoo" : "Allow Dwoo templating with the Parser package",

FuelPHPのパッケージがPackagistに登録されていない場合

Packagistに登録されていない場合は、composer.jsonrepositoriesに以下のようにパッケージの情報を記載した上でインストールする必要があります。

ここでは、Benni-chan/FuelPHP-Pushnotificationsを例にします。

--- a/composer.json
+++ b/composer.json
@@ -11,7 +11,20 @@
         { "type": "vcs", "url": "https://github.com/fuel/email" },
         { "type": "vcs", "url": "https://github.com/fuel/oil" },
         { "type": "vcs", "url": "https://github.com/fuel/orm" },
-        { "type": "vcs", "url": "https://github.com/fuel/parser" }
+        { "type": "vcs", "url": "https://github.com/fuel/parser" },
+        {
+            "type": "package",
+            "package": {
+                "name": "benni-chan/pushnotifications",
+                "type": "fuel-package",
+                "version": "1.0.0",
+                "source": {
+                    "url": "https://github.com/Benni-chan/FuelPHP-Pushnotifications.git",
+                    "type": "git",
+                    "reference": "master"
+                }
+            }
+        }
     ],
     "require": {
         "php": ">=5.3.3",
@@ -26,7 +39,8 @@
         "fuelphp/upload": "2.0.2",
         "monolog/monolog": "1.5.*",
         "michelf/php-markdown": "1.4.0",
-        "hosopy/fuel-jobqueue": "dev-master"
+        "hosopy/fuel-jobqueue": "dev-master",
+        "benni-chan/pushnotifications": "1.0.*"
     },
     "suggest": {
         "dwoo/dwoo" : "Allow Dwoo templating with the Parser package",

ここで、repositories全体は以下のようになっています。

    "repositories": [
        { "type": "vcs", "url": "https://github.com/fuel/docs" },
        { "type": "vcs", "url": "https://github.com/fuel/core" },
        { "type": "vcs", "url": "https://github.com/fuel/auth" },
        { "type": "vcs", "url": "https://github.com/fuel/email" },
        { "type": "vcs", "url": "https://github.com/fuel/oil" },
        { "type": "vcs", "url": "https://github.com/fuel/orm" },
        { "type": "vcs", "url": "https://github.com/fuel/parser" },
        {
            "type": "package",
            "package": {
                "name": "benni-chan/pushnotifications",
                "type": "fuel-package",
                "version": "1.0.0",
                "source": {
                    "url": "https://github.com/Benni-chan/FuelPHP-Pushnotifications.git",
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    ],

ここでは、パッケージのリポジトリにcomposer.jsonが存在しないため、"type": "package"を指定しパッケージの情報を記述します。

nameversionは適当に指定します。パッケージをアップデートする場合は、versionを上げる必要があります。

"type": "fuel-package"はFuelPHPのパッケージであることの指定です。これがないとfuel/packages以下にインストールされません。

なお、インストール先がデフォルトのvendorから変更されるのは、composer/installerの機能です。require"composer/installers": "~1.0"のようにcomposer/installerが必ず必要です。FuelPHPのデフォルトのcomposer.jsonに記載されているので通常は意識することもないですが。

もし、パッケージのリポジトリにcomposer.jsonが存在する場合は、リポジトリの指定はFuelPHPの標準のパッケージのように以下の形式で済みます。

{ "type": "vcs", "url": "https://github.com/fuel/auth" }

composer.jsonの設定が済んだら、インストールします。

$ composer update benni-chan/pushnotifications
Loading composer repositories with package information
Updating dependencies (including require-dev)                          
  - Installing benni-chan/pushnotifications (1.0.0)
    Cloning master

Writing lock file
Generating autoload files

これでfuel/packages以下にインストールされました。

$ ls -l fuel/packages/
total 0
drwxr-xr-x  12 kenji  staff  408  6 30 06:10 auth
drwxr-xr-x   7 kenji  staff  238  6 30 06:10 email
drwxr-xr-x  12 kenji  staff  408  6 30 06:23 fuel-jobqueue
drwxr-xr-x  10 kenji  staff  340  6 30 06:10 oil
drwxr-xr-x   7 kenji  staff  238  6 30 06:10 orm
drwxr-xr-x   8 kenji  staff  272  6 30 06:10 parser
drwxr-xr-x   7 kenji  staff  238  6 30 06:56 pushnotifications

関連

Date: 2015/06/30

Tags: fuelphp, composer