Jak skompilować lub przekonwertować Sass / scss do css za pomocą node-sass (bez Ruby)?
Zmagałem się z konfiguracją libsass, ponieważ nie było to tak proste, jak transpiler oparty na Ruby. Mógłby ktoś wyjaśnić jak:
- zainstalować libsass?
- użyć go z linii poleceń?
- używać go z biegaczami zadań, takimi jak gulp i grunt?
Mam małe doświadczenie z menedżerami pakietów, a tym bardziej z biegaczami zadań.
3 answers
Wybrałem implementer node-sass dla libsass, ponieważ jest on oparty na node.js.
Instalowanie node-sass
- (warunek) jeśli nie masz npm, zainstaluj Node.js pierwszy.
-
$ npm install -g node-sass
instaluje node-sass globalnie-g
.
To, miejmy nadzieję, zainstaluje wszystko, czego potrzebujesz, jeśli nie odczytasz libsass na dole.
Jak używać node-sass z linii poleceń i skryptów npm
Ogólne format:
$ node-sass [options] <input.scss> [output.css]
$ cat <input.scss> | node-sass > output.css
Przykłady:
-
$ node-sass my-styles.scss my-styles.css
kompiluje pojedynczy plik ręcznie. -
$ node-sass my-sass-folder/ -o my-css-folder/
kompiluje wszystkie pliki w folderze ręcznie. -
$ node-sass -w sass/ -o css/
kompiluje wszystkie pliki w folderze automatycznie za każdym razem, gdy pliki źródłowe są modyfikowane.-w
dodaje zegarek dla zmian w pliku (- ACH).
Więcej użytecznych opcji, takich jak 'kompresja' @ here . Wiersz poleceń jest dobry do szybkiego rozwiązania, jednak można użyć runnerów zadań, takich jak Grunt.js lub Łyk.js do automatyzacji procesu budowania.
Możesz również dodać powyższe przykłady do skryptów npm. Aby poprawnie używać skryptów npm jako alternatywy dla gulp przeczytaj ten obszerny artykuł @ css-tricks.com szczególnie poczytaj o grupowaniu zadań .
- jeśli w katalogu projektu nie ma pliku
package.json
, który działa$ npm init
, utworzy go. Użyj go z-y
, aby pominąć pytania. - dodaj
"sass": "node-sass -w sass/ -o css/"
doscripts
Wpackage.json
pliku. Powinno wyglądać coś takiego:
"scripts": {
"test" : "bla bla bla",
"sass": "node-sass -w sass/ -o css/"
}
-
$ npm run sass
skompiluje Twoje pliki.
Jak używać z gulp
-
$ npm install -g gulp
instaluje Gulp globalnie. - jeśli w katalogu projektu nie ma pliku
package.json
, który działa$ npm init
, utworzy go. Użyj go z-y
, aby pominąć pytania. -
$ npm install --save-dev gulp
instaluje Gulp lokalnie.--save-dev
dodajegulp
dodevDependencies
Wpackage.json
. -
$ npm install gulp-sass --save-dev
instaluje gulp-sass lokalnie. - Konfiguracja gulp dla Twojego projektu przez tworzenie pliku
gulpfile.js
w folderze głównym projektu o tej zawartości:
'use strict';
var gulp = require('gulp');
Podstawowe przykłady do transpile
Dodaj ten kod do pliku gulpfile.js:
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./css'));
});
$ gulp sass
uruchamia powyższe zadanie, które kompiluje .plików scss w folderze sass
i generuje .pliki css w folderze css
.
Aby ułatwić życie, dodajmy zegarek, abyśmy nie musieli go kompilować ręcznie. Dodaj ten kod do swojego gulpfile.js
:
gulp.task('sass:watch', function () {
gulp.watch('./sass/**/*.scss', ['sass']);
});
Wszystko gotowe! Just run zadanie czuwania:
$ gulp sass:watch
Jak używać z Node.js
Jak sugeruje nazwa node-sass, możesz napisać swój własny węzeł.Skrypty js do transpilingu. Jeśli jesteś ciekawy, sprawdź stronę projektu node-sass.
A co z libsass?Libsass jest biblioteką, która musi być zbudowana przez implementatora, takiego jak sassC lub w naszym przypadku node-sass. Node-sass zawiera wbudowaną wersję libsass, której używa domyślnie. Jeśli plik kompilacji nie działa na twoim komputerze, próbuje zbuduj libsass dla swojej maszyny. Ten proces wymaga Pythona 2.7.x (3 .x nie działa od dziś). Dodatkowo:
LibSass wymaga GCC 4.6+ lub Clang / LLVM. Jeśli System Operacyjny jest starszy, ta wersja może nie być skompilowana. W systemie Windows potrzebujesz MinGW z GCC 4.6 + lub VS 2013 Update 4+. Możliwe jest również zbudowanie LibSass z Clang / LLVM na Windows.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-01 06:24:49
Instalacja tych narzędzi może się różnić w zależności od systemu operacyjnego.
W systemie Windows node-sass domyślnie obsługuje VS2015, jeśli masz tylko VS2013 i napotkasz jakikolwiek błąd podczas uruchamiania polecenia, możesz zdefiniować wersję VS dodając: --msvs_version=2013. Jest to odnotowane na node-sass npm Strona.
Więc bezpieczna linia poleceń, która działa w systemie Windows z VS2013 jest: npm install --msvs_version=2013 gulp node-sass gulp-sass
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-08 04:51:00
W Windows 10 za pomocą node v6.11.2 i npm v3.10.10, w celu wykonania bezpośrednio w dowolnym folderze:
> node-sass [options] <input.scss> [output.css]
Wykonałem tylko instrukcje w Node-Sass Github :
-
Jeśli nie masz dostępu do Internetu, możesz skorzystać z tej opcji, aby uzyskać dostęp do Internetu.]}
> npm install --global --production windows-build-tools
-
In a normal command-line shell ( Win+R + cmd+ Enter ) run:
> npm install -g node-gyp > npm install -g node-sass
The
-g
umieszcza te pakiety Pod%userprofile%\AppData\Roaming\npm\node_modules
. Możesz sprawdzić, czynpm\node_modules\node-sass\bin\node-sass
Teraz istnieje. -
Sprawdź czy Twoje konto lokalne (Nie System)
PATH
zmienna środowiskowa zawiera:%userprofile%\AppData\Roaming\npm
Jeśli ta ścieżka nie jest obecna, npm i node mogą nadal działać, ale pliki modułów bin nie będą działać!
Zamknij poprzednią powłokę i ponownie otwórz nową i uruchom > node-gyp
lub > node-sass
.
Uwaga:
- The
windows-build-tools
may not be necessary (if no compiling is done? Chciałbym przeczytać, Czy ktoś zrobił to bez instalacji tych narzędzi), ale to dodało do konta administratora zmienną środowiskowąGYP_MSVS_VERSION
z2015
jako wartością. - jestem również w stanie uruchomić bezpośrednio inne moduły z bin plików, takich jak
> uglifyjs main.js main.min.js
i> mocha
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-21 17:40:48