如何使用 Nodemon 监控符号链接模块?

Posted

技术标签:

【中文标题】如何使用 Nodemon 监控符号链接模块?【英文标题】:How do I monitor symlinked modules with Nodemon? 【发布时间】:2015-07-13 20:02:45 【问题描述】:

我正在 Node.js 中开发一个模块,我已经将它 npm 链接到另一个项目的 node_modules 文件夹中。我想在我的模块中的文件更改时重新启动这个其他项目服务器。 Nodemon 默认忽略 node_modules,但我认为我可以使用 nodemon --watch node_modules/my_module 覆盖它——但无法让它工作。如果我暂时从 Nodemons lib/config/defaults.js 中删除 node_modules 它可以工作,这可能证实问题与覆盖默认行为有关。

【问题讨论】:

我自己也遇到了。我曾想过使用 forever.js,但看起来该库实际上并不支持将日志输出发送到标准输出(我认为这是一个破坏者)。 ...aaa 我找到了解决方案。我想我之前应该尝试过。 【参考方案1】:

使用 nodemon 1.2.1,我可以执行以下操作以使手表与 npm 链接一起工作:

$ nodemon --watch . --watch $(realpath node_modules/my_module)

基本上...您必须监视您所在的目录(您的项目目录),然后指定对符号链接本身的监视。 nodemon 默认忽略 node_modules,因此明确指定手表可以解决此问题。如果这对您不起作用,您可以尝试更新您的 nodemon 版本。

【讨论】:

这似乎不再起作用,请参阅this issue; @Tamlyn Hey - 如果存在,请随时编辑我的答案以包含新修复。如果这是一个好的答案,我可以制作这个社区 wiki 并保持开放以供编辑。 在我运行 brew install coreutils (macOS) 之后,这对我有用。否则找不到realpath 命令。最好单独运行realpath node_modules/my_module 以确保它返回有意义的内容,然后才调用nodemon ... 使用这个解决方案,我创建了一个小型包装器,它将自动监视所有链接的模块。只需npm install -g linkemon,然后只需使用linkemon 命令代替nodemon

以上是关于如何使用 Nodemon 监控符号链接模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Linux 符号链接中断

使用 npm 链接符号链接反应模块以进行本地开发会出错

链接共享库时限制符号的可见性

链接常识

当 iOS 应用程序链接到静态库时,如何获取丢弃的符号列表?

GNU链接器:替代--version-script在命令行列出导出的符号?