2014-03-03 35 views
0

我想發佈一個模塊到幾個組件管理器系統:npmjs,bower等...另外我還想創建可下載的版本,例如AMD中的requirejs風格,一個commonJS風格,一個全局風格在瀏覽器中的命名空間,爲他們每個人縮小等等......這些都是超過10個版本。如何測試同一模塊的多個版本?

我目前有一個AMD版本,我用amd風格的karma,jasmine和requirejs爲它寫了單元測試。你有什麼建議,如何爲他們生成其他版本和測試?

我的意思是我不能決定我應該有什麼作爲轉化的基礎。每個輸出包中都有一個共同部分,並且還有一個與包相關的部分。

AMD - requirejs(我不知道如何使用配置選項)

define(["module", "dependency"], function (module, dependency) { 
    var m = { 
     config: function (options){ 
      //... 
     }, 
     //... 
     //do something with the dependency 
    }; 

    m.config(module.config()); //load config options set by require.config() 
    return m; 
}); 

CommonJS的

var dependency = require("dependency"); 
module.exports = { 
    config: function (options){ 
     //... 
    }, 
    //... 
    //do something with the dependency 
}; 

全球

var m = (function(){ 
    return { 
     config: function (options){ 
      //... 
     }, 
     //... 
     //do something with the dependency 
    }; 
})(dependency); 

我不知道,我應該發展常見的代碼和每次測試之前的構建,還是我應該開發一個包,測試它並編寫一個轉換從那到另一個版本?

我打算在自動發佈它們之前,使用gulp爲它們中的每一個自動創建構建和調用單元測試。哦,我還需要一個自動版本號更改。順便說一句。是否有必要在構建過程之後調用單元測試,你覺得怎麼樣?我只是想確定,這不是一個bug的代碼被髮布...

回答

0

有用於一飲而盡轉型庫:

因此很容易將一個包格式轉換爲另外兩種格式。這可以通過測試和代碼來完成。 commonjs可以用節點和茉莉節點來測試,標準js可以通過業力和茉莉來測試,amd可以通過karma,requirejs和jasmine來測試。

在每次測試之前創建一個通用描述符並將其轉換是一個糟糕的選擇。我不想創建另一種語言,如coffeescript等等,所以包之間的轉換可以。

在發佈之前調用單元測試是可以的。沒有其他常見的軟件包類型,所以這3個軟件包對於我將使用的每個組件管理器都足夠了。

我不確定版本。手動設置它並不難,但是像travis或maven這樣的系統可以幫助更多...我會弄清楚並編輯這個答案。

相關問題