我正在使用 node.js 的 jsdom 包,但我遇到了问题。我修复了它,我在我的计算机上手动编辑 /node_modules/jsdom/lib/jsdom/level2/languages 中的源代码,它可以工作。但是,现在我想将我的程序发布到另一台服务器。
处理这种修改后的依赖关系的最佳方法是什么?一般来说,我应该如何处理从 npm install 修改的依赖项?
好吧,正确的做法是向维护者提交补丁,以便上游修复(长期)。同时,只需保留修改后的文件,在安装主包后,重命名原始文件 ( mv file.js file.js.ORIG
),然后在副本中进行符号链接 ( ln -s ../../../patches/jsdom/level2/languages/file.js file.js
)。
这是一个快速而肮脏的选择。另一种选择是使用修改后的源代码构建一个新的 npm tarball,然后将 NPM 指向那里。该npm install
命令可以获取 .tar.gz 存档的本地文件系统路径。那也行。
如果修复程序已包含在代码库中,但尚未发布到 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"
}
感谢 tmpvar!