更新:
我实际上发布了这个包,所以你可以自己看问题.
在这里查看naomik/yamldump
我正在尝试制作一个小型CLI工具并将其与作曲家打包在一起.
下面是该程序的一个非常简化的版本,但它足以证明我遇到的问题.
该项目有一个依赖项和一个"二进制"文件
composer.json
{
"name": "naomik/yamldump",
"version": "0.2.0",
"bin": [
"bin/yamldump"
],
"require": {
"symfony/yaml": "2.5.3"
}
}
斌/ yamldump
#!/usr/bin/env php parse($yaml));
所以当我在全球范围内安装它时,我得到了这个
$ composer global require naomik/yamldump=dev-master
文件已安装到
~/.composer/vendor/bin/yamldump -> ../naomik/yamldump/bin/yamldump
~/.composer/vendor/naomik/yamldump/
~/.composer/vendor/symfony/yaml/
这是一个问题,因为我不打算全局安装symfony/yaml
,我的包vendor/autoload.php
不能再在正确的位置找到Yaml包.
我不介意它symfony/yaml
是全局安装的,但对我composer global require
来说安装这样的软件包是有意义的:
~/.composer/vendor/bin/yamldump -> ../naomik/yamldump/bin/yamldump
~/.composer/vendor/naomik/yamldump/
~/.composer/vendor/naomik/yamldump/vendor/symfony/yaml/
毕竟,如果我有Package A
这个取决于symfony/yaml=2.5.3
并且Package B
需要symfony/yaml=2.6.x
怎么办?
如果composer global require
安装依赖项~/.composer/vendor/*
,则每个全局需要的包都无法维护它自己的依赖项版本要求...
我知道这是一个令人费解的问题,但我真的不知道如何开始修复它.
目标
用户应该能够
$ composer global require naomik/yamldump=dev-master $ yamldump sample.yml
错误
$ yamldump sample.yml
Warning: require_once(vendor/autoload.php): failed to open stream: No such file or directory in /Users/naomik/.composer/vendor/naomik/yamldump/bin/yamldump on line 8
Fatal error: require_once(): Failed opening required 'vendor/autoload.php' (include_path='.:') in /Users/naomik/.composer/vendor/naomik/yamldump/bin/yamldump on line 8
这个问题
这是黑白两色:
我打算如何编写该require "vendor/autoload.php"
行并使其适用于本地安装的软件包和全局安装的软件包?