我已经花了几个小时寻找我的问题的答案,但仍未找到合适的答案。
基本上,我接管了一个使用composer来引入第三方库/依赖项的PHP项目。但是,很多依赖项不再受管理,并且作者可能会随时从github中完全删除它们。
我目前正在考虑我应该检查整个供应商文件夹,所以即使通过作曲家不再提供库,我仍然可以随身携带它们。
或者,我可以分叉这些库repo并让作曲家从我的帐户中取出。这可以接受吗?
我真的希望得到一些关于解决这个问题的最佳方法的建议。
提前致谢!
答案 0 :(得分:1)
我应该检查整个供应商文件夹,所以即使作曲家不再提供图书馆,我仍然可以随身携带这些图书馆吗?
我的建议是创建一个包含您的应用程序及其所有供应商的备份分支。只需执行git checkout -b {VERSION}-backup
,然后执行composer install
(将composer.lock
和所有依赖项转换为定义的供应商文件夹),然后执行git push origin {VERSION}-backup
。
这允许依赖于动态包管理,只要包可以通过Packagist获得并可从其源(Github等)下载。
现在,如果依赖项被删除并变得不可用,则将其从composer.json
中删除,并将最后一个{VERSION}-backup
分支的代码合并到主分支中。 =您使用备份中的静态依赖项替换了动态依赖项。
顺便说一句:曾经考虑过对代码进行安全审核吗? 这将不起作用,动态拉动依赖项。针对特定版本执行安全审核 - 针对一组静态依赖项。鉴于这种情况,推入一个包含所有依赖关系的完整应用程序是常见的,也是最佳实践。但我们有什么:后端的Composer安装新的主题和作曲家安装--no-dev --optimize-autoload在生产盒上“安装”软件。现代;)
我可以分叉这些库repo并让作曲家从我的帐户中取出。这可以接受吗?
是的!而且你可能还会问Packagist的那些人不再使用已经保存的包装,或者让他们更换或替换为新的个人叉子。
答案 1 :(得分:0)
这实际上取决于您的项目是否需要针对可移植性进行优化。 虽然,最好的违规行为更安全,但对于不可用的依赖性而言,您需要花时间替换和重构...
答案 2 :(得分:0)
从她的packagist - 理论上讲它是可能的,但不太可能。 从实践中直接连接到CVS的包的主要问题。但如果它是实时项目,你可以找到另一个代码副本来恢复功能。