Задача файла грабли со 100 -х годов файлов
Вопрос
Я только сейчас узнаю о файловых задачах в Rable. У меня есть 100 -е исходные файлы JavaScript, которые объединяются с 10 файлами или около того. Я вижу, что такого рода сопоставление можно сделать разумно с помощью файловых задач. Похоже, вам нужно указать каждый файл.
Есть ли эффективный способ написать файловую задачу, которая рекурсивно находит все эти файлы JavaScript, и сравнить их с объединенными файлами на правой стороне? Часть конкатенации является сложным шагом и делается настраиваемым инструментом сборки в настоящее время, пока я не смогу получить это в Ruby.
Например,
/a.js
/c.js -----------> base.js
/geo/b.js
/geo/c.js -----------> geo.js
/mod/d.js
/mod/e.js -----------> mod.js
Решение
file 'base.js' => Dir['*.js'] do |t|
concatenate t.prerequisites, t.name
end
file 'geo.js' => Dir['geo/*.js'] do |t|
concatenate t.prerequisites, t.name
end
И так далее, вам придется реализовать concatenate
Метод, очевидно, (в моем примере первым аргументом является список файлов, а второй - файл назначения, например, geo.js
) Если все созданные файлы названы в честь каталогов, вы можете сделать что -то вроде этого:
%w(geo mod xyz abc).each do |module|
file "#{module}.js" => Dir["#{module}/*.js"] do |t|
concatenate t.prerequisites, t.name
end
end
Если каким -то образом каталоги могут быть глобали Dir[...]
слишком.
Другие советы
Как вызвать эту задачу файла Rake?
%w(geo mod xyz abc).each do |module|
file "#{module}.js" => Dir["#{module}/*.js"] do |t|
# some code
end
end
Рейбл ????