2013-10-08 89 views
5

我需要使用Composer來管理依賴項(normalize.css和其他),而不需要項目根目錄中的composer.js。我結束了定義一個包,但我有幾個問題:Composer git倉庫中的「版本」是否參考了GitHub上的版本(標籤)?

{ 
    "require": { 
     "twbs/bootstrap": "~3.0", 
     "fortawesome/font-awesome": "~3.2", 
     "necolas/normalize.css": "*" 
    }, 
    "repositories": [ 
     { 
      "type":"package", 
      "package": { 
       "name": "necolas/normalize.css", 
       "version":"2", 
       "source": { 
        "url": "https://github.com/necolas/normalize.css.git", 
        "type": "git", 
        "reference":"master" 
       } 
      } 
     } 
    ] 
} 

是否在我的包version指釋放(標籤)在GitHub的倉庫?如果是,我該如何指定~2.1(我得到無效的包裝定義)或最新的標籤?

對於necolas/normalize.css我希望隨時獲得最新版本的master分支。

回答

5

「難道我的包的版本指發佈」

不,package進入內部版本定義了作曲家應該是指這個軟件包的版本號。

不幸的是,即使它們來自Git,也需要明確設置version

「我如何指定〜2.1(我得到無效的包定義)或最新的標籤?」

看起來你不能。包中列出的版本必須是實際版本號,而不是版本號範圍,並且無法從Git獲取標籤,這很糟糕。

如果您要使用Package存儲庫替換爲使用zipball Artifact包,那麼在從Github下載zipball後,添加composer.json及相關信息將非常簡單。

我已經添加了作爲https://github.com/Danack/IntahwebzRepo的概念驗證,這是一個簡單的腳本,用於從Github下載zipball,然後向其composer.json添加版本條目,或者完全生成composer.json還沒有一個。

一旦zipball被下載並修改,然後在Satis(aka Packagist)存儲庫中使用它們。

+1

也就是說,從包中擦除版本將讓我指定通常的方式(require + semver)的版本? – gremo

+1

是的,它應該這樣做。 – Danack

+1

不起作用。當您從軟件包中刪除版本時,運行composer時出現錯誤(無效的軟件包定義)。 – gremo

5

這裏是我的解決方案:

出於測試目的,我有這個composer.json文件:

{ 
    "name": "mycompagny/composer-project", 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "http://localhost/git/test.composer.dep.git" 
     } 
    ], 
    "require" : { 
     "mycompagny/test.composer.dep": "dev-master#v2.0.0" 
    }, 
    "minimum-stability": "dev" 
} 

在需要的關鍵,把#youversion DEV-主後指向你的git的標籤「 yourversion」。

#這裏的標籤作爲提交。 (根據:https://getcomposer.org/doc/04-schema.md#package-links

相關問題