如何使用grunt创建require.js包

时间:2013-11-10 02:20:55

标签: javascript requirejs gruntjs amd

我已经构建了一个js库,我想使用grunt打包为AMD模块。还有其他任务连接库文件,所以我将非AMD模块作为一个开始。

这就是Gruntfile的样子:

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    concat: {
      all: {
        options: {
          separator: '\n\n',
          stripBanners: true,
          banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
            '<%= grunt.template.today("yyyy-mm-dd") %> */\n\n'
        },
        files: {
          'dist/<%= pkg.name %>.js': ['src/file1.js', 'src/file2.js'], // this works
          'dist/<%= pkg.name %>.amd.js': ['src/file1.js', 'src/file2.js'] // this is meant to create the AMD version of the library
        }
      }
    }
 });
 grunt.registerTask('default', ['concat']);
};

生成的文件(针对目标library.amd.js)旨在包含library.js的内容,包括define(..., ..., ...)的{​​{1}}部分:

require.js

我怎么能这样做?我考虑过向{+ 1}}(define('library', ['dependency1', 'dependency2'], function(dep1, dep2) { // content of library.js here }); )和header.js(对于define('library...)添加AMD目标的构建源,但希望有一个更优雅的解决方案。我还查看了grunt模板,但找不到将完整文件包含到模板中的方法。

1 个答案:

答案 0 :(得分:2)

您可以使用grunt-umd将文件包装在通用模块定义

许多库在您描述的构建中连接页眉和页脚文件。这方面的一个示例是snap.svg(请参阅amd-banner.jsamd-footer.js及其gruntfile.js