60

我已经能够安装没有 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,但我不知道在 type 中输入什么(“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"
                }
            }
        }
    ]
4

5 回答 5

47

实际上有一个更简单的方法来安装 jQuery,只需输入:

{
    "require": {
        "components/jquery": "1.9.*"
    }
}

它使用Composer的 Component Installer,默认情况下,Component 中的所有资产都安装在 下components,但可以自定义。(见文档)。

于 2013-06-06T23:51:46.770 回答
36

这只是一个缺失的功能。可能应该有一种新的 dist 类型,它只是一个要下载并保持原样的纯文本文件。请在 github 问题跟踪器上提交功能请求:https ://github.com/composer/composer/issues/

编辑 :

该功能实际上存在但未记录在案。

"type": "file"
于 2012-07-26T13:49:48.573 回答
2

如前所述,解决方案的第一部分是定义您自己的存储库和"type: ": "file"存储库定义选项。但随后的问题是让作曲家将 JQuery 放在您想要的位置。就目前而言,composer 似乎仅限于下载依赖源vendor-dir(这很烦人,但可能与自动加载要求有关)。对此限制的一般修复是编写一个克服它的作曲家插件。似乎有一些插件可以管理这个。我发现的最简单最轻量级的解决方案是PHP Composer Asset Manager,它专门用于管理非 PHP/Composer “资产”。但是,它至少有一个限制,即插件所做的更改不是由作曲家管理/检测的。还是可以用的。

这是composer.json使用该插件安装 JQuery 的完整内容:

{
  "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": "*"
      }
    }
  }
}
于 2014-11-28T00:34:49.690 回答
1

使用npm,yarnWebPack代替 Composer 它们更适合这种需求。

于 2018-10-19T01:58:07.620 回答
1

你可以像这样使用 npm 安装 jquery,

npm install jquery

https://www.npmjs.com/package/jquery

于 2018-10-19T06:44:27.523 回答