2012-09-13 11 views
11

Quiero compilar un conjunto de archivos .scss con diferentes nombres de archivo.¿Puede SASS/Compass compilar foo.scss a foo.min.css y foo.dbg.css?

En desarrollo, quiero compilar, por ej. foo.scss a foo.dbg.css (no modificado y con comentarios). En producción, quiero tener, por ej. foo.min.css (minificado).

¿Hay alguna manera de decirle a SASS/Compass qué usar como extensión de destino? ¿Un interruptor de línea de comando? ¿Una opción config.rb?

Escribir una secuencia de comandos que primero compila y luego cambia el nombre de los archivos parece una mala opción, porque entonces no puedo usar compass watch de manera eficiente.

(Bueno, podría compilar a dos directorios de salida diferentes y luego escribir un script que copia los archivos desde allí Eso se siente un poco torpe..)

ACTUALIZACIÓN: trabajé solucionar el problema escribiendo una versión simplificada del código de reloj. Cuando algo cambia, desencadena una recompilación en dos directorios de salida diferentes, luego cambia el nombre y mueve los archivos a colocar.

+0

I' estoy realmente interesado en tu * solución alternativa *! ¿Puedes compartirlo con nosotros, por favor? – yckart

+1

Hola @tuomassalo, también estoy interesado en la solución si tienes la oportunidad de publicarla. – mtpultz

Respuesta

4

No, no puede. Hice la misma pregunta en las listas de correo sobre hojas de estilo RTL. Sin embargo, puede ejecutar la compilación de compás utilizando diferentes archivos 'config.rb'. Pruebe compass compile -c debug.rb.

ACTUALIZACIÓN: La brújula no puede, pero Gulp puede mirar y generar varios archivos css objetivo utilizando Sass y Compass. Consulte https://github.com/Snugug/gulp-css-target/

+0

No sé si puede ejecutar dos terminales con 'reloj de brújula' en el mismo proyecto. Pero si puedes, entonces lo tienes;) –

+0

Esto sigue siendo cierto? – mtpultz

+0

@mtpultz si alguien lo prueba e informa un mejor resultado, felizmente actualizaré esta respuesta. registros bienvenidos :) –

2

Puede agregar esto a su configuración.

Por favor, vea https://github.com/sbspk/Prepros/issues/38

require 'fileutils' 

on_stylesheet_saved do |file| 

    if file.match('.min') == nil 

    require 'compass' 

    Compass.add_configuration(
     { 
      :project_path => File.dirname(File.dirname(file)), 
      :sass_dir => File.basename(File.dirname(file)), 
      :css_path => File.basename(File.dirname(file)), 
      :output_style => :compressed 
     }, 
     'alwaysmin' # A name for the configuration, can be anything you want 
    ) 
    Compass.compiler.compile(File.dirname(file) + "/" + File.basename(file, '.css') + '.scss', File.dirname(file) + "/" + File.basename(file, '.css') + ".min.css") 

    end 

end 
6

no pude conseguir la respuesta de Alireza Fattahi a trabajar, ya que arrojó errores así que encontré otro ejemplo, que funciona para mí

http://h3r2on.com/2013/05/17/rename-css-on-compile.html

require "fileutils" 

on_stylesheet_saved do |file| 
    if File.exists?(file) 
    filename = File.basename(file, File.extname(file)) 
    File.rename(file, css_dir + "/" + filename + ".min" + File.extname(file)) 
    end 
end 
+0

¡Gracias! Tenía el mismo problema con la respuesta de Alireza. – mtpultz

+1

esta es la respuesta correcta :) – numediaweb

+0

No funciona si está en la carpeta. El ejemplo assets/scss/module1/module1.scss debe ser assets/css/module1/module1.min.css pero se convierte en assets/css/module1.min.css – vee

Cuestiones relacionadas