2015-09-22 4 views
0

У меня есть пара grunt copy задач определены:Грунт пользовательских задачи копирование файлов, которые должны быть исключены

copy : { 
    develop : { 
     expand : true, 
     flatten : false, 
     cwd : "develop/", 
     src : ["index.html", "gwt/**/*", "!**/*.less", "!**/*.scss", "modules/**/*", "components/**/*", "resources/**/*", "!resources/styles/**"], 
     dest : "build/" 
    }, 
    // TODO: figure out how to update glyphicon paths to build 
    bootstrap_assets : { 
     expand : true, 
     flatten : false, 
     src : ["bower_components/bootstrap-sass/assets/fonts/**/*"], 
     dest : "build/" 
    }, 
} 

и объединить их в пользовательской задаче

// Intermediate Task - Copy dev resources to build 
grunt.registerTask("copy_dev", ["copy:develop", "copy:bootstrap_assets"]); 

Внутри папок modules, я хочу скопируйте все содержимое, НО файлы scss. Когда я запускаю grunt copy:develop, у меня есть поведение, которое я ожидаю, со всеми файлами, кроме *.scss, копирование. Однако, когда я запускаю grunt copy_dev, все содержимое modules копируется.

Это часть выхода из grunt copy_dev --verbose:

Running "copy:develop" (copy) task 
Verifying property copy.develop exists in config...OK 
Files: develop/modules/front-page -> build/modules/front-page 
Files: develop/modules/front-page/front-page.html -> build/modules/front-page/front-page.html 
Files: develop/modules/front-page/front-page.scss -> build/modules/front- page/front-page.scss 
Files: develop/modules/login -> build/modules/login 
Files: develop/modules/login -> build/modules/login 
Files: develop/modules/login/bigLogo.png -> build/modules/login/bigLogo.png 
Files: develop/modules/login/login-view.html -> build/modules/login/login-view.html 
Files: develop/modules/login/login.js -> build/modules/login/login.js 
Files: develop/modules/login/login.scss -> build/modules/login/login.scss 
Files: develop/modules/login/logo -> build/modules/login/logo 
Files: develop/modules/login/logo/lg.png -> build/modules/login/logo/lg.png 
Files: develop/modules/login/logo/md.png -> build/modules/login/logo/md.png 
Files: develop/modules/login/logo/sm.png -> build/modules/login/logo/sm.png 

Как вы можете видеть, есть ряд *.scss копирования файлов при выполнении пользовательской задачи, в то время как они не с помощью регулярного copy:$name вызова.

Почему это?

ответ

2

Ваш вопрос в том, что Grunt обрабатывает ваши директивы SRC/Dest слева направо, чтобы построить список файлов для копирования, а не применять все правила в то же время (http://gruntjs.com/configuring-tasks#globbing-patterns), так:

  • " index.html»> добавляет index.html
  • "GWT/**/*"> добавляет все под GWT
  • "! **/*. меньше"> удаляет все меньше файлов из текущего списка копирования, то есть меньше файлов под gwt
  • "! **/*. СКС"> Мет
  • "модули//*"> добавляет все под модули ** включая все меньше и SCSS файлы
  • ...

Так вы необходимо изменить свой заказ, если вы хотите, чтобы все копии были скопированы не полностью и не были скопированы:

src : ["index.html", "gwt/**/*", "modules/**/*", "components/**/*", "resources/**/*", "!**/*.less", "!**/*.scss", "!resources/styles/**"] 

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

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