配置Grunt多个目标

时间:2013-12-30 14:02:41

标签: gruntjs

我正在尝试配置两个uglify目标:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      development: {
        options: {
          banner: '// DEVELOPMENT\n',
          report: 'gzip'
        },
        build: {
          src: 'js/**/*.js',
          dest: 'dist/<%= pkg.name %>.min.js'
        }
      },

      production: {
        options: {
          banner: '// PRODUCTION\n'
        },
        build: {
          src: 'js/**/*.js',
          dest: 'dist/<%= pkg.name %>.min.js'
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.registerTask('default', ['uglify:production']);
};

uglify:developmentuglify:production都不会产生任何输出或错误。

如果我不使用任何目标(只需将optionsbuild目录添加到uglify对象),任务就可以正常运行。

还有什么我想念的吗?

1 个答案:

答案 0 :(得分:2)

它无效的原因是你必须从某个地方复制它,并假设build是目标的一部分,而实际上应用于每个目标的选项,build a 目标。

options可以是针对特定目标的,也可以适用于每个目标。

试试这样:

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      development: {
        options: {
          banner: '// DEVELOPMENT\n',
          report: 'gzip'
        },
        src: 'js/**/*.js',
        dest: 'dist/<%= pkg.name %>.min.js'
      },

      production: {
        options: {
          banner: '// PRODUCTION\n'
        },
        src: 'js/**/*.js',
        dest: 'dist/<%= pkg.name %>.min.js'
      }
    }
  });