2012-09-13 13 views
11

Desidero compilare un set di file .scss in nomi file diversi.Can SASS/Compass può compilare foo.scss su foo.min.css e foo.dbg.css?

In fase di sviluppo, voglio compilare ad es. foo.scss a foo.dbg.css (non modificato e con commenti). In produzione, voglio avere ad es. foo.min.css (min.).

C'è un modo per dire a SASS/Compass cosa usare come estensione di destinazione? Un interruttore della riga di comando? Un'opzione config.rb?

Scrivere uno script che prima compila e poi rinomina i file sembra una cattiva opzione, perché in quel momento non posso usare efficientemente compass watch.

(Beh, io potrebbe compilare in due diverse directory di output e poi scrivere uno script che copia i file da lì che si sente un po 'goffo..)

UPDATE: ho lavorato tutto il problema scrivere una versione semplificata del codice dell'orologio. Quando qualcosa cambia, attiva una ricompilazione in due diverse directory di output, quindi rinomina e sposta i file da posizionare.

+0

I' Sono veramente interessato alla tua * soluzione alternativa *! Puoi condividerlo con noi per favore? – yckart

+1

Ciao @tuomassalo, sono anche interessato alla soluzione se hai la possibilità di postarla. – mtpultz

risposta

4

No, non è possibile. Ho fatto la stessa domanda nelle mailing list sui fogli di stile RTL. Tuttavia, è possibile eseguire la compilazione della bussola utilizzando diversi file "config.rb". Prova compass compile -c debug.rb.

UPDATE: Bussola non può ancora, ma Gulp può guardare e generare diversi file css di destinazione utilizzando Sass e Compass. Vedi https://github.com/Snugug/gulp-css-target/

+0

Non so se è possibile eseguire due terminali con 'bussola orologio 'sullo stesso progetto. Ma se puoi, allora hai capito;) –

+0

Questo è ancora vero? – mtpultz

+0

@mtpultz se qualcuno lo prova e riporta un risultato migliore aggiornerò felicemente questa risposta. registra benvenuto :) –

2

È possibile aggiungere questo alla vostra configurazione.

Vedere 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

non ho potuto ottenere la risposta di Alireza Fattahi a lavorare perché ha gettato errori così ho trovato un altro esempio che funziona per me

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

Grazie! Aveva lo stesso problema con la risposta di Alireza. – mtpultz

+1

questa è la risposta corretta :) – numediaweb

+0

Non funziona se è nella cartella. Le risorse di esempio/scss/module1/module1.scss dovrebbero essere assets/css/module1/module1.min.css ma diventano assets/css/module1.min.css – vee