2017-02-08 1 views
0

Ich habe eine Strukturdatei wie folgt:Wie kompiliere ich alle scss-Dateien in verschiedenen Ordnern?

all_skins 
|— 1 
    |— css 
    |- _skinVariables.scss 
    |— file.scss 
    |— file.css 
|— 2 
    |— css 
    |- _skinVariables.scss 
    |— file.scss 
    |— file.css 
|— 3 
    |— css 
    |- _skinVariables.scss 
    |— file.scss 
    |— file.css 
common_css 
| _specificCode.scss 
| _otherCode.scss 

Inside my scss-Datei für jede „Haut“ Ich bin einige allgemeine SCSS partials wie _skinsVariables und _specificCode importieren. Die _skinVariables partiellen Änderungen für jede Skin, und der _specificCode ist eine allgemeine partielle wiederverwendet in allen scss-Dateien außerhalb des all_skins-Verzeichnisses.

Das Problem ist, dass, wenn ich eine Änderung in der specificCode Teildatei mache, muss ich manuell jede scss-Datei neu kompilieren, um die neue CSS mit dem modifizierten Code zu generieren.

Ich benutze PhpStorms Dateiwatcher, so dass jede Änderung an der spezifischen scss-Datei den Watcher auslöst, aber eine Modifikation des enthaltenen _specificCode (oder irgendeines eingeschlossenen Teils) löst ihn nicht aus.

Gibt es eine Möglichkeit, alle scss-Dateien in einem übergeordneten Ordner zu kompilieren? Es gibt über 30 dieser nummerierten Unterordner, so dass es zeitaufwändig ist, es manuell zu machen.

Jede Lösung, die Befehlszeile, PhpStorm selbst oder andere Software wie Grunt verwendet, wird für mich tun (am wenigsten erwünscht).

Edit:

Die file.scss würde wie folgt aussehen:

@import "skinVariables"; 
@import "../../../common_css/specificCode" 

etwas klarer zu sein, das Problem ist, dass ich die partials haben in all meinen file.scss enthalten, Um das Leben zu erleichtern, kommt der Großteil des Codes von den Teiltönen.

Wenn ich eine partielle ändern, die in allen Dateien wie _specificCode.scss importiert wird, müsste ich alle Datei.scss neu kompiliert werden, aber das passiert nicht.

Die Art und Weise die Beobachter scheinen im Moment zu arbeiten ist, dass sie nur ausgelöst sind, wenn eine Änderung an der file.scss erfolgt selbst, nicht auf die teilweise die enthalten wird.

Irgendwelche Arbeiten um dieses?

+0

** 1) ** Was sind Ihre File Watcher-Einstellungen? ** 2) ** ist das '_specificCode' (oder was auch immer) Datei, die" nicht funktioniert "ist innerhalb des Projekts? ** 3) ** Ich gehe davon aus, dass Sie Ihre individuellen Skins ganz einfach kompilieren können (mit anderen Worten: der aktuelle Dateiwatcher funktioniert).** 4) ** Und Änderungen an '_skinsVariables' werden normal verarbeitet (Skin wird kompiliert)? – LazyOne

+0

** 1) ** Hier sind sie in phpstorm: https://gyazo.com/2cd504495766e57099d22063dcd1a75d ** 2) ** Ja, es ist Teil des Projekts, aber außerhalb der Datei all_skins. ** 3) ** Ich kann sie manuell einfach kompilieren, sie kompilieren automatisch * nur * wenn ich die Datei selbst bearbeite ** 4) ** nein, Änderungen an den mitgelieferten Partials lösen den Watcher nicht aus –

+0

Lässt Dinge für mich klar werden - Sie haben FileWatcher Set - alles funktioniert gut - außer wenn Sie Änderungen in _specificCode.scss vornehmen? Ich verstehe das nicht, aber eine Modifikation des enthaltenen _spezifischen Codes (oder irgendeines eingeschlossenen Teils) löst es nicht aus. " - durch "irgendwelche inklusive partiellen" meinst du was? –

Antwort

0

So, jetzt haben Sie den Dateiwächter eingestellt, um die geöffneten Dateien zu sehen, und im Falle einer Änderung sollte NUR die Datei selbst kompiliert werden.

Was Sie brauchen, ist, um Ihre scss-transpiler auf die /all_skins/1/css/file.scss, /all_skins/2/css/file.scss usw. zu kompilieren, aber ich weiß nicht, ob der Rubin transpiler, den Sie verwenden, ist zu dieser Einstellung fähig.

löste ich etwas ähnliches mit http://gulpjs.com (alternative Grunt) mit Gulpfile.js Config wie folgt aus (um die Pfade geändert):

gulp.task('styles', function() { 
    return gulp.src([ 
      'all_skins/**/*.scss' 
     ]) 
     .pipe($.sass()) 
     .pipe($.autoprefixer('last 3 version')); 
}); 

dann eine Datei Beobachter PhpStorm gesetzt ganze all_skins und common_css Ordner (kann zu sehen wird von "scopes" eingestellt und startet den gulp Task "styles" und es sollte funktionieren.

+0

Ich war auch auf dem Weg zu dieser Lösung, aber mit npm scheint es die beste Option zu sein. Danke Honza. –

Verwandte Themen