2012-07-26 135 views
53

我已经能够安装不具有composer.json文件这样的仓库:如何使用Composer安装jQuery?

{ 
     "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" 
      } 
     } 
    }, 

我把“类型”:“压缩”部分从文档,但我无法找到许多其他类型。例如,我需要安装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" 
       } 
      } 
     } 
    ] 
+1

目前我使用的是[CDN(http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery),但我喜欢通过Composer或git子模块获取jQuery。我不喜欢将第三方库加入我的回购站的想法。顺便说一句,[JS在GitHub上流行](https://github.com/languages)被高估,因为所有这些JS副本发生。 – 2012-07-26 07:36:33

+1

2013年已经过去了,仍然没有jquery/jquery包。这真的很奇怪。 – Sliq 2013-10-13 13:36:03

+0

巧克力!你好!现在你在供应商目录中有jQuery js文件,现在是什么?你是否必须手动添加src到这个文件或作曲家必须自己加载它?我正在尝试加载jQuery automaticaly并将其引入到我的网站。是可能的,或者我不明白Composer使用什么? – 2014-04-27 21:27:02

回答

32

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

编辑:

特征actually exists但没有记载。

"type": "file" 
+1

谢谢,我刚才提出这个问题:https://github.com/composer/composer/issues/946 – ChocoDeveloper 2012-07-26 13:52:16

+0

Stof评论了这个问题,该功能存在。我编辑了你的答案。 – ChocoDeveloper 2012-07-27 01:30:44

+0

很高兴知道是否有方法从存储库获取多个文件。一些插件包含样式表和图片,是否意味着为每个文件创建一个包? – Jens 2013-04-29 06:45:10

39

居然还有安装jQuery的,只需要输入一个简单的方法:

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

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

+0

这没有任何与javascript组件包管理有关的东西吗? – CMCDragonkai 2013-11-16 02:16:52

+0

'组件/ jquery'是[一个适用于jQuery的Shim存储库](https://github.com/components/jquery#jquery-component),并且与Bower,Component和Composer一起使用相同的回购 – 2013-11-16 03:58:17

+0

这个工作,但也安装约1.8不相关的PHP的MB。 – spinkus 2014-11-28 00:15:01

2

如前所述,解决方案的第一部分是定义您自己的存储库和"type: ": "file"存储库定义选项。但后续的问题是让作曲家把JQuery放在你想要的地方。就目前而言,作曲家似乎只能在vendor-dir下下载依赖关系源(这很烦人,但可能与自动载入需求有关)。解决这个限制的一般办法是编写一个克服它的作曲家插件。似乎是一些可以管理这个问题的插件。我找到的最简单最轻量级的解决方案是PHP Composer Asset Manager,它致力于管理非PHP /作曲家“资产”。不过,它至少有一个限制,即插件所做的更改不受作曲者管理/检测。仍然可用。

这里是一个完整的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": "*" 
     } 
    } 
    } 
} 
+0

注意:值得注意的是,由Asset Manager插件处理的软件包名称全部是**小写**。如果您在“require”中使用大写字母包,即使您在“包”部分中以相同的方式编写它们,也永远不会与插件匹配。 – Gabriel 2014-12-18 22:35:52

+1

还要注意事件挂钩 - https://getcomposer.org/doc/articles/scripts.md。我现在正在使用这些。吻。 – spinkus 2015-05-18 05:22:51