2013-02-27 155 views
2

請原諒我咕嚕noobiness。 我有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第一次運行,既醜化和imagemin任務不處理(輸出)任何東西。如果我再次啓動它一切正常。如果我手動刪除「temp」文件夾並重新啓動,則uglify和imagemin不會再執行任何操作。

請幫我找到我做錯了什麼。 節點是0.8.2版本,gruntcli 0.1.6,0.4.0咕嚕

感謝您閱讀

+0

更新:它總是在第一次運行時發生,並且可能在其他場合隨機(很少)發生。這看起來像是異步處理的問題。 – Greg 2013-03-02 06:41:00

回答

1

其中的原因,是grunt.file.expandMapping(你在這兩個任務使用)運行當gruntfile加載時,而不是當實際任務運行時。所以通過其他任務生成的文件將無法用於imagemin/uglify任務。

你應該使用files-object與你在其他任務中使用的方式相同!

+0

我不知道。這很有道理,謝謝! – Greg 2013-07-02 23:15:58