我有一个正在开发的 Node.js 服务器,我正在使用 nodemon 在源代码更改时重新启动服务器。
该服务器依赖于我也在开发的另一个模块,因此如果对该模块的更改也重新启动了服务器,那就太好了。
最好的尝试(谢谢,bitstrider!)
如果有人想查看它,我做了一个 repo 以最少的代码重现这个问题:https : //github.com/shawninder/nodemon-troubles
亮点在nodemon.json:
{
"ignoreRoot": [
".git",
".nyc_output",
".sass-cache",
"bower-components",
"coverage"
],
"ignore": [
"node_modules/!(is-node)",
"node_modules/is-node/node_modules"
]
}
Run Code Online (Sandbox Code Playgroud)
ignoreRoot与默认值相同,但没有node_modules.ignore是我试图告诉它忽略 node_modules 的地方,但不是is-node.这几乎有效(编辑 is-node 会重新启动服务器)但它正在监视所有节点模块,而不仅仅是 is-node。
如何告诉 nodemon 忽略除一个之外的所有节点模块?
细节
说明问题
Nodemon 在将其传递给 chokidar 之前,将忽略并将它们组合成一个大的正则表达式。它是一种基于正则表达式的自定义解析算法,既不支持全局否定也不支持正则表达式语法。例如,上面的示例生成以下正则表达式:
/\.git|\.nyc_output|\.sass\-cache|bower\-components|coverage|node_modules\/!\(is\-node\)\/.*.*\/.*|node_modules\/is\-node\/node_modules\/.*.*\/.*/
Run Code Online (Sandbox Code Playgroud)
请注意,否定字符在生成的正则表达式中!以文字结尾!。使用否定前瞻语法也不起作用,因为控制字符被转换为文字字符。
根据文档,由于nodemon用于minimatch匹配,您应该能够对符号使用否定。!
因此,对于您的情况,请尝试:
{
"ignore" : "node_modules/!(my-watched-module)/**/*"
}
Run Code Online (Sandbox Code Playgroud)
这应该忽略除其中的模块文件之外的所有模块文件my-watched-module
注意:
ignore这里的规则仅针对文件,而不是目录。这种行为在上下文中是有意义的,nodemon因为它监视文件更改。
| 归档时间: |
|
| 查看次数: |
2426 次 |
| 最近记录: |