【问题标题】:Get production versions of packages on "composer install"在“composer install”上获取软件包的生产版本
【发布时间】:2018-05-09 04:08:52
【问题描述】:

自作曲家诞生以来,它让我们的生活变得轻松了许多。然而,运行composer install 通常会得到很多对开发有用的文件,但只会使生产服务器膨胀。共享主机通常具有有限的 inode,或者您必须自己上传“供应商”文件夹,因为 composer 不在服务器上。

当供应商文件夹有 6,000 个以上文件时,这是一个问题,特别是如果您有多个项目,每个项目有 6,000 个文件。这些文件中有很多是“README.MD”或“TODO”。生产服务器不需要开发者的“TODO”文件。

我尝试在 Google 上搜索,但找不到任何线索,所以有人知道是否有 composer 命令可以安装生产版本吗?

【问题讨论】:

    标签: composer-php


    【解决方案1】:

    有一个feature request,但被拒绝了(多次)。现在你可以从 Composer 中得到的最好的东西是:

    composer install --no-dev --prefer-dist
    

    它将跳过安装开发包并更喜欢 dist 存档,它通常不包含测试和其他在生产环境中运行包不需要的文件。

    如果这还不够,你可以尝试使用octolab/cleaner插件。

    【讨论】:

    • 谢谢朋友,这是迄今为止最好的选择,所以我会接受作为答案,如果它在 Composer 中实现,你可以编辑你的答案 ;)
    • 如果不指定,composer是否默认不使用“--prefer-dist”?
    • @NaturalBornCamper 默认为auto,它将使用 dist 发布(标签)和 source 分支。
    • 对不起,我不明白 XD 我没有看到任何关于“auto”的信息,我从文档中认为,“dist”是默认值:getcomposer.org/doc/03-cli.md#install-i
    • 对于稳定版本 Composer 默认使用 dist。如果你的composer.json 中有不稳定的分支(如dev-master),默认情况下 Composer 会从 git repo 中检出它。如果您使用--prefer-dist,Composer 将下载带有库的 zip 存档。
    【解决方案2】:

    composer install --no-dev

    官方链接:

    https://getcomposer.org/doc/03-cli.md#install

    如果你想排除一些非常具体的东西,你需要archive

    https://getcomposer.org/doc/04-schema.md#archive

    "archive": {
         "exclude": ["*.md", "vendor/**/tests", "/*.test"]
    }
    

    【讨论】:

    • 我知道这个选项,但感谢您的回答 :) 我的意思是不包括所有不需要的自述文件,并且无论如何都将包含在 --no-dev 中
    • 谢谢,这似乎是个好主意,但是它会下载尽可能多的文件(6,442 个文件)并在 composer.json 中排除。所以没有办法排除许可证和其他没有扩展名的文件吗?因为作曲家无法知道哪个文件仅供开发人员使用
    • 不完全。我认为大多数文件都只是称为许可证。由于它接受 glob 模式,“vendor/**/license”应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 2012-02-11
    • 2015-11-22
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2015-01-09
    相关资源
    最近更新 更多