2012-08-10 22 views
6

, qui è quello che voglio Ok:Auto compilare i file SCSS nel Sublime Text 2

  1. scrivo file .scss, non .sass file
  2. Sul salvataggio del file, ottengo il file css corrispondente nella stessa cartella

Ora ci sono un sacco di plugin SASS su Sublime Testo2 ma nessuno sembra fornire qualche cosa oltre l'evidenziazione della sintassi per me.

Qualsiasi suggerimento su come ottenere la compilazione automatica lavorando su Sublime Text2.

+0

qui [risposta] [1], a buils sass nel testo sublime 2 con sistema di compilazione [1]: http://stackoverflow.com/questions/12448546/sublime-text-2-doesnt -save-built-sass-file/30068537 # 30068537 –

risposta

6

non ho trovato alcun plugin esistenti che hanno fatto questo, ecco che è:

Supponendo di aver installato il plugin SCSS dal controllo del pacchetto, è possibile salvare questo come pacchetti/utente/SCSS.py.

import sublime_plugin 
import subprocess 
import os 
from threading import Thread 

def compile(input_file): 
    output_file = os.path.splitext(input_file)[0] + ".css" 
    cmd = "sass '{0}':'{1}'".format(input_file, output_file) 
    subprocess.call(cmd, shell=True) 

class SCSS(sublime_plugin.EventListener): 

    def on_post_save(self, view): 
     scope = (view.syntax_name(view.sel()[0].b)).split().pop() 
     if scope == "source.scss": 
      input_file = view.file_name() 
      t = Thread(target=compile, args=(input_file,)) 
      t.start() 

Naturalmente, questo sarebbe meglio come un plugin ufficiale di controllo del pacchetto con le impostazioni configurabili dall'utente (dove salvare i file, on/off, ecc), ma questo soddisfa le vostre esigenze e non blocca l'editor.

+0

In che modo Sublime Text2 invoca questo file? – Rajat

+1

Per essere espliciti: funziona. L'ho provato Sublime Text 2 analizza tutti i file python nella sua directory Packages. In questo caso, Sublime Text analizza SCSS.py e la classe definita in essa eredita dalla classe EventListener di sublime.Poiché sovrascrive il metodo on_post_save, Sublime chiamerà quel metodo dopo ogni salvataggio. Ecco la documentazione ufficiale per la classe di plug-in EventListener: http://www.sublimetext.com/docs/2/api_reference.html#sublime_plugin.EventListener –

+0

L'ho provato. Non funziona per me. La cartella I miei pacchetti ha il seguente: 1) Cartella SCSS 2) Il tuo file SCSS.py 3) Un file SCSS.pyc. – Rajat

5

È consigliabile utilizzare il sistema di build anziché il relativo plug-in dedicato. È molto semplice da fare.

http://docs.sublimetext.info/en/latest/file_processing/build_systems.html

Qualcosa di simile a questo:

{ 
    "cmd": ["sass","$file"], 
    "selector": "source.scss", 
    "path": "/usr/local/bin" 
} 

E appena colpito ctrl + b t costruire file corrente. Se si dispone di più build per scss, è possibile selezionarne uno dal menu build (Tools -> Build Systems).

+0

Mi sembra di ricordare che è anche possibile che questo venga attivato "al salvataggio" – airtonix

+0

qual è questo percorso? cosa significa? – vsync

1

Stavo cercando un plug-in sass/scss per Sublime Test, ma ho le mie cartelle sorgente separate dalle mie cartelle css. Quindi, uscendo dai commenti lasciati qui, ho scritto SassBuilder che esegue un file di configurazione memorizzato nella cartella di origine. È stato anche inviato al repository di controllo pacchetto Sublime. Una volta che hanno estratto la richiesta, puoi installarla da lì.

SassBuilder on github

3

Si potrebbe utilizzare SublimeOnSaveBuild plugin. E nelle impostazioni del filtro dei plugin basta lasciare i file .scss! Funziona davvero bene!

+0

Questo è esattamente ciò di cui avevo bisogno. – fredley

1

Sass Builder è il nuovo plug-in disponibile in Gestione pacchetti di testo sublime. Questo non richiede alcuna configurazione. Basta scrivere il tuo scss e premere cmd + b per compilare. Il tuo file css verrà generato nella stessa cartella di scss.