2012-07-26 144 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

相關問題