2012-08-10 11 views
6

Ok, tutaj jest to, co chcę:Auto skompilować pliki SCSS w Sublime Text 2

  1. piszę plików .scss nie .sass plików
  2. Na zapisując plik, pojawia się odpowiedni plik .css w tym samym folderze

Teraz na Sublime Text2 jest dużo wtyczek SASS, ale żadna nie dostarcza niczego poza podświetlaniem składni.

Wszelkie sugestie, jak uzyskać autosynchronizację działającą na Sublime Text2.

+0

tutaj [Odpowiedź] [1], aby buils Sass w Sublime Text 2 stosując system budowania [1]: http://stackoverflow.com/questions/12448546/sublime-text-2-doesnt -save-built-sass-file/30068537 # 30068537 –

Odpowiedz

6

nie znaleźliśmy żadnych istniejących wtyczek, że to zrobili, więc tutaj jest:

Zakładając, że masz zainstalowaną wtyczkę SCSS z kontroli pakietów, można zapisać to jako pakiety/user/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() 

Oczywiście, byłoby lepiej jako oficjalny plugin kontrolnym z konfigurowalnych ustawień użytkownika (gdzie zapisać pliki, on/off, itp), ale spełnia swoje wymagania, a nie blokuje edytor.

+0

W jaki sposób Sublime Text2 wywoła ten plik? – Rajat

+1

Dla celów bycia otwartym: To działa. Testowałem to. Sublime Text 2 analizuje wszystkie pliki Pythona znajdujące się w jego katalogu Packages. W tym przypadku Sublime Text parsuje SCSS.py, a klasa zdefiniowana w nim dziedziczy z klasy EventListener sublime.Ponieważ przesłonił metodę on_post_save, Sublime wywoła tę metodę po każdym zapisaniu. Oto oficjalna dokumentacja klasy wtyczki EventListener: http://www.sublimetext.com/docs/2/api_reference.html#sublime_plugin.EventListener –

+0

Próbowałem tego. Nie działa dla mnie. W folderze Moje pakiety znajduje się: 1) SCSS Folder 2) Twój plik SCSS.py 3) Plik SCSS.pyc. – Rajat

5

Należy rozważyć użycie systemu kompilacji zamiast dedykowanej wtyczki. To bardzo proste.

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

coś takiego:

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

I właśnie hit ctrl + b t zbudować bieżący plik. Jeśli masz wiele kompilacji dla scss, możesz wybrać jedną z menu kompilacji (Tools -> Build Systems).

+0

Wydaje mi się, że pamiętam, że możliwe jest również wywołanie "zapisz" – airtonix

+0

jaka jest ścieżka? co to oznacza? – vsync

1

Szukałem wtyczki kompilatora sass/scss do testu Sublime, ale moje foldery źródłowe są oddzielone od moich folderów css. Tak więc, wychodząc z pozostawionych tu komentarzy napisałem SassBuilder, który uruchamia plik konfiguracyjny zapisany w twoim folderze źródłowym. Został również przesłany do repozytorium Kontroli pakietów Sublime. Po wyciągnięciu prośby możesz ją zainstalować.

SassBuilder on github

3

Można użyć SublimeOnSaveBuild wtyczki. I w ustawieniach filtrów wtyczki zostaw pliki .scss! Działa po prostu świetnie!

+0

Dokładnie tego potrzebowałem. – fredley

1

Sass Builder to nowa wtyczka, dostępna w Menedżerze pakietów dla wysublimowanego tekstu. To nie wymaga żadnej konfiguracji. Po prostu napisz swoje scss i naciśnij cmd + b, aby skompilować. Twój plik css zostanie wygenerowany w tym samym folderze co scss.