2014-11-26 2 views
0

Я использую grunt для автоматического создания каталога сборки и его содержимого в случае изменения любого исходного файла. Теперь я пытаюсь посмотреть каталог сборки и скопировать его содержимое в папки проекта всякий раз, когда изменяется какой-либо файл в папке сборки, однако часы grunts не обнаружат никаких изменений в файлах внутри каталога сборки, хотя они постоянно перезаписываются. В чем может быть проблема?Файлы файлов гранта, созданные grunt

Мой упрощена хрюкать конфигурационный файл, чтобы дать вам идею:

grunt.initConfig({ 
    concat:{ 
     js:{ 
      files:{ 
       "build/init.js : ["src/init.js"] 
      } 
     } 
    }, 
    copy:{ 
     toproject:{ 
      expand: true, 
      filter: "isFile", 
      cwd : "build/", 
      src : "*.js", 
      dest : "d:/path/to/my/project/js/" 
     } 
    }, 
    watch:{ 
     js:{ 
      files : ["src/*.js"], 
      tasks : ["concat:js"] 
     }, 
     copybuildtoproject:{ 
      files : ["build/*.js"], 
      tasks : ["copy:toproject"] 
     } 
    } 
}); 

Хотя init.js постоянно перезаписаны в директории сборки, копия: toproject никогда не будет уволен. Я знаю, что могу скопировать файлы сразу, когда они были согласованы с src, но мне нужно, чтобы это работало, как я объяснил выше.

ответ

0

два возможных подхода:

1) переименовывать задачу часов, нагрузка смотреть второй раз

Вы можете использовать grunt.renameTask переименовать первую задачу часов, а затем загрузить вторую копию часов. Это будет выглядеть примерно так:

//from your grunt.initConfig... 
watch:{ 
    js:{ 
     files : ["src/*.js"], 
     tasks : ["concat:js"] 
    } 
}, 
watchbuild:{ 
    copybuildtoproject:{ 
     files : ["build/*.js"], 
     tasks : ["copy:toproject"] 
    } 
} 

// then later... 
grunt.loadNpmTasks('grunt-contrib-watch'); 
grunt.renameTask('watch', 'watchbuild'); 
grunt.loadNpmTasks('grunt-contrib-watch'); 
grunt.registerTask('default',['watch','watchbuild']); 

2) использовать хрюкать-параллельный

Второй вариант заключается в использовании grunt-concurrent плагин. Вы не добавили бы watch к любым задачам, только цель concurrent. В этом случае ваш файл Grunt будет выглядеть так:

grunt.initConfig({ 
    watch:{ 
     js:{ 
      files : ["src/*.js"], 
      tasks : ["concat:js"] 
     }, 
     copybuildtoproject:{ 
      files : ["build/*.js"], 
      tasks : ["copy:toproject"] 
     } 
    }, 
    concurrent: { 
     watch1: ['watch:js'], 
     watch2: ['watch:copybuildtoproject'] 
    } 
}); 

grunt.registerTask('default', ['concurrent:watch1','concurrent:watch2']); 

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

  • Нет связанных вопросов^_^