900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 如何全局使用php composer php – 如何配置要全局安装的composer包?

如何全局使用php composer php – 如何配置要全局安装的composer包?

时间:2023-10-20 15:32:19

相关推荐

如何全局使用php composer php – 如何配置要全局安装的composer包?

更新:

我实际发布了这个包,所以你可以自己看问题.

我正在尝试制作一个小的CLI工具并将其与作曲家打包在一起.

下面是该程序的一个非常简化的版本,但它足以证明我遇到的问题.

该项目有一个依赖项和一个“二进制”文件

composer.json

{

"name": "naomik/yamldump",

"version": "0.2.0",

"bin": [

"bin/yamldump"

],

"require": {

"symfony/yaml": "2.5.3"

}

}

斌/ yamldump

#!/usr/bin/env php

// use Yaml namespace

use Symfony\Component\Yaml as Yaml;

// autoload

require_once "vendor/autoload.php";

// read yaml

$yaml = file_get_contents(sprintf("%s/%s", getcwd(), $argv[1]));

// create parser

$parser = new Yaml\Parser();

// parse the yaml

var_dump($parser->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 /

毕竟,如果我有依赖于symfony / yaml = 2.5.3的Package A和需要symfony / yaml = 2.6.x的Package B怎么办?

如果composer global要求安装〜/ .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”行并让它适用于本地安装的软件包和全局安装的软件包?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。