2012-09-05 24 views
0

我正在開發一個node.js express應用程序以及幾個私有node_modules。node.js需要不同git標籤點上的模塊

我想通過使用git標籤將我的用戶公開給這些模塊的不同版本。這是一個明智的想法,是否有通過自動檢測標籤來做到這一點的同樣明智的方法,並要求每個這些git標籤引用中的模塊?

也許像'git-helpers'可能存在? (代碼的CoffeeScript)

git = require('git-helpers?').dir('./node_modules/module/') 
tags = git.getGitTags() 

modules = [] 

for tag in tags 
    git.requireAtGitTag tag, (err, res) -> 
    modules.push {version: tag, module: res} 

然後模塊變量將是這個樣子

[ 
{ version: "0.8", module: required_module_here_at_tag}, 
{ version: "0.9", module: required_module_here_at_tag}, 
{ version: "1.0", module: required_module_here_at_tag} 
] 

編輯

我想出了使用一個被稱爲Node.js的Git的CLI包裝的想法Gift。這是一個明智的做法嗎?

gift = require("gift") 
repo = gift("./node_modules/moduleA") 

modules = [] 

repo.tags (err, tags) -> 
    for tag in tags 
    repo.checkout tag.name, (err, a) -> 
     modules.push 
     version: tag.name 
     module: require("./node_modules/moduleA") 

回答

1

到archieve這樣的事情最好的辦法是使用NPM:在您的應用程序文件夾Git URLs as Dependencies

例如package.json

{ 
    "name": "foobar", 
    "version": "0.0.1", 
    "dependencies": { 
    "library": "git://example.com/user/project.git#tag_name" 
    } 
} 

則可以:

var library = require('library') 
+0

呀,我沒有忽視這個選擇。它對我來說不太合適,因爲它需要我在添加標籤時不斷更新依賴關係。我還需要更新應用程序內的代碼,以便知道需要新標籤。雖然這可能不會是一個問題,如果這是一個模塊,我有大量的模塊,每個都需要公開他們的標籤版本。我希望這是有道理的! – Nick

+0

我想我誤解了你的問題:)順便說一句,我沒有看到一種實際的方式來實現你所需要的,也許一個簡單的類似CDN的目錄結構會做(像什麼[cdnjs](https://github.com /cdnjs/cdnjs.git))。 – LoG

相關問題