2017-04-03 91 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

相關問題