有没有办法在作曲家更新或安装期间保留某些文件?
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。
我在我的 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。