Grunt似乎在第一次运行时跳过了一些任务

时间:2013-02-27 02:38:36

标签: gruntjs

请原谅我的咕噜咕噜声。 我已正确安装了grunt 0.4并正常工作,我很喜欢它。

但我无法理解为什么我的默认任务总是在第一次跳过某些子任务。

以下是Gruntfile的相关部分:

// Project configuration.
grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),

  copy: {
    main: {
      files: [
        {src: ['src/**'], dest: 'temp/'} // includes files in path and its subdirs
      ]
    }
  },

  uglify: {
    main: {
      files: grunt.file.expandMapping(['temp/**/*.js', '!temp/**/*min.js'], './')
    }
  },

  imagemin: {
    main: {
      files: grunt.file.expandMapping(['temp/**/*.png', 'temp/**/*.jpg'], './')
    }
  },

  compress: {
    main: {
      options: {
        archive: 'archive.zip'
      },
      files: [
        {expand: true, cwd: 'temp/src/', src: ['**'], dest: './'} // makes all src relative to cwd
      ]
    }
  },

  clean: ["temp", "archive.zip"]

});

// Load the plugins
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-contrib-clean');

// Default task(s).
grunt.registerTask('default', ['clean', 'copy', 'uglify', 'imagemin', 'compress']);
grunt.registerTask('test', ['clean', 'copy', 'uglify']);

在第一次运行grunt时,uglify和imagemin任务都不会处理(和输出)任何内容。如果我再次启动它一切正常。如果我手动删除“temp”文件夹并重新grunt,则uglify和imagemin不再执行任何操作。

请帮助我找到我做错的事。 Node是版本0.8.2,gruntcli 0.1.6,grunt 0.4.0

感谢您阅读

1 个答案:

答案 0 :(得分:1)

原因是grunt.file.expandMapping(在两个任务中都使用)在加载gruntfile时运行,而不是在运行实际任务时运行。所以通过其他任务生成的文件将无法用于您的imagemin / uglify-task。

你应该像在其他任务中一样使用files-object!