尝试通过 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-cmd和post-install-cmd命令并手动执行 untar/gunzip,但这不是作曲家的方式。
在“焦油”选项既了解裸露.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 处理的 。