SASS ist eine Stylesheet-Sprache, die als CSS-Präprozessor mit Variablen, Schleifen und vielen anderen Funktionen, die Erstellung von CSS vereinfacht und die Pflege großer Stylesheets erleichtert.
Wir arbeiten hier mit Abhängigkeiten, die wir nicht alle in unserer Git-History haben wollen. Um dies zu verhinden sind .gitignore
Dateien sehr wertvoll. Dort können Dateien und ganze Ordner ignoriert werden. Hier ist auch eine Anleitung von uns.
In dem Workspace muss sich eine package.json
befinden. Alle benötigten NPM-Pakete weden als Dev-Depencies eingefügt (Befehl: npm install -D <PACKETNAME>
):
In der package.json
sollten nun die Dependencies enthalten sein. Um SASS sinnvoll ausführen zu können, erweitern wir die scripts Sektion in unserer package.json
Datei.
{
…
"scripts": {
…
"dev:css": "sass styles/scss/main.scss:styles/main.css",
"watch:sass": "sass --watch styles/scss styles/scss/main.scss:styles/main.css",
"watch": "npm-run-all --parallel dev:css watch:*"
},
…
}
Alle CSS Dateien sollten in einem scss
Verzeichnis zusammen gefasst sein und mit dem Prefix _
und dem Suffix .scss
ausgestattet werden. Damit erkennt Sass sie als Partials. Zusätzlich wird eine zentrale SCSS Datei benötigt, welche die einzelnen SCSS Dateien importiert und somit zusammen fasst. Eine beispielhafte Verzeichnisstruktur könnte wie folgt aussehen:
…
assets/
styles/
scss/
_base.scss
_components.scss
_fonts.scss
_layout.scss
_reset.scss
_variables.scss
main.scss
Die main.scss
für obiges Beispiel sähe wie folgt aus:
@import 'reset';
@import 'variables';
@import 'fonts';
@import 'base';
@import 'layout';
@import 'components';
Hieraus generiert SASS mit Hilfe unserer npm Script Konfiguration eine CSS Datei mit dem Namen main.css
und legt diese im styles Verzeichnis ab. Dazu nutzen wir folgenden npm Script Aufruf:
npm run dev:css
Nach jeder Änderung einer SASS Datei muss die main.css
neu kompiliert werden. Damit wir dies beim Entwickeln nicht immer händisch machen müssen, nutzen wir folgenden npm Script Aufruf:
npm run watch
Damit wird, entsprechend unserer Konfiguration, das Verzeichnis styles/scss
und die die Datei styles/scss/main.scss
überwacht und bei Änderungen wird die main.css
neu erzeugt.
Statt der einzelnen CSS Dateien referenzieren wir jetzt nur noch die main.css
in unseren HTML Dateien.
<link rel="stylesheet" href="./styles/main.css" />
Damit Stylelint auch SASS Dateien linten kann, sind einige zusätzliche Pakete und Konfigurationserweiterungen erforderlich. Folgende Pakete müssen installiert werden (Befehl: npm install -D <PACKETNAME>
):
Die Konfiguration via .stylelintrc.json
muss wie folgt erweitert werden:
{
…
"plugin": [
…
"stylelint-scss"
],
"extends": [
…
"stylelint-config-recommended-scss"
],
…
}
Außerdem müssen unsere npm Scripts angepasst werden, denn jetzt sollen nur noch die SASS Dateien gelintet werden. Daher muss die Dateiendung von .css
auf .scss
angepasst werden:
"lint": "stylelint styles/**/*.scss",
"lint:fix": "stylelint styles/**/*.scss --fix",
Damit VSCode beim Speichern automatisch die SASS Files lintet sind folgende Anpassungen an der Settings Datei erforderlich:
.vscode/settings.json
{
…
"stylelint.enable": true,
"stylelint.validate": [
"scss"
]
}