web-dev-qa-db-ja.com

Composerインストールパスの指定方法

私はこの定義を持っています:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "symfony/sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "symfony/sfGuardPlugin": "4.0.*"
    }
}

Symfony 1を使用していますが、plugins/sfGuardPlugin/にインストールしたいと思います。これを指定するにはどうすればよいですか?

85
Tower

vendor dirを 何か他のもの (あなたの場合はplugins)に定義できるようです:

{
    "config": {
        "vendor-dir": "plugins"
    }
}

次に、パッケージ名の名前を変更して、内部にレベルdirがないようにします。

        "package": {
            "name": "sfGuardPlugin",

したがって、composer.jsonは次のようになります。

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

編集

この設定を使用して、パスを取得します(もちろんはsymfonyには適していません):

plugins/sfGuardPlugin/sfGuardPlugin-4.0.2 /

このcomposer.jsonで回避策を見つけました:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "source": {
                    "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/",
                    "type": "svn",
                    "reference": "branches/1.3/"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}
128
j0k

composer/installers を使用することもできます。これは、「symfony1-plugin」パッケージタイプのマルチフレームワークcomposerライブラリインストーラーです。 Symfony 1.4(lib/vendor)とプラグイン(/ plugins)の両方をインストールするために、これはcomposer.jsonファイルの外観です。

{
    "config": {
        "vendor-dir": "lib/vendor"
    },
    "repositories": {
        "symfony": {
            "type": "package",
            "package": {
                "name": "symfony/symfony1",
                "version": "1.4",
                "dist": {
                    "url": "https://github.com/symfony/symfony1/zipball/1.4",
                    "type": "Zip"
                }
            }
        },
        "sfResquePlugin" : {
            "type": "package",
            "package": {
                "name": "devpips/sfResquePlugin",
                "type": "symfony1-plugin",
                "version": "0.1",
                "dist": {
                    "url": "https://github.com/devpips/sfResquePlugin/zipball/master",
                    "type": "Zip"
                }
            }
        }
    },
    "require": {
        "composer/installers": "dev-master",
        "symfony/symfony1": "1.4",
        "devpips/sfResquePlugin":"0.1"
    }
}
27
Adam V.

COMPOSER_VENDOR_DIR 環境変数を参照してください。

この変数を設定することにより、Composerにベンダー以外のディレクトリに依存関係をインストールさせることができます。

これを共有フォルダーに入れたくないvagrantなどの特定の環境でこれをオーバーライドする場合に役立ちます。

J0kが言ったように、vendor-dirconfigセクションに composer.json があります

デフォルトはベンダーです。必要に応じて、依存関係を別のディレクトリにインストールできます。 $ HOMEおよび〜は、vendor-dirおよび以下のすべての* -dirオプションのホームディレクトリのパスに置き換えられます。

8
GabLeRoux