{"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-forst-5-nemme-trin-til-at-linte-din-kode-med-github-workflows-i-et-javascript-projekt","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/","title":{"rendered":"Kvalitet f\u00f8rst! 5 nemme trin til at lint'e din kode med GitHub-workflows i JavaScript-projektet"},"content":{"rendered":"<p>Hvad skal vi g\u00f8re, n\u00e5r <a href=\"https:\/\/thecodest.co\/da\/dictionary\/why-do-projects-fail\/\">projekt<\/a> er lille, eller at kunden stadig ikke ved, om det er v\u00e6rd at investere mere? Det er klart, at p\u00e5 <strong><a href=\"https:\/\/thecodest.co\/blog\/product-building-with-mvp-why-is-this-worth-implementing\/\">MVP-fasen af projektet<\/a><\/strong>, <a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-code-refactoring\/\">Kode<\/a> styling eller unit tests er ikke den h\u00f8jeste prioritet. Investorer vil normalt gerne have en god <a href=\"https:\/\/thecodest.co\/da\/dictionary\/how-to-make-product\/\">produkt<\/a> Og kom nu - hvis det virker, beh\u00f8ver det ikke at blive testet, vel?<\/p>\n\n\n\n<p>Jeg har faktisk en del erfaring med <strong><a href=\"https:\/\/thecodest.co\/contact\">bygge apps fra bunden<\/a><\/strong>selv uden at bruge bedste praksis i f\u00f8rste omgang. Nogle forretningsm\u00e6ssige omst\u00e6ndigheder tvang mig til at lede efter et kompromis mellem en investors budgetplaner og udviklerens \"nice-to-have\"-liste. Hvis du bruger GitHub, kan de fleste af de almindelige problemer med kodekvalitet heldigvis l\u00f8ses p\u00e5 f\u00e5 minutter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>I denne artikel vil jeg vise dig, hvordan du bruger GitHub-workflows i Node.js-milj\u00f8et til at standardisere din kodebase.<\/strong><\/h2>\n\n\n\n<p>Et par antagelser, f\u00f8r vi begynder:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Du er fortrolig med NPM og Linux-konsollen.<\/li>\n\n\n\n<li>Du har en vis erfaring med stilpr\u00e6processorer, modulindl\u00e6sere, bundlere osv.<\/li>\n\n\n\n<li>Du ved, hvad linters er til for, og du vil virkelig gerne bruge dem i dine projekter.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Typisk JavaScript-projektstruktur<\/strong><\/h2>\n\n\n\n<p>Hvis du nogensinde har brugt nogle <a href=\"https:\/\/thecodest.co\/da\/blog\/javascript-tools-in-action\/\">JS<\/a> rammer som <a href=\"https:\/\/thecodest.co\/da\/blog\/hire-vue-js-developers\/\">Vue<\/a> eller <a href=\"https:\/\/thecodest.co\/da\/blog\/conditional-component-visibility-in-react\/\">React<\/a>kan man nemt f\u00e5 \u00f8je p\u00e5 nogle f\u00e6lles ting mellem dem, f.eks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\/src<\/em> med al din JS-logik og alle dine komponenter,<\/li>\n\n\n\n<li><em>\/test<\/em> til unit- og e2e-tests,<\/li>\n\n\n\n<li><em>\/aktiver<\/em> til stilarter, billeder osv.<\/li>\n<\/ul>\n\n\n\n<p>Selv hvis vi taler om <a href=\"https:\/\/thecodest.co\/da\/blog\/hire-javascript-developer\/\">JavaScript<\/a> projekt, arbejder vi i <a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-node-js-used-for\/\">Knudepunkt<\/a> milj\u00f8, s\u00e5 der b\u00f8r naturligvis ogs\u00e5 v\u00e6re nogle Node-ting som <em>pakke.json<\/em>, <em>pakke-l\u00e5s.json<\/em> og <em>\/node_modules<\/em> katalog i vores rodmappe.<\/p>\n\n\n\n<p>Alle disse ting er p\u00e5 deres plads - det er det, vi kalder the <strong>Konvention<\/strong>. Frameworks er opfundet for at give nogle rimelige konventioner, s\u00e5 normalt beh\u00f8ver vi ikke engang at bekymre os om det oprindelige designm\u00f8nster. I dette eksempel vil jeg forklare nogle tilgange, og jeg vil ikke anvende f\u00e6rdige l\u00f8sninger som Vue CLI.<\/p>\n\n\n\n<p><strong>Det er tid til at forst\u00e5, hvad der gemmer sig bag alle disse magiske fnugscripts!<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Udvidelse af det typiske Node-projekt<\/strong><\/h2>\n\n\n\n<p>For at levere l\u00f8sninger af h\u00f8j kvalitet er linters det f\u00f8rste, vi b\u00f8r starte med, n\u00e5r vi opretter et nyt projekt. Lad os fokusere p\u00e5 to linters - Stylelint til stilarter (<em>*.scss<\/em>) og ESLint til kildefiler (<em>*.js<\/em>). Begge disse linters er tilg\u00e6ngelige p\u00e5 NPM og ret nemme at konfigurere. Brug af linters kr\u00e6ver, at man gennemg\u00e5r installationsprocessen, tilf\u00f8jer konfigurationsfiler og definerer projektscripts. Lad os g\u00f8re det trin for trin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Tilf\u00f8jelse af Stylelint<\/strong><\/h2>\n\n\n\n<p>Installationen af Stylelint i Node-milj\u00f8et er virkelig enkel. I henhold til <a href=\"https:\/\/stylelint.io\/user-guide\/get-started\">officielle dokumenter<\/a>skal du bare l\u00f8be:<\/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 f\u00e6rdig.<\/p>\n\n\n\n<p><em>stylelint-config-standard<\/em> giver et standards\u00e6t af linting-regler og kan erstattes med enhver pakke, der passer bedre til dine behov (f.eks. <a href=\"https:\/\/www.npmjs.com\/package\/stylelint-config-airbnb\">Airbnb-stil<\/a>). Opret derefter en ny skjult fil <em>.stylelintrc.json<\/em>som er Stylelints konfigurationsfil, der er ansvarlig for at indl\u00e6se vores foruddefinerede regler:<\/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>Lige nu er det eneste, der mangler, et NPM-script (eller scripts), der er erkl\u00e6ret i package.json-filen for at begynde at linting vores SCSS-filer. Her er mit forslag:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"scripts\": {\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 erkl\u00e6ret, at scriptet indeholder <strong>-fix<\/strong> mulighed - denne skal bruges, f\u00f8r du skubber \u00e6ndringer til repository.<\/p>\n\n\n\n<p><strong>Husk - det er en d\u00e5rlig praksis at bruge <em>-fix<\/em> i dit CI-flow, for s\u00e5 bliver den kode, du sender til produktionen, ikke stylet korrekt i repository'et.<\/strong> Det er derfor, vi har brug for begge scripts.<\/p>\n\n\n\n<p>Lad os teste vores linter ved at oprette en fil <em>\/assets\/scss\/styles.scss<\/em> med noget indhold, f.eks:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"css\" class=\"language-css\">krop {\n                    baggrundsfarve: #fff;\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm run lint:scss<\/code><\/pre>\n\n\n\n<p>Du b\u00f8r se noget i retning af dette i din konsol:<\/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 indrykning p\u00e5 2 mellemrum indrykning\n\n1 kilde kontrolleret\n\n~\/Codest\/Projects\/github-workflow-demo\/assets\/scss\/styles.scss\n\n1 problem fundet\n\nalvorlighedsniveau \"fejl\": 1\n\nindrykning: 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! Afslut status 2<\/code><\/pre>\n\n\n\n<p>Det betyder faktisk, at vores liner virker!<\/p>\n\n\n\n<p>Outputtet viser pr\u00e6cis, hvilken linje der for\u00e5rsager en fejl, og beskriver det problem, der skal l\u00f8ses. Nogle problemer kan ikke l\u00f8ses automatisk, da de kr\u00e6ver en udviklers beslutning, men i de fleste tilf\u00e6lde skal du bare k\u00f8re den samme kommando med <strong>-fix<\/strong> mulighed, s\u00e5 lad os k\u00f8re den.<\/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>Nu b\u00f8r du se et gr\u00f8nt output uden fundne fejl:<\/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 tjekket\n\n\/Users\/wojciechbak\/Codest\/Projects\/github-workflow-demo\/assets\/scss\/styles.scss\n\n0 problemer fundet<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Tilf\u00f8jelse af ESLint<\/strong><\/h2>\n\n\n\n<p>Dette trin er n\u00e6sten det samme som det foreg\u00e5ende. Vi installerer ESLint, definerer nogle standardregler og erkl\u00e6rer to NPM-scripts, der kan kaldes - et til CI og et til pre-push. Lad os g\u00e5 igennem dette!<\/p>\n\n\n\n<p>Hvis du bruger NPM i dit daglige arbejde, vil du m\u00e5ske gerne installere ESLint globalt. Hvis du ikke g\u00f8r det, kan du se installationsvejledningen i <a href=\"https:\/\/eslint.org\/docs\/user-guide\/getting-started\">officielle 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 tilg\u00e6ngelig p\u00e5 din maskine, skal du bare k\u00f8re den i dit projekt:<\/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 de yderligere instruktioner, der vises i din terminal, og tag et par projektbeslutninger som f.eks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Javascript eller <a href=\"https:\/\/thecodest.co\/da\/dictionary\/typescript-developer\/\">TypeScript<\/a><\/li>\n\n\n\n<li>Airbnb-stil eller Google-stil<\/li>\n\n\n\n<li>konfigurationstype (JSON-fil, JS-fil eller inline i <em>pakke.json<\/em>)<\/li>\n\n\n\n<li>ES-moduler (<em>import\/eksport<\/em>) eller <em>kr\u00e6ver<\/em> syntaks<\/li>\n<\/ul>\n\n\n\n<p>P\u00e5 dette sted er det v\u00e6rd at skrive et par ord om kodeformateringsprogrammet Prettier. Den er fuldt standardiseret og kompatibel med de fleste kodeditorer (f.eks. VS Code). Prettier giver mange s\u00e6t af foruddefinerede regler for kodestyling, arbejder sammen med linters og kan v\u00e6re en stor st\u00f8tte i jagten p\u00e5 topkvalitet i koden. For at forst\u00e5, hvad Prettier helt pr\u00e6cist er, skal du bes\u00f8ge dette <a href=\"https:\/\/prettier.io\/docs\/en\/comparison.html\">sammenligning<\/a> fra officielle dokumenter.<\/p>\n\n\n\n<p>Hvis det er gjort, skal ESlint-konfigurationsfilen (f.eks. <em>.eslintrc.json<\/em>(afh\u00e6ngigt af hvad du har valgt f\u00f8r) b\u00f8r vises i din rodmappe, et sted ved siden af <em>.stylelintrc.json<\/em> skabt f\u00f8r.<\/p>\n\n\n\n<p>Nu skal vi definere scripts i <em>pakke.json<\/em> fil, p\u00e5 samme m\u00e5de som for SCSS-filer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"scripts\": {\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>Tillykke med det! ESLint er klar til brug lige nu. Lad os tjekke, om det fungerer korrekt. Opret <em>\/src\/index.js<\/em> fil med noget indhold:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">console.log(\"noget\");<\/code><\/pre>\n\n\n\n<p>K\u00f8r linter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm k\u00f8r lint:js<\/code><\/pre>\n\n\n\n<p><code><br><\/code>Resultatet b\u00f8r se s\u00e5dan ud:<\/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 advarsel Uventet konsol-s\u00e6tning no-console\n\n\u2716 1 problem (0 fejl, 1 advarsel)<\/code><\/pre>\n\n\n\n<p>Denne advarsel forsvinder ikke, n\u00e5r du bruger <em>-fix<\/em> mulighed, fordi <strong>linters p\u00e5virker ikke potentielt meningsfuld kode. De er kun til kodestyling<\/strong>, inklusive hvide mellemrum, nye linjer, semikolon, anf\u00f8rselstegn osv.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Definition af GitHub-arbejdsgange<\/strong><\/h2>\n\n\n\n<p><a href=\"https:\/\/help.github.com\/en\/actions\/configuring-and-managing-workflows\/configuring-a-workflow\">GitHub-arbejdsgange<\/a> er en ret veldokumenteret ting. Du er velkommen til at grave dybere i dette, men lige nu vil jeg implementere en simpel arbejdsgang til at lint'e vores kode efter push til remote repository (naturligvis hostet p\u00e5 GitHub).<\/p>\n\n\n\n<p>Opret <em>\/.github\/arbejdsgange<\/em> mappe og ny <em>kode-kvalitet-arbejdsgang.yml<\/em> fil derinde, da GitHub-arbejdsgange skal defineres med YAML-filer.<\/p>\n\n\n\n<p>For at k\u00f8re et ordentligt workflow skal vi besvare et par sp\u00f8rgsm\u00e5l:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hvorn\u00e5r vil vi k\u00f8re vores workflow (ved push, ved pull request, ved merge osv.)?<\/li>\n\n\n\n<li>Vil vi udelukke nogle situationer (som push til branch master)?<\/li>\n\n\n\n<li>Hvilket milj\u00f8 skal vi s\u00e6tte op for at k\u00f8re vores kommandoer korrekt (i dette eksempel - Node)?<\/li>\n\n\n\n<li>Skal vi installere afh\u00e6ngigheder? Hvis ja, hvordan skal vi s\u00e5 cache det?<\/li>\n\n\n\n<li>Hvilke skridt skal vi tage for at gennemf\u00f8re kontrollen?<\/li>\n<\/ul>\n\n\n\n<p>Efter nogle overvejelser og et par timers arbejde med docs-eksemplet <em>.yml<\/em> fil kan se s\u00e5dan ud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">navn: Kodekvalitet\n\non: 'tryk'\n\njobs:\n  kode-kvalitet:\n    navn: Lint kildekode\n    runs-on: ubuntu-latest\n    trin:\n    - bruger: actions\/checkout@v1\n\n    - navn: Ops\u00e6tning af knudepunkt\n      bruger: actions\/setup-node@v1\n      med:\n        node-version: '12.1'\n\n    - navn: Cache-afh\u00e6ngigheder\n      bruger: actions\/cache@v1\n      med:\n        sti: .\/node_modules\n        key: $(( runner.OS ))-dependencies-$(( hashFiles('<strong>**\/package-lock.json')<\/strong> ))\n        gendanne-n\u00f8gler: |\n          $(( runner.OS ))-dependencies-$(( env.cache-name ))-\n          $(( runner.OS ))-afh\u00e6ngigheder-\n          $(( runner.OS ))-\n\n    - navn: Installer afh\u00e6ngigheder\n      k\u00f8r: |\n        npm-installation\n\n    - navn: Lint-filer\n      k\u00f8r: |\n        npm k\u00f8r lint<\/code><\/pre>\n\n\n\n<p>GitHub leverer alle de milj\u00f8m\u00e6ssige ting, vi har brug for. I den sidste linje k\u00f8rer vi kommandoen <strong><em>npm k\u00f8r lint<\/em><\/strong> som ikke var defineret f\u00f8r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"scripts\": {\n    \"lint\": \"npm run lint:js &amp;&amp; npm run lint:scss\"\n}<\/code><\/pre>\n\n\n\n<p>Bem\u00e6rk, at jeg i vores arbejdsgang ikke bruger <strong>:fix<\/strong> kommandoer.<\/p>\n\n\n\n<p>N\u00e5r alle disse trin er udf\u00f8rt, kan du nyde dette smukke output fra GitHub, f\u00f8r du fletter din 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 afg\u00f8rende del af udviklingsprocessen, is\u00e6r n\u00e5r man \u00f8nsker at arbejde effektivt og langsigtet. Der er mange tilgange og bedste praksisser, herunder hele den agile metodik, men de fleste af dem relaterer sig til et stort virksomhedsprojekt, der udf\u00f8res af mindst 6 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=\"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 name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/da\/blog\/kvalitet-forst-5-nemme-trin-til-at-linte-din-kode-med-github-workflows-i-et-javascript-projekt\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/blog\/kvalitet-forst-5-nemme-trin-til-at-linte-din-kode-med-github-workflows-i-et-javascript-projekt\/\" \/>\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\":\"da-DK\",\"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\",\"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.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"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\":\"da-DK\",\"@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\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@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\":\"da-DK\",\"@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\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kvalitet f\u00f8rst! 5 nemme trin til at lint'e din kode med GitHub-workflows i JavaScript-projektet - The Codest","description":"Kodekvalitet er en afg\u00f8rende del af udviklingsprocessen, is\u00e6r n\u00e5r man \u00f8nsker at arbejde effektivt og langsigtet. Der er mange tilgange og bedste praksisser, herunder hele den agile metodik, men de fleste af dem relaterer sig til et stort virksomhedsprojekt, der udf\u00f8res af mindst 6 personer.","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\/da\/blog\/kvalitet-forst-5-nemme-trin-til-at-linte-din-kode-med-github-workflows-i-et-javascript-projekt\/","og_locale":"da_DK","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\/da\/blog\/kvalitet-forst-5-nemme-trin-til-at-linte-din-kode-med-github-workflows-i-et-javascript-projekt\/","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":"da-DK","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 nemme trin til at lint'e din kode med GitHub-workflows i JavaScript-projektet - 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","description":"Kodekvalitet er en afg\u00f8rende del af udviklingsprocessen, is\u00e6r n\u00e5r man \u00f8nsker at arbejde effektivt og langsigtet. Der er mange tilgange og bedste praksisser, herunder hele den agile metodik, men de fleste af dem relaterer sig til et stort virksomhedsprojekt, der udf\u00f8res af mindst 6 personer.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/#breadcrumb"},"inLanguage":"da-DK","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":"da-DK","@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":"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":"da-DK"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@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":"da-DK","@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\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3524"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3524\/revisions"}],"predecessor-version":[{"id":8622,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3524\/revisions\/8622"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3525"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}