尝试通过 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-cmd
和post-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
。