2014-02-14 38 views
1

偶爾會發生一個模塊的開發版本在我的開發工作區中工作,並傳遞給Travis-CI,但在發佈到npm後,最終用戶軟件包將打破。如何自動測試npm包的用戶版本,而不是在持續集成上運行開發版本?

例如,如果您使用應該在dependencies中的子模塊,但是在devDependencies中使用了子模塊,則CI將通過(但還有很多其他可能的中斷)。

如何自動化測試?你使用外部綁定嗎?有沒有祕密模塊?你有一個用戶驗收測試套件嗎?

我使用Github和Travis-CI,但標準安裝程序使用開發安裝。

回答

2

曾幾何時,我發現npm會讓我發佈不可卸載的軟件包。所以我添加了一個目標,以我的Gruntfile做這個:

  1. 問題npm pack從我的源創建數據包。

  2. 進入爲了測試而創建的目錄(由我的Gruntfile自動創建),使用npm install <path to the package created in the previous step>安裝新軟件包。

我有一個發佈新版本的目標,只有在上述步驟成功時纔會發佈。

上面的步驟不會捕獲您在問題中提到的依賴關係問題,但可以很容易地將它們擴展來捕獲它。爲此,我會添加一個或多個測試,以使上述步驟2中安裝的軟件包可以調用require及其所依賴的所有軟件包。

+0

這聽起來不錯:我已經有一個npm prepublish腳本鏈接到一個咕task任務,這適合;我認爲這應該都可以從node/grunt內部完成,即使是在Travis上,也可以將內容寫入臨時目錄。 – Bartvds

0

我建議設立你自己的CI服務器,基本上做一件事,npm install package ; cd node_modules/package ; npm test。這可以確保您的軟件包至少可以安裝在您的服務器上。

我聽說Jenkins對此很有幫助(至少,這就是node.js核心團隊似乎正在使用的),但是還沒有任何第一手經驗。我們只是計劃在幾個星期內開始。

此外,有一些外部模塊,取決於你和測試它有點幫助。 :)

+0

我不想設置自己的CI,因爲我想將此解決方案用於開源代碼(也),並將其平滑到常用的Github/Travis工作流程中。 – Bartvds

相關問題