Question

Je viens d'apprendre sur les tâches de fichiers dans Rake. Je 100s des fichiers source javascript, qui se concaténée à 10 ou si des fichiers. Je vois ce genre de cartographie peut être fait intelligemment les tâches de fichiers. Il semble que vous devez spécifier chaque fichier.

Y at-il un moyen efficace d'écrire une tâche de fichier qui trouve récursive tous ces fichiers javascript et les comparer aux fichiers concaténés sur le côté droit? La partie de concaténation est une étape délicate et est fait par un outil de construction personnalisé au moment jusqu'à ce que je peux obtenir que Ruby.

Par exemple,

/a.js
/c.js            -----------> base.js
/geo/b.js
/geo/c.js        -----------> geo.js
/mod/d.js
/mod/e.js        -----------> mod.js
Était-ce utile?

La solution

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

et ainsi de suite, vous devrez implémenter la méthode concatenate vous, évidemment (dans mon exemple le premier argument est la liste des fichiers et le second est le fichier de destination, par exemple geo.js). Si tous les fichiers créés sont nommés d'après les répertoires que vous pouvez faire quelque chose comme ceci:

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

Si les répertoires peuvent être en quelque sorte globbed vous pouvez le rendre encore plus dynamique en remplaçant la liste des noms de répertoire avec Dir[...] aussi.

Autres conseils

Comment invoquer cette tâche de fichier rake?

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

râteau ????

  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top