关于 composer 发布包的问题

我以 guzzlehttp/guzzle 为例子说明我的疑惑

我们查看这个包的 github 代码库时, 发现上面不但有 src 目录,还有 doc 文档以及 测试用例,但是我们普通用户通过composer 安装这个包时,如图
关于 composer 发布包的问题

发现有很多文件都不不被包含的,我就想知道如果我自己做的包发布到packagist.org/ 上,请问如何才能做到像 guzzlehttp/guzzle 一样,普通用户安装包时只会下载必要的文件,排除下载非必要文件或代码?

来自广州的漂流瓶
最佳答案

@JimChen 嗯 我没太理清这个。composer是控制包的,而没想到git上面。失误失误.... 于是我看了一下github中的文件 其中 的.gitattributes文件 github.com/guzzle/guzzle/blob/mast... export-ignore意思是出口忽略 大概意思就是忽略文件下载 .gitattributes具体作用可以百度。

file

3年前 评论
讨论数量: 6

@秦晓武 这个我看过了,并没有解决我的问题

3年前 评论

我看了一下composer.json文件 知道了大概:

require-dev和require、autoload-dev和autoload使用方式一致,用途不同 require列出的软件包列表必须安装,都为正式部署所需要; require-dev列出的软件包一般用于开发或测试,是额外列出的依赖; 执行composer install/update命令时用--no-dev参数跳过require-dev列出的软件包;
autoload自动加载映射,正式部署使用; autoload-dev自动加载映射,一般多用于测试和开发; 执行composer dump-autoload命令式可通过--no-dev参数来忽略autoload-dev指定的命名空间;

其他具体可以百度它们之间的区别

file

3年前 评论

@Latent 感谢回答,不是这个问题,你说的只是生产依赖和开发依赖的包管理,我说的是包安装的时候有的包不会下载多余的文件,最简单的就是你的包的测试代码不会被下载下来,你可以试一下发布一个composer包(包含测试)并且在测试的项目进行依赖,你会发现下载的时候会把你的测试代码下载下来。

3年前 评论

@JimChen 嗯 我没太理清这个。composer是控制包的,而没想到git上面。失误失误.... 于是我看了一下github中的文件 其中 的.gitattributes文件 github.com/guzzle/guzzle/blob/mast... export-ignore意思是出口忽略 大概意思就是忽略文件下载 .gitattributes具体作用可以百度。

file

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!