如何将软件包安装到我的框架的自定义路径?

时间:2015-05-12 14:08:32

标签: php composer-php

我使用的是作曲家版本1.0-dev

我看了https://getcomposer.org/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.mdhttps://github.com/composer/installershave

我在bitbucket中有一个自定义模块,使用这个简单的composer.json:

{
    "name": "mybitbucketuser/base",
    "type": "puppet-module",
    "require": {
        "composer/installers": "~1.0"
    }
}

在我的主项目中,我有这个composer.json:

{
    "minimum-stability": "stable",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://bitbucket.org/mybitbucketuser/fluzu-base.git"
        }
    ],
    "require": {
        "mybitbucketuser/base": "*"
    },
    "extra": {
        "installer-paths": {
            "modules/{$name}/": ["mybitbucketuser/base"]
        }
    }
}

我也试过这个:

"extra": {
    "installer-paths": {
        "modules/{$name}/": ["type:puppet-module"]
    }
}

一切似乎都运行良好,但作曲家将模块安装在默认的供应商目录中,而不是模块目录。

什么错了?感谢。

顺便说一下,我使用的是puppet-module类型,但实际上是phalcon模块。

2 个答案:

答案 0 :(得分:0)

我刚做了一个测试,但它确实有效。这是一个简单的示例,nrow(df[which(df$Counts<=100),]) 是一个包,而hello-world需要该包。

文件夹结构

hello-world-test

/hello-world/src/HelloWorld/SayHello.php

/
  hello-world/
    src/
      HelloWorld/
        SayHello.php
    composer.json

  hello-world-test/
    composer.json

/hello-world/composer.json

<?php 

namespace HelloWorld;

class SayHello
{
    public static function world()
    {
        return 'Hello World, Composer!';
    }
}

然后我跑了

{
    "name": "me/hello-world",
    "type": "puppet-module",
    "require": {
        "composer/installers": "~1.0"
    },
    "autoload": {
        "psr-0": {
            "HelloWorld": "src/"
        }
    }
}
  

注意:cd hello-world git init git add * git commit -m "Initial commit" git tag -a 1.0.0 -m "first stable version" 设置为稳定时,Composer需要此处的git存储库以及版本标记。如果我们将minimum-stability设置为minimum-stability,我们可以省略标记。

/hello-world-test/composer.json

dev

然后我跑了

{
    "minimum-stability": "stable",
    "repositories": [
        {
            "type": "vcs",
            "url": "../hello-world"
        }
    ],
    "require": {
        "me/hello-world": "*"
    }
}

Composer现在自动为cd hello-world-test composer install 创建vendor文件夹,为composer/installers包创建modules文件夹。由于我们的包中有"type": "puppet-module",因此创建了hello-world文件夹。

答案 1 :(得分:-1)

Composer Packages Custom Installer plugin,这将满足您的需求。只需执行它并在src / Installer CPCInstaller下的config目录中添加指令即可为您完成所有操作。