Yii2 & Composer - 我如何在本地拉取 1 个包,忽略 packagist

Yii2 & Composer - How do I pull locally for 1 package, ignoring packagist

我想玩转我目前在 Github/Packagist 上的一个回购协议。实际上,我想把它变成一个 Yii2 扩展。我不想遵循 git 添加、git 提交、git 推送、作曲家更新、圈子。我想绕过 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。

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

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

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

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

"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 神奇地知道我想使用本地源:)