我正在为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
答案 0 :(得分:3)
并非他们是私人模块,而是scoped modules。它们应该位于与它们所在范围相同的目录中。使它们在root中安装的唯一方法是从包中删除范围。我建议寻求Node-RED团队的支持,看看他们是否有针对作用域模块的解决方法。
编辑:我冒昧地为你开了一个问题:) https://github.com/node-red/node-red/issues/885