【问题标题】:node.js require modules at different git tag pointsnode.js 在不同的 git 标签点需要模块
【发布时间】:2012-08-30 04:38:42
【问题描述】:

我正在开发一个 node.js express 应用程序以及几个私有 node_modules。

我想通过使用 git 标签让我的用户接触这些模块的不同版本。这是一个明智的想法吗?是否有一种同样明智的方法来做到这一点,即自动检测标签,并在每个 git 标签引用处要求模块?

可能存在“git-helpers”之类的东西? (代码是咖啡脚本)

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}

然后 modules 变量看起来像这样

[
 { 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")

【问题讨论】:

    标签: git node.js


    【解决方案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')
    

    【讨论】:

    • 是的,我没有忽略这个选项。它对我来说不太合适,因为它要求我在添加标签时不断更新我的依赖项。我还需要更新应用程序内的代码,以便它知道需要新标签。虽然如果这是一个模块,这可能不会成为问题,但我有很多模块,每个模块都需要公开它们的标记版本。我希望这是有道理的!
    • 我想我误解了你的问题 :) 顺便说一下,我没有看到实现你需要的实用方法,也许一个简单的类似 CDN 的目录结构就可以了(就像 cdnjs 所做的那样)。
    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多