【问题标题】:Managing development of 2+ nodejs packages with dependencies管理具有依赖关系的 2 个以上 nodejs 包的开发
【发布时间】:2014-08-19 22:25:53
【问题描述】:

我正在开发 2 个 node.js 包,每个包都在自己的 git 存储库中进行管理。包B依赖包A,所以我的本地目录结构如下:

A1/
B/
  node_modules/
    A2/

如果我对A1 的本地代码进行更改,我想在将其推送到公共存储库之前使用B 对其进行测试。我该怎么做?

在当前状态下,B 拥有自己的本地副本 (A2),因此它引用了不同的版本。 B是一个公共包,所以我想避免直接将B的源代码修改为引用A1

一种可能的解决方案是拥有B 的2 个本地副本:B1 是已发布的公共版本,它对A2 有自己的本地依赖关系,B2 是我自己的直接引用@的私有版本987654335@ 使用 require('./../A1') 之类的东西。

A1/
B1/
  node_modules/
    A2/
B2/

这看起来有点难看(并且会迫使我保留 2 个 B 的副本),我想知道是否有推荐的方法来处理这种情况?

谢谢。

【问题讨论】:

    标签: node.js git package npm


    【解决方案1】:

    在最简单的情况下,符号链接可以解决问题。但你可能会更进一步,使用某种花哨的构建系统,如 grunt、gulp 等。 我正在为我的所有项目使用经典的 make 脚本。因此,您可以在测试之前将一个项目复制到另一个项目中,例如:

    NPM = /usr/bin/env npm
    MODULES = ./node_modules/
    PROJECTS_PATH = ../
    DEPENDENCY = project_a/
    
    default: test
    
    test: copy
        $(NPM) test
    
    copy:
        @rm -rf $(MODULES)$(DEPENDENCY)
        @cp -r $(PROJECTS_PATH)$(DEPENDENCY) $(MODULES)$(DEPENDENCY)
    
    install:
        @rm -rf $(MODULES)
        $(NPM) install
    
    .PHONY: test
    

    它不是最好的构建脚本,但它可以完成这项工作。大多数 unix 系统都会安装make。所以它也很便携。

    【讨论】:

    • 太棒了,谢谢!我刚刚也发现了npm link,它将为我处理符号链接的创建。您的makefile 解决方案(或咕噜声)将适用于更复杂的设置。
    猜你喜欢
    • 2013-09-23
    • 2015-09-19
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2014-08-25
    相关资源
    最近更新 更多