2017-04-03 132 views
1

我有一个我正在开发的Node.js服务器,并且我使用nodemon在源代码更改时重新启动服务器。如何告诉nodemon忽略除一个目录以外的所有node_modules

此服务器对另一个模块(我正在开发)有依赖性,所以如果对该模块的更改也重新启动了服务器,那将会很好。

最好的尝试尚未(!谢谢,bitstrider)

我做了一个回购协议,如果有人想检查出来重现此问题用最少的代码: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" 
    ] 
} 
  • ignoreRoot相同the defaults,但没有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\/.*.*\/.*/ 

通知否定字符!端向上作为在所得的正则表达式字面!。使用负向预览语法也不起作用,因为控制字符被转换为文字字符。

回答

1

由于nodemon使用minimatch进行匹配,因此根据documentation,您应该能够使用符号为!的否定。

所以你的情况,请尝试:

{ 
    "ignore" : "node_modules/!(my-watched-module)/**/*" 
} 

这应该忽略所有模块文件除了那些内my-watched-module

注:ignore规则在这里只针对文件,不是目录。这种行为在nodemon的背景下有意义,因为它正在监视文件更改。

+0

应该但不。在我最近的尝试中,我在nodemon.json中使用了以下内容: '{“ignoreRoot:[”.git“,”.nyc_output“,”.sass-cache“,”bower-components“,”coverage“],忽略“:[”node_modules /!(my-watched-module)“,”node_modules/my-watched-module/node_modules“]} 它正确地观看我观看的模块,而不是观看我观看的模块的node_modules,但它仍然在观看其他节点模块... – Shawn

+0

我编辑我的问题,并带有一个链接到一个回购问题,如果您有兴趣,可以重现问题 – Shawn

+0

@Shawn我的更新答案应该适用于您 – bitstrider

相关问题