2013-02-27 3 views
2

Прошу простить мою ругательство. У меня хрюк 0,4 правильно и работает, и я люблю его.Grunt, кажется, пропускает некоторые задачи при первом запуске

Я не могу понять, почему моя задача по умолчанию всегда пропускает некоторые подзадачи в первый раз.

Вот соответствующая часть 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» и relauch grunt, uglify и imagemin больше ничего не сделают.

Пожалуйста, помогите мне найти то, что я делаю неправильно. Узел версия 0.8.2, 0.1.6 gruntcli, хрюкать 0.4.0

Спасибо за чтение

+0

Обновление: оно всегда происходит при первом запуске и может случиться случайным образом (и редко) в других случаях. Это похоже на проблему с асинхронной обработкой. – Greg

ответ

1

Причиной этого является то, что grunt.file.expandMapping (который используется в обеих задач) работает когда загружается файл grunt и NOT, когда выполняется реальная задача. поэтому файлы, созданные другими задачами, не будут доступны для вашей задачи imagemin/uglify.

вы должны использовать файлы-объекты так же, как и в других ваших задачах!

+0

Я этого не знал. Это имеет смысл, спасибо! – Greg

Смежные вопросы