ESLint konfiguration för Sitevision projekt som bygger på Airbnbs JavaScript styleguide.
ES2015+
https://github.com/airbnb/javascript
Legacy (ES5)
https://github.com/airbnb/javascript/tree/es5-deprecated/es5
Om man stöter på ett fel man inte förstår kan man kolla i styleguiden eller söka på ESLints hemsida.
https://eslint.org/docs/rules/
Installera
Section titled “Installera”Installera konfigurationen, ESLint, Prettier, Svelte och de plugins som behövs genom att köra:
npx @soleil-se/eslint-config@latest --setupFör att installera manuellt installera följande dependencies och skapa upp konfigurationsfiler enligt nedan.
npm i @soleil-se/eslint-config@5 eslint@8 eslint-config-airbnb-base eslint-plugin-import eslint-plugin-svelte eslint-config-prettier --save-devUppgradera
Section titled “Uppgradera”Version 4.x.x > 5.x.x
- Uppgradera
@soleil-se/eslint-configtill version 5. - Avinstallera
eslint-plugin-svelte3. - Installera
eslint-plugin-svelte. - Installera
eslint-config-prettierom det inte redan är installerat.
npm i @soleil-se/eslint-config@5 eslint-plugin-svelte eslint-config-prettier --save-dev && npm remove eslint-plugin-svelte3Version 3.x.x > 4.x.x
- Om Vue används i projektet stanna på version 3, stödet för Vue plockas bort i denna version.
- Uppgradera
@soleil-se/eslint-configtill version 4. - Om Svelte används i projektet installera
eslint-config-prettier. - Byt ut alla importer av konfigurationer:
@soleil-se/eslint-config/global>@soleil-se/eslint-config@soleil-se/eslint-config/webapp>@soleil-se/eslint-config@soleil-se/eslint-config/client>@soleil-se/eslint-config@soleil-se/eslint-config/server-es6>@soleil-se/eslint-config@soleil-se/eslint-config/universal>@soleil-se/eslint-config
- Byt ut alla importer av legacy-konfigurationer:
@soleil-se/eslint-config/server-legacy>@soleil-se/eslint-config/legacy@soleil-se/eslint-config/server>@soleil-se/eslint-config/legacy
Version 2.x.x > 3.x.x
- Uppgradera
@soleil-se/eslint-configtill version 3. - Uppgradera
eslinttill version 8. - Uppgradera
eslint-config-airbnb-basetill version 15. - Ändra importer till Sitevisions API till
@sitevision/api/(server|common|client)/NamnPåAPI.
Version 1.x.x > 2.x.x
- Uppgradera
eslinttill version 7. - Installera alla dependencies enligt installationssteget.
- Om
@soleil-se/eslint-config/vueanvänds byt till@soleil-se/eslint-config/client.
Config
Section titled “Config”ESLint läser främst från .eslintrc.cjs filer i projektet.
https://eslint.org/docs/user-guide/configuring#using-configuration-files-1
Importera config
Section titled “Importera config”module.exports = { extends: '@soleil-se/eslint-config',};Legacy config som används i en kontext med stöd för ES5 och delvis ES2015+.
Till exempel serverkod som ska laddas upp som den är till Sitevision utan kompilering.
module.exports = { extends: '@soleil-se/eslint-config/legacy', root: true,};ESLint ignore
Section titled “ESLint ignore”Lägg med en .eslintignore fil i roten för att slå av linting av filer i bland annat node_modules och dist.
distnode_modules**/node_modulessvelte.configEditors
Section titled “Editors”Enklaste sättet att komma igång med ESLint är att installera det som extension i din editor.
Visual Studio Code
Section titled “Visual Studio Code”Installera ESLint till Visual Studio Code.
End of line
Section titled “End of line”Airbnb använder sig av LF för EOL. Ställs in under settings i Visual Studio Code.
Ändra \r\n till \n.
Sen vill man även ha att en ny rad inkluderas i filerna.
"files.eol": "\n","files.insertFinalNewline": trueIndentation
Section titled “Indentation”Airbnb indenterar med två spaces.
"editor.tabSize": 2,"editor.insertSpaces": trueAutofix
Section titled “Autofix”Man kan ställa in så enklare fel åtgärdas automatiskt under settings i Visual Studio Code.
"editor.codeActionsOnSave": { "source.fixAll.eslint": true}Max length
Section titled “Max length”Airbnb förespråkar en maxlängd på 100 tecken på en rad.
Man kan ställa in så man visar en linje i Visual Studio Code för att visualisera detta. Görs i settings.
"editor.rulers": [ 100]Svelte
Section titled “Svelte”För att få stöd för Svelte behöver man lägga in följande i settings.
"eslint.validate": [ "javascript", "javascriptreact", "svelte"]Konfig i underkatalog
Section titled “Konfig i underkatalog”Om man vill köra ESLint i en underkatalog som har en egen installation och konfiguration av eslint
behöver man antingen lägga till katalogens sökväg i inställningen eslint.workingDirectories eller ändra till { "mode": "auto" }.
Läs mer här: https://github.com/microsoft/vscode-eslint#settings-options
Exempelvis om en standalone WebApp har en egen konfiguration och plugins som läses in.
"eslint.workingDirectories": ["./standalone_apps/MyApp"]Slår man på { "mode": "auto" } försöker den automatiskt hitta rätt konfiguration.
"eslint.workingDirectories": [{ "mode": "auto" }]Komplett config
Section titled “Komplett config”Ctrl + Shift + P och skriv settings och öppna settings.json.
"files.eol": "\n","files.insertFinalNewline": true,"editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit"},"editor.rulers": [ 100],"editor.formatOnSave": false,"editor.tabSize": 2,"editor.insertSpaces": true,"eslint.validate": [ "javascript", "javascriptreact", "svelte",],"[svelte]": { "editor.formatOnSave": true},"eslint.workingDirectories": [{ "mode": "auto" }],Om man vill köra ESLint i sin terminal.
https://eslint.org/docs/user-guide/command-line-interface
Svelte
Section titled “Svelte”Installera Svelte tillägget till Visual Studio Code.
Kodformatering
Section titled “Kodformatering”Formatering av kod i Svelte använder Prettier så man behöver lägga till insällningar för det så HTML kan formateras,
dessvärre påverkar detta även JavaScript så några regler som man är van vid har fått stängas av så
det inte krockar med Prettier.
Skapa en fil som heter .prettierrc.js i roten av projektet.
module.exports = require('@soleil-se/eslint-config/svelte.prettier');För att formatera automatiskt behöver man lägga till följande i settings.json i Visual Studio Code.
{ "[svelte]": { "editor.formatOnSave": true, "editor.defaultFormatter": "svelte.svelte-vscode" },}Man kan även stänga av formateringen av skript genom att lägga till kommentaren <!-- prettier-ignore --> före skripttaggen om det blir krockar och problem.
<!-- prettier-ignore --><script> const foo = 'bar';</script>
<p>{foo}</p>Om man har problem med linebreaks i git kan man behöva göra följande:
- Pusha upp / stasha alla förändringar.
- Skapa en fil i roten av projektet med namnet
.gitattributes. - Ange innehåll i filen:
* text=auto eol=lf. - Kör:
git rm --cached -r . - Kör:
git reset --hard. - Pusha upp filen.