5

我正在使用 node.js 的 jsdom 包,但我遇到了问题。我修复了它,我在我的计算机上手动编辑 /node_modules/jsdom/lib/jsdom/level2/languages 中的源代码,它可以工作。但是,现在我想将我的程序发布到另一台服务器。

处理这种修改后的依赖关系的最佳方法是什么?一般来说,我应该如何处理从 npm install 修改的依赖项?

4

2 回答 2

4

好吧,正确的做法是向维护者提交补丁,以便上游修复(长期)。同时,只需保留修改后的文件,在安装主包后,重命名原始文件 ( mv file.js file.js.ORIG),然后在副本中进行符号链接 ( ln -s ../../../patches/jsdom/level2/languages/file.js file.js)。

这是一个快速而肮脏的选择。另一种选择是使用修改后的源代码构建一个新的 npm tarball,然后将 NPM 指向那里。该npm install命令可以获取 .tar.gz 存档的本地文件系统路径。那也行。

于 2011-07-10T02:15:40.230 回答
3

如果修复程序已包含在代码库中,但尚未发布到 npm,您可以使用 npm 安装 tarball 而不是注册包。Github 为每个提交提供一个 tarball,只需点击下载。

因此,对于 jsdom 的这个特殊问题。您可以使用以下 npm 命令:

npm install https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab

它也适用于 package.json:

"dependencies" : {
  "jsdom" : "https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab"
}

在此处阅读更多信息:https ://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab#commitcomment-475293

感谢 tmpvar!

于 2011-07-13T16:00:38.500 回答