2014-06-05 7 views
5

Chciałbym móc użyć kompasu do wstępnego przetworzenia mojego SASS w CSS w projekcie ember-cli.Jak dodać brokuły-kompas do ember-cli v0.0.28?

Robi to z broccoli-sass jest trywialne, jak bower install broccoli-sass jest wszystko, co jest wymagane, jako wsparcie dla niego jest już wbudowany.

Robi to z broccoli-compass jednak okazała się być dość trudne ... jak ?


Szczegóły:

To pytanie zostało zadane wcześniej, for ember-cli v0.0.23; i jego odpowiedź wydaje się być nieaktualna - Głównym problemem wydaje się być to, że ember-cli streszcza wiele rzeczy w Brocfile.js, i umieszcza je w innym pliku, preprocessor.js, używając Registry, a zatem rozwiązanie będzie inne, do standardu poszukuje Brocfile.js


Aktualizacja:

kwestia ta została asnwered przez @saygun, a rozwiązanie pozwala używać brokuły kompas skompilować SCSS -> CSS. Istnieje jednak kilka zastrzeżeń:

  • Drobne wydanie: istniejący preprocesor minifyCss w meber-cli nie zadziała. Będziesz musiał skonfigurować kompas, aby zminimalizować własny CSS.
  • Ważny problem: Jeśli obrazy referencyjne plików SCSS, wygenerowane pliki CSS zawierają łącza do obrazów, w których ścieżki znajdują się w tymczasowych katalogach drzewa utworzonych przez Broccoli. Nie jestem pewien, jak to obejść, i prosić o kontynuacji pytanie: How to generate image sprites in ember-cli using compass?
+0

@JordyLangen W folderze projektu znajdź 'node_modules/ember-cli/lib/preprocessors.js' i znalazłem ten system' Registry'. Próbowałem dodać do niego nową funkcję ('modules.exports.preprocessCompass = function ...'), ale dostałem trochę raczej tajemniczych śladów stosu ... więc nie za daleko. Mam zamiar wypróbować sugestię @saygun poniżej. – bguiz

+0

@JordyLangen W tym wydaniu [numer na github] podaję więcej szczegółów (https://github.com/stefanpenner/ember-cli/issues/810#issuecomment-45045098), chociaż w tym kontekście nie był on do "broccoli-compass", a chodziło o dodanie możliwości konfiguracji dowolnej wtyczki broccoli w głównym pliku 'Brocfile.js' i zapewnienie jej integracji z wbudowanymi w' preprocessors.js'. – bguiz

Odpowiedz

2

trzeba zainstalować broccoli-compass:

npm install broccoli-compass --save-dev 

i trzeba zainstalować ruby ​​gem sass-css-importer:

gem install sass-css-importer --pre 

następnie w brocfile to zrobić:

var compileCompass = require('broccoli-compass'); 

app.styles = function() { 
    var vendor = this._processedVendorTree(); 
    var styles = pickFiles(this.trees.styles, { 
    srcDir: '/', 
    destDir: '/app/styles' 
    }); 

    var stylesAndVendor = mergeTrees([vendor, styles, 'public']); 

    return compileCompass(stylesAndVendor, 'app' + '/styles/app.scss', { 
    outputStyle: 'expanded', 
    require: 'sass-css-importer', 
    sassDir: 'app' + '/styles', 
    imagesDir: 'images', 
    fontsDir: 'fonts', 
    cssDir: '/assets' 
    }); 
}; 
+0

+1 i czek - dziękuję bardzo za to wszystko. Kilka dodatkowych poprawek było koniecznych, aby działało, ale zbyt długie na komentarz [tutaj jest sedno] (https://gist.github.com/bguiz/49e3d228e71ddc7fde97). – bguiz

+0

... ale w skrócie 'app.scss' nie działa, zamiast tego użyj' * .scss'. Również, jak to rozgryzłeś? Nie mogłem znaleźć dokumentacji dla 'app.styles' i' _processedVendorTree() '. – bguiz

+0

@ saygun - To rozwiązanie nie działa, gdy pliki obrazów odniesienia SCSS - adresy URL w wynikowym pliku CSS zawierają tymczasowe pliki drzewa. Jeśli możesz, zajrzyj do mojego następnego pytania na ten temat: http://stackoverflow.com/q/24074351/194982 – bguiz

3

Niedawno opublikowałem ember-cli-compass-compiler, który jest dodatkiem ember-cli dla nowszych aplikacji ember-cli (> = 0.0.37).

Wystarczy zainstalować za pomocą polecenia: potrzebna jest

npm install --save-dev ember-cli-compass-compiler

Żadna inna konfiguracja, konwertuje do appname.cssapp/styles/appname.scss poprawnie. Jak sama nazwa wskazuje, pozwala na użycie także Compass.

+0

dla nowszych projektów, TO jest do zrobienia. To działało natychmiast dla projektu ember-cli 0.1.1. – amenthes