node.js需要不同git标记点的模块

时间:2012-09-05 12:47:47

标签: git node.js

我正在开发一个node.js express app以及几个私有node_modules。

我希望通过使用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}
]

修改

我想出了一个使用名为Gift的node.js git cli包装器的想法。这是一种明智的做法吗?

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 个答案:

答案 0 :(得分:1)

实现此类目标的最佳方法是使用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')