Frage

Ich lerne gerade jetzt über Datei Aufgaben in Rake. Ich habe 100s von JavaScript-Quelldateien, die auf 10 oder so Dateien verkettet erhalten. Ich sehe diese Art der Abbildung kann auf intelligente Weise mit Datei Aufgaben durchgeführt werden. Es scheint, dass Sie jede Datei angeben müssen.

Gibt es eine effiziente Möglichkeit, eine Datei Aufgabe zu schreiben, dass rekursiv all diese Javascript-Dateien findet und vergleicht sie mit den verketteten Dateien auf der rechten Seite? Die Verkettung Teil ist ein heikeler Schritt und wird von einem benutzerdefinierten Build-Tool zur Zeit durchgeführt wird, bis ich, dass in Ruby bekommen.

Beispiel:

/a.js
/c.js            -----------> base.js
/geo/b.js
/geo/c.js        -----------> geo.js
/mod/d.js
/mod/e.js        -----------> mod.js
War es hilfreich?

Lösung

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

und so weiter, müssen Sie die concatenate Methode selbst implementieren, offensichtlich (in meinem Beispiel das erste Argument ist die Liste der Dateien und die zweite ist die Zieldatei, zum Beispiel geo.js). Wenn alle erstellten Dateien nach Verzeichnissen benannt sind, können Sie etwas tun:

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

Wenn kann die Verzeichnisse irgendwie globbed werden Sie es noch dynamischer zu durch Ersetzen der Liste von Verzeichnisnamen mit Dir[...] machen könnte.

Andere Tipps

Wie diese Rake-Datei Aufgabe aufzurufen?

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

Rake ????

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top