我已经能够安装没有像这样的composer.json文件的存储库:
{
"type": "package",
"package": {
"name": "yahoo/yui-compressor",
"version": "2.0.4",
"dist": {
"url": "http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip",
"type": "zip"
}
}
},
我从文档中提取了"type":"zip"部分,但找不到很多其他类型。例如,我需要安装jQuery,但我不知道该在类型中放入什么("js"不起作用)。
{
"type": "package",
"package": {
"name": "jquery/jquery",
"version": "1.7.2",
"dist": {
"url": "http://code.jquery.com/jquery-1.7.2.js",
"type": "js"
}
}
}
有什么想法吗?
编辑:我正在添加完整的解决方案以帮助@CMCDragonkai:
"require": {
"vendorname/somefile": "1.2.3",
},
"repositories": [
{
"type": "package",
"package": {
"name": "vendorname/somefile",
"version": "1.2.3",
"dist": {
"url": "http://example.com/somefile.txt",
"type": "file"
}
}
}
]
实际上有一种更简单的方法来安装jQuery,只需键入:
{
"require": {
"components/jquery": "1.9.*"
}
}
它使用Composer的组件安装程序,默认情况下,组件中的所有资产都安装在components
下,但它可以自定义。(请参阅文档)。
这只是一个缺失的功能。可能应该有一种新类型的dist,它只是一个要下载并保持原样的纯文本文件。请在github问题跟踪器上提交功能请求:https://github.com/composer/composer/issues/
编辑:
该功能确实存在,但没有文档记录。
"type": "file"
如前所述,解决方案的第一部分是定义您自己的存储库和"type: ": "file"
存储库定义选项。但接下来的问题是让composer把JQuery放在你想要的地方。目前,composer似乎仅限于在vendor-dir
下下载依赖源(这很烦人,但可能与自动加载要求有关)。解决这个限制的一般方法是编写一个克服它的composer插件。似乎有几个插件可以管理这个问题。我发现的最简单、最轻量级的解决方案是PHP Composer Asset Manager,它专门用于管理非PHP/Compoer"资产"。不过,它至少有一个限制,即插件所做的更改不是由composer管理/检测的。仍然可用。
以下是使用该插件安装JQuery的完整composer.json
:
{
"name": "foo/bar",
"require":
{
"phpclasses/assets": "*",
"jquery/jquery": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://www.phpclasses.org/"
},
{
"type": "package",
"package": {
"name": "jquery/jquery",
"version": "1.7.2",
"type": "jquery",
"dist": {
"url": "http://code.jquery.com/jquery-1.7.2.js",
"type": "file"
}
}
}
],
"extra": {
"assets": {
"actions": [
{
"type": "copy",
"target": "webroot/js",
"pattern": "\.js$"
}
],
"packages": {
"jquery/jquery": "*"
}
}
}
}
您可以使用npm安装jquery,比如
npm install jquery
https://www.npmjs.com/package/jquery
使用npm
、yarn
或WebPack
而不是Composer,它们更适合这种需求。