通过package.json安装的私有NPM模块没有父目录?

时间:2016-05-05 18:59:28

标签: node.js npm npm-install

我正在为Node-RED应用程序(http://nodered.org/)构建自定义节点,并将每个节点作为私有NPM模块发布,并将它们放在我的package.json中,如下所示:

"@di-dash/node-red-contrib-didash-output": "0.0.1",

但这使得它们安装在父目录中,如下所示:

/node_modules/@di-dash/node-red-contrib-didash-output

事实上,他们现在位于父目录中,而不是直接在node_modules目录中,就像我刚刚将github repos作为依赖性一样,阻止了Node-RED注意到它们并将它们包含在应用程序中。

我编写了一个grunt脚本,将它们从父目录中取出并直接放入node_modules并将其作为“postinstall”脚本放在package.json中,但这必须在应用程序启动后发生,因为Node-RED应用程序不是不再拿起我的自定义节点了。

如何在不使用父目录的情况下安装私有模块的任何想法,以便它们就像普通(非私有)NPM模块一样?

像这样: node_modules/node-red-contrib-didash-output

而不是: /node_modules/@di-dash/node-red-contrib-didash-output

1 个答案:

答案 0 :(得分:3)

并非他们是私人模块,而是scoped modules。它们应该位于与它们所在范围相同的目录中。使它们在root中安装的唯一方法是从包中删除范围。我建议寻求Node-RED团队的支持,看看他们是否有针对作用域模块的解决方法。

编辑:我冒昧地为你开了一个问题:) https://github.com/node-red/node-red/issues/885