2011-07-10 50 views
3

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

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

回答

4

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

这是一个快速和肮脏的选择。另一种选择是使用修改后的源代码和点NPM来构建新的npm tarball。 npm install命令可以将本地文件系统路径导入.tar.gz存档。那也可以。

+0

谢谢彼得。此修复程序实际上已经在代码库中,但尚未发布到npm。以下是关于具体细节的更多信息:https://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab#commitcomment-475293我正在使用tmpvar建议的修复程序。即“npm install https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab”。但是,您的建议对于我在原始问题中发布的信息看起来不错。 –

3

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

所以对于jsdom的这个特殊问题。您可以使用下面的命令故宫:

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!

+0

当修复处于fork/pullrequest但尚未进入主repo时,这也很有用 – Tobbe

相关问题