4

顺便说一句,我睡眠不足,我现在似乎精神受阻,这可能会让你觉得这是毫无意义的咆哮,所以如果他们看起来不是这样,请尽量耐心接受。

我正在开发 OS X Snow Leopard。我不会说我喜欢访问 PEAR 为我设置的二进制文件。我只是在安装 PEAR 包之后,将它们的二进制文件brew unlink php53放入.brew link php53/usr/local/bin

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

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

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

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

提前致谢!

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

4

1 回答 1

6

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

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

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

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

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

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

于 2012-07-18T08:56:59.917 回答