Composer 安装 .tar.gz

Dan*_* W. 4 gzip tar composer

尝试通过 composer(用于自动化)安装 node.js。

"repositories": [
  "type": "package",
    "package": {
        "name": "nodejs/nodejs",
        "version": "0.12.6",
        "dist": {
        "type": "gzip",
        "url": "https://nodejs.org/dist/v0.12.6/node-v0.12.6-linux-x64.tar.gz"
      }
    }
  }
],
"require": {
  "nodejs/nodejs": "0.12.*"
}
Run Code Online (Sandbox Code Playgroud)

问题是,我可以使用tar gzip解压档案。

Available types: git, svn, hg, perforce, zip, rar, tar, gzip, phar, file.
Run Code Online (Sandbox Code Playgroud)

nodejs 包显然同时使用.

如何.tar.gz使用composer解压缩打包的文件?

我知道我可以使用post-update-cmdpost-install-cmd命令并手动执行 untar/gunzip,但这不是作曲家的方式。

A.B*_*oll 8

“焦油”选项既了解裸露.tar.tar.gz甚至.tar.bz2因此只需指定"type": "tar",也没有必要指定"gz"。它自己计算出解压。

我遇到了这个问题,最初也很困惑,试图自动部署一个使用专有库的 php 应用程序。但是我只试过“tar”,它奏效了!repositories由于 tar 存档的异常结构,我的JSON 部分看起来有点傻,但它确实有效。它看起来像这样:

"repositories": [
  {
    "type": "package",
    "package": {
      "name": "RocketShipIt/RocketShipIt",
      "version": "1.4.9.3",
      "dist": {
        "url": "https://secret-deployment-server/RocketShipIt.tar.gz",
        "type": "tar"
      },
      "autoload": {
        "files": [
          "RocketShipIt/RocketShipIt.php"
        ],
        "psr-0": {
          "RocketShipIt\\": "RocketShipIt/RocketShipIt/RocketShipIt/"
        }
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

你可以找到,有些费解了在作曲API文档(而不是最终用户手册)的.tar.tar.gz并且.tar.bz2是所有三个由官方支持"type": "tar"。显然,它是由Composer\Downloader\TarDownloader类在内部由 Composer 处理的 。