Rake файловое задание с сотнями файлов - PullRequest
0 голосов
/ 08 декабря 2010

Я только сейчас изучаю файловые задачи в Rake. У меня есть сотни исходных файлов 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

Ответы [ 2 ]

1 голос
/ 08 декабря 2010
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[...].

0 голосов
/ 09 декабря 2010

Как вызвать эту задачу с граблями?

%w(geo mod xyz abc).each do |module|
  file "#{module}.js" => Dir["#{module}/*.js"] do |t|
    # some code
  end
end

грабли ????

...