如何配置要全局安装的composer包?

 mobiledu2502889217 发布于 2022-12-26 11:21

更新:

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

在这里查看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"行并使其适用于本地安装的软件包和全局安装的软件包?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有