Pregunta

Ahora estoy aprendiendo acerca de las tareas de archivos en Rake. Tengo 100s de archivos de código fuente de JavaScript, que consiguen concatena con 10 o menos archivos. Veo este tipo de mapeo se puede hacer de forma inteligente con tareas de archivo. Al parecer, es necesario especificar cada archivo.

¿Hay una manera eficiente para escribir una tarea archivo que se encuentra de forma recursiva todos estos archivos javascript y compararlos con los archivos concatenados en el lado derecho? La parte concatenación es un paso difícil y está siendo realizado por una herramienta de generación personalizada en el momento hasta que pueda conseguir que en rubí.

Por ejemplo,

/a.js
/c.js            -----------> base.js
/geo/b.js
/geo/c.js        -----------> geo.js
/mod/d.js
/mod/e.js        -----------> mod.js
¿Fue útil?

Solución

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

y así sucesivamente, usted tendrá que poner en práctica el método concatenate mismo, obviamente, (en mi ejemplo el primer argumento es la lista de archivos y el segundo es el archivo de destino, por ejemplo geo.js). Si todos los archivos creados tienen nombres de directorios que puede hacer algo como esto:

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

Si los directorios se pueden globbed de alguna manera se podría hacer aún más dinámico mediante la sustitución de la lista de nombres de directorio con Dir[...] también.

Otros consejos

¿Cómo invocar esta tarea archivo rastrillo?

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

rastrillo ????

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top