【问题标题】:How to install jQuery with Composer?如何使用 Composer 安装 jQuery?
【发布时间】:2012-07-24 16:49:19
【问题描述】:

我已经能够安装没有这样的 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"
                }
            }
        }
    ]

【问题讨论】:

  • 目前我正在使用CDN,但我也想通过 Composer 或 git 子模块获取 jQuery。我不喜欢将 3rd 方库放入我的存储库的想法。顺便说一句,JS popularity on GitHub 被高估了,因为所有这些 JS copypasta 都发生了。
  • 2013 快结束了,还没有 jquery/jquery 包。这真的很奇怪。
  • 巧克力!你好!现在您在供应商目录中有 jQuery js 文件,现在怎么办?您必须手动将 src 添加到此文件中,还是作曲家必须自己加载它?我正在尝试自动加载 jQuery 并将其包含到我的网站中。有可能还是我不明白 Composer 的用途是什么?
  • @SharikovVladislav Composer 用于管理依赖项(即查找正确的版本、检查是否存在冲突、下载所有内容等)。如何使用这些依赖项是一个单独的问题。如果它们是 PHP 依赖项,它们通常会被自动加载,您所要做的就是创建对象或直接调用函数。如果它们是 JS 文件或其他资产,则必须在要编译/缩小的资产列表中添加文件的路径,或者如果您不使用缩小,只需在 webroot 中创建指向文件的符号链接并添加src 手动。
  • "...或者如果您不使用缩小,只需创建一个符号链接..."。这意味着您必须将您的供应商目录放在您的网络根目录下。这不是不安全吗?

标签: php symfony composer-php


【解决方案1】:

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

编辑:

功能 actually exists 但未记录在案。

"type": "file"

【讨论】:

  • 谢谢,我刚刚提交了这个问题:github.com/composer/composer/issues/946
  • Stof 对此问题发表了评论,该功能存在。我编辑了你的答案。
  • 我会试试的。我认为我缺少的是一种将文件放在 web 目录中的方法。仅为资产创建一个捆绑包是一种矫枉过正的做法。应该可以直接把js文件安装到web目录下。
  • 这是如何工作的?我只想让 Composer 通过 HTTP 下载单个文本文件?我在哪里指定所有内容?
  • @CMCDragonkai 我编辑了我的帖子以添加完整的解决方案
【解决方案2】:

其实有一个更简单的方式来安装jQuery,只需输入:

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

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

【讨论】:

  • 这没有任何与javascript组件包管理相关的东西吗?
  • components/jquerya Shim repository for jQuery 并且相同的 repo 适用于 Bower、Component 和 Composer
  • 在没有版本的情况下完成composer require components/jquery 并且像魅力一样工作。它在.json 中添加了"components/jquery": "^2.1" 行并继续安装并将其粘贴到.lock - 感谢components/* 提示!
【解决方案3】:

如前所述,解决方案的第一部分是定义您自己的存储库和"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": "*"
      }
    }
  }
}

【讨论】:

  • 注意:值得注意的是,由 Asset Manager 插件处理的包名称都是小写。如果你在 "require" 中使用了大写字母包,即使你在 "packages" 部分以相同的方式编写它们,插件也永远不会匹配它们。
  • 还要注意事件挂钩 - getcomposer.org/doc/articles/scripts.md。我现在正在使用这些。亲吻。
【解决方案4】:

使用 npmyarnWebPack 而不是 Composer,它们更适合这种需求。

【讨论】:

  • Bower 已被弃用且不再维护 - 在 2018 年不是一个好选择。
  • @rob006 用什么代替?网页包?
  • bower 的网站上有推荐——可能是 yarn 和 webpack。
【解决方案5】:

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

npm install jquery

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

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 2020-03-02
    • 2014-03-09
    • 2018-12-16
    • 2023-03-30
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多