我正在尝试Grunt,需要一种简单的方法来连接我的模块

ugl*_*nky 14 javascript concatenation gruntjs

这是我第一次使用Grunt,我希望它将所有我的js模块组合在一起,每个模块都包含一个立即执行的函数,包含一个'use strict'声明并将它们放入一个文件中,仅包含在一个立即执行的函数,只有一个'use strict'声明.

这通常是怎么做的?

我认为这将是一个常见的用例?也许我会以错误的方式处理事情?我应该使用其中一种模块加载格式(即commonjs,amd)所有这些文件将始终一起加载到浏览器中,所以我实际上不介意删除所有立即执行的函数,如果这是人们通常如何去做的话.重要的是,最终结果以某种方式包装,传递lint和单元测试并包含'use strict'声明.

(我应该澄清一点,我确实有它工作,linting,单元测试,连接和缩小,当我在最终的连接文件中看到一堆不必要的立即执行函数时,我觉得我做错了.)

bri*_*lez 34

拉请求10开始,grunt-contrib-concat现在有了一个footer选项.我会使用横幅页脚,而不是介绍和outro文件.

Gruntfile.js

concat: {
  dist: {
    src: ['src/my-lib.js'],
    dest: 'dist/<%= pkg.name %>.js',
    options: {
      banner: ";(function( window, undefined ){ \n 'use strict';",
      footer: "}( window ));"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这更易于维护,并允许使用Gruntfile中定义的其他属性进行模板化.


elc*_*nrs 22

我通常像jQuery团队那样做.您创建一个intro.js并将outro.js其他所有内容放在其中:

intro.js

;(function( window, undefined ){
  'use strict';
Run Code Online (Sandbox Code Playgroud)

outro.js

}( window ));
Run Code Online (Sandbox Code Playgroud)

grunt.js:

concat: {
  dist: {
    src: [
      'js/src/intro.js',
      ...
      'js/src/outro.js'
    ],
    dest: 'js/out/app.js'
  }
}
Run Code Online (Sandbox Code Playgroud)