Composer在安装后从包中删除随机文件

时间:2017-09-13 10:39:06

标签: php composer-php mpdf

这是控制台输出(略微缩短):

λ composer require mpdf/mpdf
Using version ^6.1 for mpdf/mpdf
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
  - Installing setasign/fpdi (1.6.2): Downloading (100%)
  - Installing mpdf/mpdf (v6.1.3): Downloading (100%)
Writing lock file
Generating autoload files
Removed 31 files or directories.

为什么最后一行到底有没有?当我尝试在我的项目中使用mPDF时,它不起作用(找不到文件),因为目录中确实缺少大多数mPDF源文件。当我在composer缓存中查找时,所有文件都在那里,因此composer可能会安装所有文件,然后随机删除31个文件或目录。为什么?我该如何解决这个问题?我尝试使用更新版本的软件包,同样的问题。

作曲家版本:1.5.2(刚刚更新) 也在命令之前清除缓存。

1 个答案:

答案 0 :(得分:2)

该行是由我认为您安装的dg/composer-cleaner包引起的。

卸载软件包,它将停止删除文件。

或者,您可以根据包README:

设置包以忽略mpdf供应商目录

您还可以通过composer.json指定要忽略的路径。据我所知,通过浏览代码,无法忽略整个包,因此必须明确指定根目录中的所有文件和目录。

{
    "require": {
        "dg/composer-cleaner": "^1.1",
        "mpdf/mpdf": "^6.1"
    },
    "extra": {
        "cleaner-ignore": {
            "setasign/fpdi": [
                "fpdi_bridge.php",
                "pdf_parser.php"
            ],
            "mpdf/mpdf": [
                "collations",
                "font",
                "includes",
                "patterns",
                "qrcode",
                "tmp",
                "ttfontdata",
                "ttfonts",
                ".gitignore",
                "compress.php",
                "config.php",
                "config_fonts-distr-without-OTL.php",
                "config_fonts.php",
                "config_lang2fonts.php",
                "config_script2lang.php",
                "graph.php",
                "graph_cache",
                "iccprofiles",
                "lang2fonts.css",
                "mpdf.css",
                "MpdfException.php",
                "phpunit.xml",
                "progbar.css",
                "Tag.php"
            ]
        }
    }
}

使用mPDF 7.x(现在处于测试阶段),这应该会更加容易,它具有更加完善的项目目录结构。