0

我想将一个模块发布到几个组件管理器系统:npmjs、bower 等......另外我还想创建可下载的构建,例如一个用于 requirejs 的 AMD 样式,一个用于 commonJS 样式,一个用于全局命名空间浏览器,为它们中的每一个缩小,等等......这些是 10 多个版本。

我目前有一个 AMD 版本,我使用 karma、jasmine 和 requirejs 以 amd 风格为它编写了单元测试。你有什么建议,如何为它们生成其他构建和测试?

我的意思是我无法决定我应该拥有什么作为转换的基础。每个输出包中都有一个公共部分,也有一个包相关部分。

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;
});

通用JS

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 来创建构建并在自动发布它们之前为它们中的每一个自动调用单元测试。哦,我也需要自动更改版本号。顺便提一句。是否有必要在构建过程之后调用单元测试,您怎么看?我只是想确定,没有发布错误代码......

4

1 回答 1

0

gulp 有转换库:

因此很容易将一种包格式转换为另外两种格式。这也可以通过测试和代码来完成。commonjs可以用node和jasmine-node测试,标准js可以用karma和jasmine测试,amd可以用karma、requirejs和jasmine测试。

在每次测试之前创建一个通用描述符并转换它是一个糟糕的选择。我不想创建另一种语言,如咖啡脚本等......所以包之间的转换是可以的。

在发布之前调用单元测试是可以的。没有其他常见的包类型,所以这 3 个包对于我将使用的每个组件管理器都足够了。

我不确定版本控制。手动设置它并不难,但也许像 travis 或 maven 这样的系统可以提供更多帮助......我会弄清楚并编辑这个答案。

于 2014-03-04T03:15:36.637 回答