php - Composer 工作流是如何工作的?

标签 php behat composer-php

顺便说一句,我缺乏 sleep ,而且我现在似乎精神受限,这可能会让你觉得这像是毫无意义的咆哮,所以如果他们看起来不是这样,请耐心地接受他们。

我正在研究 OS X Snow Leopard。我不会撒谎,我很喜欢访问 PEAR 为我设置的二进制文件。我在安装 PEAR 包后简单地 brew unlink php53brew link php53 ,所以我在 /usr/local/bin 中得到它们的二进制文件.

以贝哈特为例。如果我通过 PEAR(现已过时)安装它,我执行上面的过程,我立即可以通过 behat 访问它,仅此而已。如果我要对 Composer 生成的整个 bin 文件夹进行符号链接(symbolic link),除了 behat 之外,我还会得到三个“命令”:behat.bat发布

我做错了什么吗?有没有一种方法可以将正确的二进制文件集中在例如 /usr/local/bin 上,最好不必向 $PATH 添加新路径?有没有办法通过 Composer 做到这一点?

我正在考虑 npm,您可以在其中设置模块的全局和本地版本。我想要(正确的)二进制文件的舒适全局版本。一种 gem ,没有真正不必要地复制东西。

你看到了吗?这是很多混杂的信息,但这就是我现在的想法。我想我正在寻找类似 this other question 的东西,仅适用于“供应商”二进制文件。

提前致谢!

PS:如果我真的听起来像一个悲惨的人,请告诉我,我会在睡个好觉后的第一个小时重新措辞我的信息。谢谢!

最佳答案

问题是,如果您在全局范围内安装东西,当一个项目需要不兼容的 Behat 1.5 和另一个 Behat 2.0(假想版本)时会发生什么?使用 require-dev 在项目本身中安装这些工具是解决此问题的好方法。然后你只需在你的项目中调用 bin/behat 就可以了(假设你在你的 composer 配置中放置了一个 bin-dir: bin,否则它就是 vendor/bin/behat)。

关于 behat.batrelease,那不会发生。这些文件存在于 behat 本身,但它们不会链接到 composer bin 目录中。

最后,如果你真的想让它全局化,你可以使用 ~/phputils/composer.json 或其他东西:

{
     "require": {
         "behat/behat": "*"
     },
     "config": {
         "bin-dir": "/usr/local/bin"
     }
}

我不确定绝对 bin-dir 目前是否有效,我尤其不确定这样做是否是个好主意,但这是一个选择。最好我会说你应该把它作为 "bin" 并将 ~/phputils/bin 添加到你的 PATH 中。然后你可以进入那个目录,运行 composer install/update 就可以了。

还有一个技巧是在/usr/local/bin 中执行一个 composer-g shell 脚本来执行 cd ~/phputils/&& composer $* 这样你就可以调用 composer-g 从任何地方更新 behat/behat

关于php - Composer 工作流是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534814/

相关文章:

php - mysql_fetch_array() 不工作

php - 根据所选行更新表单提交

php - 如何在提交时关闭 fancybox...请需要帮助

composer-php - Composer - 未知下载器类型 : h - Getting this error for a repo on packigist

php - 将 PHP Composer 用于 Facebook API

php - 在 php - mysql 中改进我的搜索引擎

selenium - 在多个浏览器中并行运行

ajax - 如何让 Behat 等待 Angular ajax 调用?

symfony - 媒体文件行为测试

PHP 启动 : Unable to load dynamic library 'sqlsrv'