2014-03-03 28 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这样的系统可以帮助更多...我会弄清楚并编辑这个答案。

相关问题