【问题标题】:Yii2 & Composer - How do I pull locally for 1 package, ignoring packagistYii2 & Composer - 我如何在本地拉取 1 个包,忽略 packagegist
【发布时间】:2015-12-20 04:47:22
【问题描述】:

我想玩弄我目前在 Github/Packagist 上的一个存储库。实际上,我想把它变成一个 Yii2 扩展。我不想跟着 git add、git commit、git push、composer update、circle。我想绕过我的 Github/Packagist,只使用本地资源。我希望它表现得像我的包在 Packagist 上不存在。

我使用的是 Yii2,所以它有自己的 composer.json 文件。所以他们仍然需要工作,只是为我的 1 包使用不同的来源。

当然,默认的 Yii2 composer require 块:

"require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": ">=2.0.6",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-swiftmailer": "*",
    "wadeshuler/my-package" : "*"      // <-- needs to pull from local
},

那么你就有了我的包的作曲家:

"autoload": {
    "psr-4": {
        "wadeshuler\\Package\\": "src/"
    }
}

再次,我想告诉 Yii2 composer.json 在本地加载我的包并忽略 Packagist。

【问题讨论】:

    标签: git github yii2 composer-php packagist


    【解决方案1】:

    显然,Composer 比我认为的要聪明 :)

    我尝试了各种额外的东西,当时它真的很简单,而且就在我面前。

    Composer 会自动选择您的本地包(如果存在)。

    所以在我的 Yii2 composer.json 中,添加一个 repositories 块:

    "repositories": [
        {
            "type": "path",
            "url": "../My-Package"
        }
    ],
    

    并照常要求:

    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.6",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "wadeshuler/my-package": "*"    // <-- My-Package
    },
    

    即使我的包在 GitHub 上,Composer 也神奇地知道我想使用本地源 :)

    【讨论】:

    • 神奇之处在于:Composer 将正确选择您的包而不是原始包,因为自定义存储库优先于 packagegist。 (Doc)
    猜你喜欢
    • 2021-05-16
    • 2020-02-02
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多