Composer 安装 .tar.gz

Composer 安装 .tar.gz

尝试通过 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.*"
}

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

Available types: git, svn, hg, perforce, zip, rar, tar, gzip, phar, file.

nodejs 包显然使用两个都

如何.tar.gz使用 Composer 解压打包文件?

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

答案1

“柏油”选项理解裸.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/"
        }
      }
    }
  }
]

你会发现,在Composer API 文档(不是最终用户手册).tar.tar.gz.tar.bz2这三个都得到了 的官方支持"type": "tar"。显然,它由 composer 类内部处理 Composer\Downloader\TarDownloader

相关内容