有没有办法在作曲家更新或安装期间保留某些文件?

Is there a way to retain certain files during a composer update or install?

我在我的 Laravel 应用程序中使用了一个不支持开箱即用的 Laravel 的包,所以我自己添加了一个 Facade 和 Service Provider。这两个文件都已签入我的存储库(在 .gitignore 中使用 ! 前缀指定)。然而,当 composer 更新一个包时,它首先会完全删除它,这会阻止使用像 Codeship 这样的平台进行自动部署。

有什么建议吗?

您应该 fork 软件包,使用您的更改创建自定义存储库 - 然后将其包含在您的 composer.json.

{
    "repositories": [ {
            "type": "vcs",
            "url": "https://github.com/YourGithubUsername/PackageName"
         }
    }],
    "require": {
        "laravel/framework": "4.0.*",
        "OriginalVendor/PackageName": "1.0.*"
    },
}

这样您就可以随时提取自定义更改,而无需将其提交到您的特定项目。

您可以在此处阅读有关分叉和加载包的更多信息:https://getcomposer.org/doc/05-repositories.md#vcs

永远不要更改包的代码!事实上,永远不要触摸 vendor 目录。

您应该 [fork] 存储库并添加您的代码(请参阅@TheShiftExchange 的回答)

或者在你的命名空间中添加 Facade 和 ServiceProvider。