0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OctoberCMSにComposerでComposer非対応プラグインをインストールする

Last updated at Posted at 2018-09-03

概要

下記に該当するOctoberCMSプラグインは、そのままではComposerで適切にインストールできないので対処が必要になる。

  • Packagistに登録されていない
  • ソースコードにcomposer.jsonが含まれていない
  • composer.jsonが含まれているが適切なパッケージ定義になっていない

自分のプロジェクト(または自分のプラグイン)のcomposer.jsonで、ソースを取得してくる場所を指定し、プラグインが定義しているべき情報を代わりに定義してやれば、composerでインストール&管理することができる。

取得場所の指定

自分のプロジェクトまたはプラグインのcomposer.jsonにrepositoriesを定義して、ソースコードの取得場所を指定する。これによりPackagsitに登録されていなくてもダウンロードできるようになる。

{
    ...
    "require": {
        ...
        "simplicitylab/blogfeaturedvideo": "dev-master",
        ...
    },
    "repositories": [
        ...
        {
            "url": "https://github.com/simplicitylab/blogfeaturedvideo",
            "type": "git",
        },
        ...

これで、composer updateすると、GitHubのmasterブランチからソースを取ってきてくれる。しかし、これだとvendorディレクトリにインストールされてプラグインとしては認識されない。

プラグインとして認識させる

プラグインとして認識させるには、自分のcomposer.jsonで代わりにそのプラグインの情報を定義してやる。ここの例だと、最終的には下記のようにすれば、プラグインディレクトリにインストールされてコンポー年やモデルなどが認識されるようになる。

{
    ...
    "require": {
        ...
        "simplicitylab/oc-blogfeaturedvideo-plugin": "dev-master",
        ...
    },
    "repositories": [
        ...
        {
            "type": "package",
            "package": {
                "name": "simplicitylab/oc-blogfeaturedvideo-plugin",
                "type": "october-plugin",
                "version": "dev-master",
                "source": {
                    "url": "https://github.com/simplicitylab/blogfeaturedvideo",
                    "type": "git",
                    "reference": "master"
                }
            }
        },
        ...

だいたい見ればわかると思うが、"type": "october-plugin"を指定することで適切にプラグインディレクトリにインストールしてくれる。

そして、注意すべきなのはnameで、ネームスペースと関係するディレクトリ構成を決定するものなので、ネームスペースを確認して決定する必要がある。

このプラグインの場合、ソースコードを見るとネームスペースは下記のようになっている。

namespace Simplicitylab\BlogFeaturedVideo;

なので、ディレクトリ構成はplugins/simplicitylab/blogfeaturedvideoとなる必要がある。

よって作者名はsimplicitylab。また、プラグイン名はOctoberCMSのネーミング規約からoc-プレフィックスと-pluginポストフィックスをつける。

ということで、パッケージ名はsimplicitylab/oc-blogfeaturedvideo-pluginとなる。すべて小文字。これを上記のようにnamerequireのところに記述する。
このプラグインは比較的そのままのパッケージ名になったが、中にはGitHub上のレポジトリ名がパッケージ名と大きく異なるケースもある。

ソースコードがcomposer.jsonを含んでいた場合

代わりのパッケージ定義をしてやることで、元々あったcomposer.jsonが読み込まれなくなるようだ。
つまり、もし、元々あったcomposer.jsonに依存パッケージが定義されていた場合は、これらを作成した代わりのパッケージ定義に転記してやる必要がある。作成したパッケージ定義のpackageの中にrequireを転記する。

Class not foundになる場合

Screen Shot 2018-09-03 at 14.32.46.png

ファイルが存在しているのに、クラスが見つからないというエラーが発生した場合、再度、先の手順で勝手に決めた作者名とパッケージ名が全て小文字になっているか確認する。

作者名とパッケージ名作者名とパッケージ名がキャメルケースなどになっていると、この様なエラーが発生するようだ。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?