{"id":3524,"date":"2019-04-14T08:51:00","date_gmt":"2019-04-14T08:51:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/"},"modified":"2026-04-24T11:32:09","modified_gmt":"2026-04-24T11:32:09","slug":"kvalitet-forste-5-enkle-trinn-for-a-lint-koden-din-med-github-arbeidsflyter-i-javascript-prosjekt","status":"publish","type":"post","link":"https:\/\/thecodest.co\/nb\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/","title":{"rendered":"Kvalitet f\u00f8rst! 5 enkle trinn for \u00e5 lint koden din med GitHub-arbeidsflyter i JavaScript-prosjektet"},"content":{"rendered":"<p>Hva skal vi gj\u00f8re n\u00e5r <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/why-do-projects-fail\/\">prosjekt<\/a> er liten, eller vet kunden fortsatt ikke om det er verdt \u00e5 investere mer? Det er \u00e5penbart at p\u00e5 <strong><a href=\"https:\/\/thecodest.co\/blog\/product-building-with-mvp-why-is-this-worth-implementing\/\">MVP-fasen av prosjektet<\/a><\/strong>, <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-code-refactoring\/\">kode<\/a> styling eller enhetstester er ikke f\u00f8rsteprioritet. Investorer \u00f8nsker vanligvis \u00e5 ha en god <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/how-to-make-product\/\">produkt<\/a> og kom igjen - hvis det fungerer, trenger det vel ikke \u00e5 testes?<\/p>\n\n\n\n<p>Jeg har faktisk litt erfaring med <strong><a href=\"https:\/\/thecodest.co\/contact\">bygge apper fra bunnen av<\/a><\/strong>selv uten \u00e5 bruke beste praksis i utgangspunktet. Noen forretningsmessige omstendigheter tvang meg til \u00e5 lete etter et kompromiss mellom en investors budsjettplaner og utviklerens \"nice-to-have\"-liste. Heldigvis kan de fleste vanlige problemer knyttet til kodekvalitet l\u00f8ses p\u00e5 noen f\u00e5 minutter hvis du bruker GitHub.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>I denne artikkelen skal jeg vise deg hvordan du bruker GitHub-arbeidsflyter i Node.js-milj\u00f8et for \u00e5 standardisere kodebasen din.<\/strong><\/h2>\n\n\n\n<p>Noen forutsetninger f\u00f8r vi begynner:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Du er kjent med NPM og Linux-konsollen.<\/li>\n\n\n\n<li>Du har litt erfaring med stilpreprosessorer, modullastere, bundlere osv.<\/li>\n\n\n\n<li>Du vet hva linters er til for og vil gjerne bruke dem i prosjektene dine.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Typisk JavaScript-prosjektstruktur<\/strong><\/h2>\n\n\n\n<p>Hvis du noen gang har brukt <a href=\"https:\/\/thecodest.co\/nb\/blog\/javascript-tools-in-action\/\">JS<\/a> rammeverk som <a href=\"https:\/\/thecodest.co\/nb\/blog\/hire-vue-js-developers\/\">Vue<\/a> eller <a href=\"https:\/\/thecodest.co\/nb\/blog\/conditional-component-visibility-in-react\/\">React<\/a>kan du lett se noen fellestrekk mellom dem, f.eks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\/src<\/em> katalogen med all JS-logikk og alle komponenter,<\/li>\n\n\n\n<li><em>\/test<\/em> katalogen for enhets- og e2e-tester,<\/li>\n\n\n\n<li><em>\/aktiva<\/em> katalogen for stiler, bilder osv.<\/li>\n<\/ul>\n\n\n\n<p>Selv om vi snakker om <a href=\"https:\/\/thecodest.co\/nb\/blog\/hire-javascript-developer\/\">JavaScript<\/a> prosjekt, jobber vi i <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-node-js-used-for\/\">Knutepunkt<\/a> milj\u00f8, s\u00e5 det b\u00f8r selvsagt ogs\u00e5 v\u00e6re noen Node-ting som <em>package.json<\/em>, <em>package-lock.json<\/em> og <em>\/node_modules<\/em> katalogen i rotkatalogen v\u00e5r.<\/p>\n\n\n\n<p>Alle disse tingene er p\u00e5 sin plass - det er det vi kaller <strong>konvensjon<\/strong>. Rammeverk er oppfunnet for \u00e5 gi noen rimelige konvensjoner, s\u00e5 vanligvis trenger vi ikke engang \u00e5 bry oss om det opprinnelige designm\u00f8nsteret. I dette eksemplet vil jeg forklare noen tiln\u00e6rminger, og jeg vil ikke bruke noen ferdige l\u00f8sninger som Vue CLI.<\/p>\n\n\n\n<p><strong>P\u00e5 tide \u00e5 forst\u00e5 hva som skjuler seg bak alle disse magiske lo-skriptene!<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Utvidelse av det typiske Node-prosjektet<\/strong><\/h2>\n\n\n\n<p>For \u00e5 kunne tilby l\u00f8sninger av h\u00f8y kvalitet er linters det f\u00f8rste vi b\u00f8r begynne med n\u00e5r vi setter opp et nytt prosjekt. La oss fokusere p\u00e5 to lintere - Stylelint for stiler (<em>*.scss<\/em>) og ESLint for kildefiler (<em>*.js<\/em>). Begge disse linterne er tilgjengelige p\u00e5 NPM og er ganske enkle \u00e5 konfigurere. Bruk av linters krever at du g\u00e5r gjennom installasjonsprosessen, legger til konfigurasjonsfiler og definerer prosjektskript. La oss gj\u00f8re det trinn for trinn.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Legge til Stylelint<\/strong><\/h2>\n\n\n\n<p>Installasjonen av Stylelint i Node-milj\u00f8et er veldig enkel. I henhold til <a href=\"https:\/\/stylelint.io\/user-guide\/get-started\">offisielle dokumenter<\/a>...trenger du bare \u00e5 l\u00f8pe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm install --save-dev stylelint stylelint-config-standard<\/code><\/pre>\n\n\n\n<p>og vent til den er ferdig.<\/p>\n\n\n\n<p><em>stylelint-config-standard<\/em> inneholder et standard sett med linting-regler og kan erstattes med en pakke som passer bedre til dine behov (f.eks. <a href=\"https:\/\/www.npmjs.com\/package\/stylelint-config-airbnb\">Airbnb-stil<\/a>). Opprett deretter en ny skjult fil <em>.stylelintrc.json<\/em>som er Stylelints konfigurasjonsfil, som er ansvarlig for \u00e5 laste inn de forh\u00e5ndsdefinerte reglene v\u00e5re:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">{\n    \"extends\": \"stylelint-config-standard\"\n}<\/code><\/pre>\n\n\n\n<p>Akkurat n\u00e5 er det eneste som mangler noe NPM-skript (eller skript) som er deklarert i package.json-filen for \u00e5 starte linting av SCSS-filene v\u00e5re. Her er mitt forslag:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"skript\": {\n    \"lint:scss\": \"stylelint '**\/*.scss' --syntax scss -f verbose --color\",\n    \"lint:scss:fix\": \"stylelint '**\/*.scss' --syntax scss --fix -f verbose -color\"\n}<\/code><\/pre>\n\n\n\n<p>Som du kan se, har jeg deklarert skriptet som inneholder <strong>-fiks<\/strong> alternativet - dette alternativet skal brukes f\u00f8r du skyver endringer til depotet.<\/p>\n\n\n\n<p><strong>Husk - det er d\u00e5rlig praksis \u00e5 bruke <em>-fiks<\/em> i CI-flyten, for da blir ikke koden du sender til produksjon, stylet riktig i repositoryet.<\/strong> Det er derfor vi trenger begge manusene.<\/p>\n\n\n\n<p>La oss teste linteren v\u00e5r ved \u00e5 opprette en fil <em>\/assets\/scss\/styles.scss<\/em> med noe innhold, for eksempel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"css\" class=\"language-css\">body {\n                    bakgrunnsfarge: #fff;\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm kj\u00f8r lint:scss<\/code><\/pre>\n\n\n\n<p>Du b\u00f8r se noe slikt i konsollen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">&gt; stylelint '**\/*.scss' --syntax scss -f verbose --color\n\nassets\/scss\/styles.scss\n\n2:21 \u2716 Forventet innrykk p\u00e5 2 mellomrom innrykk\n\n1 kilde sjekket\n\n~\/Codest\/Projects\/github-workflow-demo\/assets\/scss\/styles.scss\n\n1 problem funnet\n\nalvorlighetsgrad \"feil\": 1\n\ninnrykk 1\n\nnpm ERR! kode ELIFECYCLE\n\nnpm ERR! errno 2\n\nnpm ERR! github-workflow-demo@1.0.0 lint:scss: `stylelint '**\/*.scss' --syntax scss -f verbose --color`\n\nnpm ERR! Avslutt status 2<\/code><\/pre>\n\n\n\n<p>Dette betyr faktisk at linteren v\u00e5r fungerer!<\/p>\n\n\n\n<p>Utdataene viser n\u00f8yaktig hvilken linje som for\u00e5rsaker en feil, og beskriver problemet som skal l\u00f8ses. Noen problemer kan ikke l\u00f8ses automatisk, da de krever en beslutning fra en utvikler, men i de fleste tilfeller trenger du bare \u00e5 kj\u00f8re den samme kommandoen med <strong>-fiks<\/strong> alternativet, s\u00e5 la oss kj\u00f8re det.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm run lint:scss:fix<\/code><\/pre>\n\n\n\n<p>N\u00e5 skal du se en gr\u00f8nn utgang med ingen feil funnet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">stylelint '**\/*.scss' --syntax scss --fix -f verbose --color\n\n\n1 kilde sjekket\n\n\/Users\/wojciechbak\/Codest\/Projects\/github-workflow-demo\/assets\/scss\/styles.scss\n\n0 problemer funnet<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Legge til ESLint<\/strong><\/h2>\n\n\n\n<p>Dette trinnet er nesten det samme som det forrige. Vi skal installere ESLint, definere noen standard regelsett og deklarere to kaldbare NPM-skript - ett for CI, ett for pre-push. La oss g\u00e5 gjennom dette!<\/p>\n\n\n\n<p>Hvis du bruker NPM i ditt daglige arbeid, \u00f8nsker du kanskje \u00e5 installere ESLint globalt. Hvis du ikke gj\u00f8r det, kan du sjekke installasjonsinstruksjonene i <a href=\"https:\/\/eslint.org\/docs\/user-guide\/getting-started\">offisielle dokumenter<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm install -g eslint<\/code><\/pre>\n\n\n\n<p>N\u00e5r eslint-kommandoen er tilgjengelig p\u00e5 maskinen din, er det bare \u00e5 kj\u00f8re den i prosjektet ditt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">eslint --init<\/code><\/pre>\n\n\n\n<p>F\u00f8lg instruksjonene som vises i terminalen, og ta noen f\u00e5 prosjektbeslutninger, for eksempel<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Javascript eller <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/typescript-developer\/\">TypeScript<\/a><\/li>\n\n\n\n<li>Airbnb-stil eller Google-stil<\/li>\n\n\n\n<li>konfigurasjonstype (JSON-fil, JS-fil eller inline i <em>package.json<\/em>)<\/li>\n\n\n\n<li>ES-moduler (<em>import\/eksport<\/em>) eller <em>krever<\/em> syntaks<\/li>\n<\/ul>\n\n\n\n<p>P\u00e5 dette stedet er det verdt \u00e5 skrive et ord om kodeformater som heter Prettier. Det er fullt standardisert og kompatibelt med de fleste kodeditorer (f.eks. VS Code). Prettier gir mange sett med forh\u00e5ndsdefinerte regler for kodestyling, samarbeider med linters og kan v\u00e6re en god st\u00f8tte i jakten p\u00e5 topp kvalitet p\u00e5 koden. For \u00e5 forst\u00e5 hva Prettier egentlig er, bes\u00f8k denne <a href=\"https:\/\/prettier.io\/docs\/en\/comparison.html\">sammenligning<\/a> fra offisielle dokumenter.<\/p>\n\n\n\n<p>Hvis det er gjort, vil ESlint-konfigurasjonsfilen (f.eks. <em>.eslintrc.json<\/em>(avhengig av hva du har valgt tidligere) skal vises i rotkatalogen din, et sted ved siden av <em>.stylelintrc.json<\/em> opprettet f\u00f8r.<\/p>\n\n\n\n<p>N\u00e5 m\u00e5 vi definere skript i <em>package.json<\/em> fil, p\u00e5 samme m\u00e5te som for SCSS-filer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"skript\": {\n    \"lint:js\": \"eslint '**\/*.js' --ignore-pattern node_modules\/\",\n    \"lint:js:fix\": \"eslint '**\/*.js' --ignore-pattern node_modules\/ --fix\"\n}<\/code><\/pre>\n\n\n\n<p>Gratulerer med dagen! ESLint er klar til bruk n\u00e5. La oss sjekke om det fungerer som det skal. Opprett <em>\/src\/index.js<\/em> fil med noe innhold:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">console.log(\"noe\");<\/code><\/pre>\n\n\n\n<p>Kj\u00f8r linter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm kj\u00f8r lint:js<\/code><\/pre>\n\n\n\n<p><code><br><\/code>Utdataene skal se slik ut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">&gt; eslint '**\/*.js' --ignore-pattern node_modules\/\n\n~\/Codest\/Projects\/github-workflow-demo\/src\/index.js\n\n1:1 warning Uventet konsoll-setning no-console\n\n\u2716 1 problem (0 feil, 1 advarsel)<\/code><\/pre>\n\n\n\n<p>Denne advarselen forsvinner ikke etter bruk av <em>-fiks<\/em> alternativet, fordi <strong>linters p\u00e5virker ikke potensielt meningsfull kode. De er kun for kodestyling<\/strong>, inkludert hvite mellomrom, nye linjer, semikolon, anf\u00f8rselstegn osv.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Definere GitHub-arbeidsflyter<\/strong><\/h2>\n\n\n\n<p><a href=\"https:\/\/help.github.com\/en\/actions\/configuring-and-managing-workflows\/configuring-a-workflow\">GitHub-arbeidsflyter<\/a> er en ganske veldokumentert greie. Du er velkommen til \u00e5 grave dypere i dette, men for n\u00e5, jeg skal implementere en enkel arbeidsflyt for \u00e5 lint koden v\u00e5r etter push til remote repository (\u00e5penbart, vert p\u00e5 GitHub).<\/p>\n\n\n\n<p>Opprett <em>\/.github\/arbeidsflyter<\/em> katalog og ny <em>kode-kvalitet-arbeidsflyt.yml<\/em> filen der, ettersom GitHub-arbeidsflyter m\u00e5 defineres med YAML-filer.<\/p>\n\n\n\n<p>For \u00e5 kunne kj\u00f8re en ordentlig arbeidsflyt m\u00e5 vi svare p\u00e5 noen sp\u00f8rsm\u00e5l:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>N\u00e5r \u00f8nsker vi \u00e5 kj\u00f8re arbeidsflyten v\u00e5r (ved push, ved pull request, ved sammensl\u00e5ing osv.)?<\/li>\n\n\n\n<li>\u00d8nsker vi \u00e5 ekskludere noen situasjoner (som push til master-grenen)?<\/li>\n\n\n\n<li>Hvilket milj\u00f8 m\u00e5 vi konfigurere for \u00e5 kj\u00f8re kommandoene v\u00e5re riktig (i dette eksempelet - Node)?<\/li>\n\n\n\n<li>M\u00e5 vi installere avhengigheter? I s\u00e5 fall, hvordan skal vi mellomlagre dem?<\/li>\n\n\n\n<li>Hvilke skritt m\u00e5 vi ta for \u00e5 fullf\u00f8re sjekken?<\/li>\n<\/ul>\n\n\n\n<p>Etter noen overveielser og noen timers arbeid med docs eksempel <em>.yml<\/em> filen kan se slik ut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">navn: Kodekvalitet\n\non: 'push'\n\njobber\n  code-quality:\n    navn: Lint kildekode\n    runs-on: ubuntu-latest\n    steps:\n    - bruker: actions\/checkout@v1\n\n    - navn: Setup Node\n      bruker: actions\/setup-node@v1\n      med\n        node-version: '12.1'\n\n    - navn: Cache-avhengigheter\n      bruker: actions\/cache@v1\n      with:\n        path: .\/node_modules\n        key: $((( runner.OS ))-dependencies-$((( hashFiles('<strong>**\/package-lock.json')<\/strong> ))\n        restore-keys: |\n          $((( runner.OS ))-dependencies-$(( env.cache-name ))-\n          $((( runner.OS ))-avhengigheter-\n          $(( runner.OS ))-\n\n    - navn: Installer avhengigheter\n      kj\u00f8r: |\n        npm install\n\n    - navn: Lint-filer\n      run: |\n        npm run lint<\/code><\/pre>\n\n\n\n<p>GitHub tilbyr alle milj\u00f8messige ting vi trenger. I den siste linjen kj\u00f8rer vi kommandoen <strong><em>npm kj\u00f8r lint<\/em><\/strong> som ikke var definert tidligere:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"skript\": {\n    \"lint\": \"npm run lint:js &amp;&amp; npm run lint:scss\"\n}<\/code><\/pre>\n\n\n\n<p>Merk at i v\u00e5r arbeidsflyt bruker jeg ikke <strong>:fix<\/strong> kommandoer.<\/p>\n\n\n\n<p>N\u00e5r alle disse trinnene er gjort, kan du nyte denne vakre utdataen fra GitHub f\u00f8r du sl\u00e5r sammen Pull Request: <img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/ec82df2be0b1977d857d5f5c1d2d893010fc44a4\/68747470733a2f2f692e696d6775722e636f6d2f425848465370372e706e67\" alt=\"\"> <img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/00e93d296b7bf5b089c7b785ecc1cbd18de54ead\/68747470733a2f2f696d6775722e636f6d2f6f63736e6762362e706e67\" alt=\"\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Kodekvalitet er en avgj\u00f8rende del av utviklingsprosessen, spesielt n\u00e5r du \u00f8nsker \u00e5 jobbe effektivt og langsiktig. Det finnes mange tiln\u00e6rminger og beste praksis, inkludert smidige metoder, men de fleste av dem er knyttet til et stort bedriftsprosjekt som gjennomf\u00f8res av minst seks personer.<\/p>","protected":false},"author":2,"featured_media":3525,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/nb\/blogg\/kvalitet-forste-5-enkle-trinn-for-a-lint-koden-din-med-github-arbeidsflyter-i-javascript-prosjekt\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project\" \/>\n<meta property=\"og:description\" content=\"Code quality is a crucial part of the development process, especially when you want to work efficiently in a long-term manner. There are many approaches and best practices, including whole agile methodologies stuff, but most of them relate to some big, enterprise project conducted by at least 6 people.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/nb\/blogg\/kvalitet-forste-5-enkle-trinn-for-a-lint-koden-din-med-github-arbeidsflyter-i-javascript-prosjekt\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-14T08:51:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:32:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-137.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project\",\"datePublished\":\"2019-04-14T08:51:00+00:00\",\"dateModified\":\"2026-04-24T11:32:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/\"},\"wordCount\":1187,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-137.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/\",\"name\":\"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-137.jpg\",\"datePublished\":\"2019-04-14T08:51:00+00:00\",\"dateModified\":\"2026-04-24T11:32:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#breadcrumb\"},\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-137.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-137.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/nb\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kvalitet f\u00f8rst! 5 enkle trinn for \u00e5 lint koden din med GitHub-arbeidsflyter i JavaScript-prosjektet - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/nb\/blogg\/kvalitet-forste-5-enkle-trinn-for-a-lint-koden-din-med-github-arbeidsflyter-i-javascript-prosjekt\/","og_locale":"nb_NO","og_type":"article","og_title":"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project","og_description":"Code quality is a crucial part of the development process, especially when you want to work efficiently in a long-term manner. There are many approaches and best practices, including whole agile methodologies stuff, but most of them relate to some big, enterprise project conducted by at least 6 people.","og_url":"https:\/\/thecodest.co\/nb\/blogg\/kvalitet-forste-5-enkle-trinn-for-a-lint-koden-din-med-github-arbeidsflyter-i-javascript-prosjekt\/","og_site_name":"The Codest","article_published_time":"2019-04-14T08:51:00+00:00","article_modified_time":"2026-04-24T11:32:09+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-137.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"6 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project","datePublished":"2019-04-14T08:51:00+00:00","dateModified":"2026-04-24T11:32:09+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/"},"wordCount":1187,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-137.jpg","articleSection":["Software Development"],"inLanguage":"nb-NO","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/","url":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/","name":"Kvalitet f\u00f8rst! 5 enkle trinn for \u00e5 lint koden din med GitHub-arbeidsflyter i JavaScript-prosjektet - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-137.jpg","datePublished":"2019-04-14T08:51:00+00:00","dateModified":"2026-04-24T11:32:09+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#breadcrumb"},"inLanguage":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-137.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-137.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Quality first! 5 easy steps to lint your code with GitHub workflows in JavaScript project"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nb-NO"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/nb\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/comments?post=3524"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3524\/revisions"}],"predecessor-version":[{"id":8622,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3524\/revisions\/8622"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media\/3525"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media?parent=3524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/categories?post=3524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/tags?post=3524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}