在NPM / Node中替换包

时间:2016-02-11 19:50:09

标签: node.js npm

是否可以强制外部npm依赖项使用提供相同API但具有不同实现的不同node.js包?

3 个答案:

答案 0 :(得分:0)

您应该能够下载您喜欢的任何模块的源代码,并将该文件夹放在node_modules文件夹中。从那时起,您只需在Node.js应用程序中require,就像任何其他NPM模块一样。

答案 1 :(得分:0)

如果您愿意这样做并且该模块是开源的,您可以在github上分叉,更改他们的package.json以包含您想要的模块,并使用github url为您自己的package.json,如下所示:

"modulename": "git+https://git@github.com/user/repo.git"

答案 2 :(得分:0)

我建议下载所需API的代码,创建一个src / assets文件夹,将其放在那里,将package.json中的包名更改为npm中未使用的内容,然后使用'require('newPackageName') '在你的代码中。

如果您决定使用package.json的某些功能指向特定版本(例如使用“1.4.7”而非“^ 1.4.7”),或者如果您指向github地址,请小心你运行npm update。它将使用具有该特定名称的npmjs.org中的最新版本替换您的URL。我不知道它是否仍然在较新版本的npm中执行此操作,但在使用Node.js 0.12的版本中,这是默认行为。

我可以告诉你,节点shrinkwrap会起作用,但它也会阻止任何其他包的更新。不,你不能只有一个收缩包装的依赖,它必须是所有的,或者npm update不起作用。