2017-02-16 68 views
1

我在防火牆後面有一個Team Foundation Build服務器,我想檢查與項目關聯的node_modules/目錄(爲Browserify客戶端應用程序和Node服務器應用程序供電),以便部署所需的所有文件和依賴項一個構建可用而不需要任何東西。如何檢查`node_modules /`下的`bin /`目錄到TFS中?

檢查到TFS node_modules/起初看起來上班,只是出現在我的NPM依賴周圍20 bin/目錄中並沒有檢查。bin/沒有出現在我的.tfignore(或任何其他地方我知道這可能是阻止簽入)。

這些bin/目錄完全不會出現在團隊資源管理器中包含/排除的更改中。可以在Windows資源管理器中找到這些文件夾中的一個文件夾並將其添加到TFS上下文菜單中,但對所有依賴項執行此操作將會非常繁瑣且容易出錯。

如何說服TFS檢測這些文件夾中的更改?是否有一些其他配置會影響我不知道的包含/排除的更改?

+0

一個主要可用的解決方法:使用node_modules文件夾本身上的TFS添加上下文菜單項來拾取每個缺席的bin文件夾。仍然想知道它在哪裏配置! – Pathogen

+0

您是否在您的開發機器中安裝了任何可能會阻止簽入的VS擴展? –

回答

2

建議不要將「bin」文件夾或「node_modules」文件夾上載到版本控制中。但是,如果你想做到這一點,按照下面的步驟:

  1. 轉到"C:\Users\youraccount\AppData\Local\Microsoft\Team Foundation\x.0\Configuration\VersionControl"文件夾,打開「LocalItemExclusions.config」文件。 (可能有幾個文件夾命名爲喜歡的1.0,2.0,3.0,你需要確保打開文件夾VS當前使用。)

  2. 刪除線,如以下並保存文件:

<Exclusion>bin</Exclusion> 
    <Exclusion>*.dll</Exclusion> 
  1. 關閉Visual Studio。
  2. 刪除「node_modules」文件夾。
  3. 重新啓動Visual Studio。
  4. 運行「npm install」命令重新安裝節點模塊。
  5. 勾選「Pending Changes」,「bin」文件夾中的文件應該列在「Excluded Changes」部分。
+0

按照描述工作。我的節點模塊雖然沒有DLL文件(並且我將避免檢查實際的構建產品),「bin」目錄只包含腳本。 – Pathogen

0

檢查文件和bin文件夾是否會被TFS忽略。您可以嘗試手動添加它們(例如拖動到源代碼管理資源管理器)。如果你不能,那麼必須關聯一些.tfignore的設置,你可以仔細檢查一下,比如項目文件夾級別的根目錄中是否有.tfignore文件。

如果可以,您的工作區或bin文件夾的源代碼控制映射可能有問題。嘗試remove the source control bindings並重新綁定到TFS。還要嘗試刪除舊的工作區並使用新的工作區。

+0

將文件夾拖動到源代碼管理瀏覽器時,名爲'bin'的文件夾的內容顯示在'excluded items'下,並且可以包含在內。但是,如果我不這樣做,則不會檢測到「bin」的內容「團隊資源管理器」>「待定更改」。我在解決方案級別有一個'.tfignore',它裏面沒有任何與'bin'相關的東西。 – Pathogen

+0

恐怕'Bin'文件夾應該已經被TFS忽略了,它們不在源代碼控制之下。這些更改肯定不會在待處理的更改中顯示。那麼,你需要手動添加bin文件夾到源代碼控制第一次。並刪除工作區中的文件(檢入待定更改並標記備份),然後下拉最新版本,這可能會訣竅(創建一個新的正確的源代碼管理映射)。或直接使用新的工作區並刪除舊的。 –

+0

此外,通常我們不建議將BIN和OBJ文件夾添加到源代碼控制,但是添加第三方dll或使用nuget包來處理它們。 基本上所有你需要作爲你的應用程序的輸入是在源代碼控制,但你的應用程序的輸出(創建的DLL,PDB的等)不應包括在內。 –

-1

您不應該檢查node_modules - 永遠。

  1. 而是使用browserify或WebPack(我推薦WebPack)來打包你的bundle.js。
  2. 將bundle.js添加到您的source/scripts文件夾中。從您的html引用您的bundle.js,而不是任何< ../ node_modules /../ scripts>。
  3. 從構建腳本中刪除npm install。你不會現在就需要因引用您的bundle.js

的WebPack是一個開發步驟,但它保證你在開發過程中使用的包的版本,也節省了您的NPM部署期間安裝頭痛。

+1

我使用Browserify作爲我的客戶端代碼。但是我特別需要運行一個節點應用程序,其中包含一些無法添加到包中的內容。 – Pathogen

+1

由於錯誤的做法是將node_modules檢入源代碼管理,OP的防火牆構建服務器無法動態拉取NPM依賴關係的問題是有效的。我身處同一條船上,遺留的構建系統不包含像Browserify或Webpack之類的任何東西 - 它實際上是一個嚴重倒退的自制編譯系統,可以控制數百萬行代碼,如果您看到它,會讓您哭泣。因此,我*必須*檢查我的node_modules文件夾。簡單地說,「不這樣做」不是一個有用的評論。 – Artif3x