我目前正在开发我的第一个较大的 Node.js 应用程序,该应用程序应该使用类似插件的依赖项尽可能模块化地工作。
因为我处于开发的早期阶段,而且对节点也很陌生,所以这涉及大量的试验和错误,因此我需要经常重新启动应用程序。因此启动时间应尽可能短。
就我而言,我有这样的文件结构
/lib - core functionality
/plugins - local modules, will be moved to external packages later on
/plugins/project-users
/plugins/project-post
/plugins/project-forum
因为我想将这些插件移动到它们自己的包中,并在事情开始工作后将它们包含在 require('project-users') 中,所以我必须正确安装它们。
npm install ./plugins/project-users
npm install ./plugins/project-post
npm install ./plugins/project-forum
到目前为止,一切都工作正常,但每次对它们进行更改时,我都必须重新安装这些模块(因为这通常是在开始时,我使用脚本/预启动)。
我还尝试使用带有 fs 核心模块的符号链接,但它似乎不适用于 USB 闪存驱动器(至少我无法让它工作)。
现在的问题是这些插件相互依赖
- 项目论坛取决于项目帖子和项目用户
- 项目发布取决于项目用户
总而言之,我想到了一些问题:
我将如何在插件的 package.json 中引用这些依赖项?
有没有比每次预启动都运行 npm install 更好的解决方案?
另外,我如何确保只安装了项目用户的实例?每次运行 npm dedupe 似乎有点太多(显然取决于 1. 的答案)。
也许我只是想把这个事情搞复杂,或者我不太熟悉 Node.js 和 npm 的工作原理。请告诉我是否是这种情况。
如果有不清楚的地方,请随时询问。
UPDATE:我目前完全忽略了我的插件之间的依赖关系并将它们全部加载到我的“核心”对象({users: require('project-users'), post: require('project-post'), forum: require('project-forum')}
)。
然后,我必须手动检查模块是否已加载(因此设置了对象键)。
对我来说,这仍然不是最明智的解决方案,但目前它似乎有效。
唯一真正困扰我的是,每次更改模块的任何代码时,我都必须安装本地模块(目前只是在应用程序启动时重新安装所有模块)。