attività File rastrello con 100s di file
Domanda
Sono solo ora conoscere le attività di file in rake. Ho 100s di file sorgente JavaScript, che vengono concatenati per 10 o giù di lì i file. Vedo questo tipo di mappatura può essere fatto in modo intelligente con attività di file. Sembra è necessario specificare ogni file.
C'è un modo efficiente per scrivere un compito file in modo ricorsivo trova tutti questi file javascript e confrontarle con i file concatenati sul lato destro? La parte di concatenazione è un passo difficile e è stato fatto da uno strumento di generazione personalizzata al momento fino a quando posso ottenere che in Ruby.
Ad esempio,
/a.js
/c.js -----------> base.js
/geo/b.js
/geo/c.js -----------> geo.js
/mod/d.js
/mod/e.js -----------> mod.js
Soluzione
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
e così via, si dovrà implementare il metodo concatenate
te stesso, ovviamente (nel mio esempio il primo argomento è l'elenco dei file e il secondo è il file di destinazione, ad esempio geo.js
). Se tutti i file creati sono il nome di directory si può fare qualcosa di simile:
%w(geo mod xyz abc).each do |module|
file "#{module}.js" => Dir["#{module}/*.js"] do |t|
concatenate t.prerequisites, t.name
end
end
Se le directory possono essere globbed in qualche modo si potrebbe rendere ancora più dinamico, sostituendo l'elenco dei nomi delle directory con Dir[...]
troppo.
Altri suggerimenti
Come richiamare questo compito file di rake?
%w(geo mod xyz abc).each do |module|
file "#{module}.js" => Dir["#{module}/*.js"] do |t|
# some code
end
end
rake ????