如何在grunt-ts中配置amdloader?

时间:2014-06-24 20:48:08

标签: gruntjs typescript

在我的项目中使用grunt-ts,这是我的Gruntfile:

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    ts: {
      build: {
        src: ['ts-src/**/*.ts'],
        //compile using the requirejs module style
        module: 'amd',
        //write generated files to ts-out directory
        outDir: '../js/ts-out',
        amdloader: 'loader.js',
        //generate a reference file
        reference: 'reference.ts',
        //generate .d.ts files
        declaration: true,
        options: {
          comments: true, //preserves comments
          target: 'es5' //emit ECMAScript5 JS
        }
      }
    },
    watch: {
      files: ['<%= ts.build.src %>'],
      tasks: ['ts']
    }
  });

  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-ts');
  grunt.registerTask('default', ['watch']);
}

这&#34;工作&#34;,但它正在生成一个loader.js文件,该文件错误地将outDir值预先添加到文件中的条目中。这会导致每个包含js / ts-out的文件的路径两次。

amdloader选项是否有配置选项,我可以覆盖它?

1 个答案:

答案 0 :(得分:1)

我怀疑它应该是:

    outDir: '../js/ts-out',
    amdloader: '../js/ts-out/loader.js',

参见:https://github.com/grunt-ts/grunt-ts/blob/master/Gruntfile.js#L101-L117,即:

       amdloadersrc: {
            test: true,
            src: ['test/amdloader/ts/app/**/*.ts'],
            html: ['test/amdloader/ts/app/**/*.html'],
            reference: 'test/amdloader/ts/app/reference.ts',
            outDir: 'test/amdloader/js/app',
            amdloader: 'test/amdloader/js/app/loader.js',
            //  watch: 'test/amdloader/app'
        },
        amdloadertest: {
            test: true,
            src: ['test/amdloader/ts/test/**/*.ts'],
            html: ['test/amdloader/ts/test/**/*.html'],
            reference: 'test/amdloader/ts/test/reference.ts',
            outDir: 'test/amdloader/js/test',
            amdloader: 'test/amdloader/js/test/loader.js',
        },

amdloader采用生成的JS位置的绝对路径