【问题标题】:Develop a third-party bundle (or library) in local在本地开发第三方包(或库)
【发布时间】:2016-01-21 19:15:35
【问题描述】:

我想为 Symfony 开发一个公共和第三方包。为了在开发过程中测试包,我需要一个功能性的 Symfony 安装。 所以我需要在 Symfony 测试应用程序中模拟我的包的 Composer 安装。

问题是,实现这一目标的最佳方法是什么?如果 composer 可以让我们定义一个本地存储库,并且不需要在包端提交,然后在 Symfony 应用端执行composer update每次你想测试包时,那就太好了>。 我在这里解释的解决方案在这里解释:http://tech.vg.no/2014/11/25/using-local-packages-as-composer-dependencies/

这是我目前找到的最佳解决方案,我没有看到很多关于此的文献。所以这是对“Symfony 3rd-party bundles 开发者”的呼吁:在开发过程中你如何开发和测试你的 bundle?

【问题讨论】:

  • 哇,一个反对票和一个接近投票,我的问题有什么问题?如果解决方案这么简单,我需要一个明显的船长或一个文档链接。
  • 作曲家方法可能是您最好的选择。您还可以编辑 app/autoload.php 并添加到您的库的路径。这会将作曲家从流程中移除。 Git 还支持嵌套存储库,因此您实际上可以在测试应用程序的供应商分支下进行开发,但我觉得这有点令人困惑。
  • “你也可以编辑 app/autoload.php 并添加一个路径到你的库”(vendor/autoload.php 你的意思是?)这与在测试应用程序中添加 PSR 规则有什么不同composer.json 甚至创建指向我的包文件夹的符号链接?因为这个解决方案的问题是它没有考虑到包的 composer.json 及其依赖项等,这与通过 Composer 安装的包不同。
  • 我不知道谁被否决了,但他绝对应该重新考虑。尽管这似乎是一个“微不足道”的问题,但实际上并没有那么好记录!
  • 这对你没有帮助,但值得注意的是 npm 有 link 命令来帮助你。我没用过,所以不确定作曲家是否应该复制它。

标签: php symfony composer-php


【解决方案1】:

为了澄清我对 app/autoload.php 的评论,Symfony 2 给了你一个小钩子来允许自定义自动加载过程:

// app/autoload.php
$loader = require __DIR__.'/../vendor/autoload.php';
$loader->add('Cerad',   __DIR__  . '/../../cerad2/src');
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;

因此在上述情况下,将使用位于文件系统其他位置的 cerad2 库。

这比简单地调整测试应用的作曲家文件更好吗?可能不会,尽管它确实派上用场。使用最适合您的方法。

【讨论】:

  • 是的,修补自动加载、添加 psr 规则、符号链接等,是捆绑开发可接受的解决方案。但是,这将需要第二个测试应用程序来定期测试包的 composer.json(以测试包的常规安装)。我正在寻找一种可以混合两者的解决方案(模仿安装,同时仍然直接访问“实时文件”),但可能不存在。谢谢!如果有人有更好的解决方案,请告诉我们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 2019-08-05
  • 2018-09-18
  • 2017-10-29
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
相关资源
最近更新 更多