Задача файла грабли со 100 -х годов файлов

StackOverflow https://stackoverflow.com/questions/4389949

  •  10-10-2019
  •  | 
  •  

Вопрос

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

Рейбл ????

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top