构建big js包的脚本

时间:2012-09-05 14:47:15

标签: javascript node.js d3.js requirejs

我正在使用d3.js编写一个非常复杂的js图表库。代码组织在多个文件中(准确地说是17个),每个文件都有一个或多个类。此外,代码有多个外部依赖项,如d3.js,jQuery,下划线,......

要加载图表,必须以适当的顺序加载不同的文件,以便相对于彼此管理文件的依赖关系。

我想创建一个构建脚本来管理所有依赖项(内部和外部)以创建独立库。我知道requirejs,喜欢它并且想要使用它。但是我没有找到一种方法来使它在服务器端编译代码而不在客户端添加依赖。

这里的目标是通过仅加载一个文件,允许库在任何项目上轻松地用作任何其他库。由于我打算在服务器端使用该库,我希望该解决方案也与node.js兼容。

这是一个伪造的代码示例,显示了我的代码的样子。

//  in file1.js
var Foo = {}
Foo.Class1 = function(params){
    this.params = params;
    this.bar = function(){
        return this.params.bar || "bar";
    }
}

//  in file2.js
foo.Class2() = function(params){
   $.extend(this, new Foo.Class1(params));

   this.bar = function(){
        return this.params.bar || "BAR";
    }
}

2 个答案:

答案 0 :(得分:1)

有很多项目要合并JavaScripts,例如YUI CompressorGruntBrunch

答案 1 :(得分:1)

我选择和Grunt一起去。没有真正的理由,只是它看起来很好地记录并且非常活跃。

知道Grunt的存在不到15分钟,这里有一个grunt.js文件可以解决我的问题。

module.exports = function(grunt) {

    // Project configuration.
    grunt.initConfig({
      concat: {
        dist: {
          src: ['file1.js', 'file2.js'],
          dest: 'built.js'
        }
      }
    });
};

真的很期待使用更多Grunt!

欢呼AndreasKöberle!