一尘不染

如何指定Composer安装路径?

php

我有这个定义:

{
    "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/。我该如何指定?


阅读 1401

收藏
2020-05-29

共1个答案

一尘不染

看来您可以将vendor目录定义为其他内容plugins在您的情况下):

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

然后,您可以将包名称重命名为其中没有级别目录,例如:

        "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不利):

插件/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.*"
    }
}
2020-05-29