{"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":"qualita-prima-5-semplici-passi-per-listare-il-codice-con-i-flussi-di-lavoro-di-github-in-un-progetto-javascript","status":"publish","type":"post","link":"https:\/\/thecodest.co\/it\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/","title":{"rendered":"La qualit\u00e0 prima di tutto! 5 semplici passi per listare il codice con i flussi di lavoro GitHub nel progetto JavaScript"},"content":{"rendered":"<p>Che cosa dobbiamo fare, quando il <a href=\"https:\/\/thecodest.co\/it\/dictionary\/why-do-projects-fail\/\">progetto<\/a> \u00e8 piccolo o il cliente non sa ancora se vale la pena investire di pi\u00f9? Ovviamente, al <strong><a href=\"https:\/\/thecodest.co\/blog\/product-building-with-mvp-why-is-this-worth-implementing\/\">Fase MVP del progetto<\/a><\/strong>, <a href=\"https:\/\/thecodest.co\/it\/dictionary\/what-is-code-refactoring\/\">codice<\/a> I test di stile o di unit\u00e0 non sono la priorit\u00e0 assoluta. Gli investitori di solito vogliono avere una buona <a href=\"https:\/\/thecodest.co\/it\/dictionary\/how-to-make-product\/\">prodotto<\/a> E poi, se funziona, non ha bisogno di essere testato, giusto?<\/p>\n\n\n\n<p>In realt\u00e0, ho una certa esperienza in <strong><a href=\"https:\/\/thecodest.co\/contact\">costruire app da zero<\/a><\/strong>anche senza utilizzare le migliori pratiche. Alcune circostanze aziendali mi hanno costretto a cercare un compromesso tra i piani di budget di un investitore e l'elenco di \"cose da fare\" dello sviluppatore. Fortunatamente, se si utilizza GitHub, la maggior parte dei problemi comuni relativi alla qualit\u00e0 del codice pu\u00f2 essere risolta in pochi minuti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>In questo articolo, vi mostrer\u00f2 come utilizzare i flussi di lavoro di GitHub nell'ambiente Node.js per standardizzare la vostra base di codice.<\/strong><\/h2>\n\n\n\n<p>Alcune ipotesi prima di iniziare:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avete familiarit\u00e0 con NPM e con la console Linux.<\/li>\n\n\n\n<li>Avete un po' di esperienza con preprocessori di stile, caricatori di moduli, bundler, ecc.<\/li>\n\n\n\n<li>Sapete a cosa servono le linters e volete davvero utilizzarle nei vostri progetti.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Struttura tipica del progetto JavaScript<\/strong><\/h2>\n\n\n\n<p>Se avete mai usato qualche <a href=\"https:\/\/thecodest.co\/it\/blog\/javascript-tools-in-action\/\">JS<\/a> strutture come <a href=\"https:\/\/thecodest.co\/it\/blog\/hire-vue-js-developers\/\">Vue<\/a> o <a href=\"https:\/\/thecodest.co\/it\/blog\/conditional-component-visibility-in-react\/\">React<\/a>\u00e8 possibile individuare facilmente alcuni punti in comune tra loro, ad es:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\/src<\/em> con tutti i componenti e la logica JS,<\/li>\n\n\n\n<li><em>\/prova<\/em> per i test unitari e e2e,<\/li>\n\n\n\n<li><em>\/attivit\u00e0<\/em> per gli stili, le immagini, ecc.<\/li>\n<\/ul>\n\n\n\n<p>Anche se stiamo parlando di <a href=\"https:\/\/thecodest.co\/it\/blog\/hire-javascript-developer\/\">JavaScript<\/a> progetto, lavoriamo in <a href=\"https:\/\/thecodest.co\/it\/dictionary\/what-is-node-js-used-for\/\">Nodo<\/a> quindi ovviamente dovrebbe esserci anche qualche elemento di Node come <em>pacchetto.json<\/em>, <em>pacchetto-serratura.json<\/em> e <em>\/moduli_nodi<\/em> nella nostra directory principale.<\/p>\n\n\n\n<p>Tutte queste cose sono al loro posto - questo \u00e8 ci\u00f2 che chiamiamo il <strong>convenzione<\/strong>. I framework sono stati inventati per fornire alcune convenzioni ragionevoli, quindi di solito non c'\u00e8 nemmeno bisogno di preoccuparsi del modello di progettazione iniziale. Poich\u00e9 in questo esempio voglio spiegare alcuni approcci, non applicher\u00f2 soluzioni pronte all'uso come la Vue CLI.<\/p>\n\n\n\n<p><strong>\u00c8 ora di capire cosa c'\u00e8 sotto tutti questi script magici!<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Estensione del tipico progetto Node<\/strong><\/h2>\n\n\n\n<p>Per fornire soluzioni di alta qualit\u00e0, i linters sono la prima cosa da cui partire quando si imposta un nuovo progetto. Concentriamoci su due linters: Stylelint per gli stili (<em>*.scss<\/em>) e ESLint per i file sorgente (<em>*.js<\/em>). Entrambi questi linters sono disponibili su NPM e sono piuttosto facili da configurare. L'uso dei linters richiede un processo di installazione, l'aggiunta di file di configurazione e la definizione di script di progetto. Procediamo passo dopo passo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Aggiunta di Stylelint<\/strong><\/h2>\n\n\n\n<p>L'installazione di Stylelint nell'ambiente Node \u00e8 davvero semplice. In base a <a href=\"https:\/\/stylelint.io\/user-guide\/get-started\">documenti ufficiali<\/a>, \u00e8 sufficiente correre:<\/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>e aspettare che sia finito.<\/p>\n\n\n\n<p><em>configurazione-standard di stylelint<\/em> fornisce un insieme predefinito di regole di linting e pu\u00f2 essere sostituito con qualsiasi pacchetto che soddisfi meglio le vostre esigenze (ad es. <a href=\"https:\/\/www.npmjs.com\/package\/stylelint-config-airbnb\">Stile Airbnb<\/a>). Quindi creare un nuovo file nascosto <em>.stylelintrc.json<\/em>che \u00e8 il file di configurazione di Stylelint, responsabile del caricamento delle regole predefinite:<\/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>Al momento, l'unica cosa che manca \u00e8 qualche script NPM (o script) dichiarato nel file package.json per avviare il linting dei nostri file SCSS. Ecco la mia proposta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"script\": {\n    \"lint:scss\": \"stylelint '**\/*.scss' --syntax scss -f verbose --color\",\n    \"lint:scss:fix\": \"stylelint '**\/*.scss' --sintassi scss --fix -f verbose -color\".\n}<\/code><\/pre>\n\n\n\n<p>Come si pu\u00f2 vedere, ho dichiarato lo script contenente <strong>-Correzione<\/strong> da usare prima di inviare le modifiche al repository.<\/p>\n\n\n\n<p><strong>Ricordate: \u00e8 una cattiva pratica utilizzare <em>-Correzione<\/em> nel flusso CI, perch\u00e9 in tal caso il codice passato alla produzione non viene stilizzato correttamente nel repository.<\/strong> Ecco perch\u00e9 abbiamo bisogno di entrambi i copioni.<\/p>\n\n\n\n<p>Testiamo il nostro linter creando un file <em>\/assets\/scss\/styles.scss<\/em> con alcuni contenuti, come:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"css\" class=\"language-css\">corpo {\n                    colore di sfondo: #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>Nella console dovrebbe apparire qualcosa di simile a questo:<\/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 Indentazione attesa di 2 spazi indentazione\n\n1 fonte controllata\n\n~\/Codest\/Projects\/github-workflow-demo\/assets\/scss\/styles.scss\n\n1 problema trovato\n\nlivello di gravit\u00e0 \"errore\": 1\n\nindentazione: 1\n\nnpm ERR! codice 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! Stato di uscita 2<\/code><\/pre>\n\n\n\n<p>Questo significa che il nostro linter funziona!<\/p>\n\n\n\n<p>L'output mostra esattamente quale riga causa un errore e descrive il problema da risolvere. Alcuni problemi non sono risolvibili automaticamente perch\u00e9 richiedono la decisione di uno sviluppatore, ma nella maggior parte dei casi \u00e8 sufficiente eseguire lo stesso comando con <strong>-Correzione<\/strong> e quindi eseguiamola.<\/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>Ora si dovrebbe vedere un output verde senza errori:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">stylelint '**\/*.scss' --sintassi scss --fix -f verbose --color\n\n\n1 sorgente controllata\n\n\/Users\/wojciechbak\/Codest\/Projects\/github-workflow-demo\/assets\/scss\/styles.scss\n\n0 problemi trovati<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Aggiunta di ESLint<\/strong><\/h2>\n\n\n\n<p>Questo passo \u00e8 quasi identico al precedente. Installeremo ESLint, definiremo alcune regole predefinite e dichiareremo due script NPM richiamabili: uno per il CI e uno per il pre-push. Andiamo avanti!<\/p>\n\n\n\n<p>Se utilizzate NPM nel vostro lavoro quotidiano, forse vorreste installare ESLint a livello globale. Se non lo fate, consultate le istruzioni per l'installazione in <a href=\"https:\/\/eslint.org\/docs\/user-guide\/getting-started\">documenti ufficiali<\/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>Quando il comando eslint \u00e8 disponibile sulla macchina, basta eseguirlo nel progetto:<\/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>Seguendo le istruzioni visualizzate nel terminale, \u00e8 sufficiente prendere alcune decisioni sul progetto, come ad esempio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Javascript o <a href=\"https:\/\/thecodest.co\/it\/dictionary\/typescript-developer\/\">TypeScript<\/a><\/li>\n\n\n\n<li>Stile Airbnb o stile Google<\/li>\n\n\n\n<li>tipo di configurazione (file JSON, file JS o inline in <em>pacchetto.json<\/em>)<\/li>\n\n\n\n<li>Moduli ES (<em>Importazione\/esportazione<\/em>) o <em>richiedere<\/em> sintassi<\/li>\n<\/ul>\n\n\n\n<p>In questa sede vale la pena di parlare del formattatore di codice chiamato Prettier. \u00c8 completamente standardizzato e compatibile con la maggior parte degli editor di codice (ad esempio VS Code). Prettier fornisce molti set di regole predefinite per lo styling del codice, collabora con i linters e pu\u00f2 essere di grande aiuto per ottenere la massima qualit\u00e0 del codice. Per capire che cos'\u00e8 esattamente Prettier, visitate questo sito <a href=\"https:\/\/prettier.io\/docs\/en\/comparison.html\">confronto<\/a> dai documenti ufficiali.<\/p>\n\n\n\n<p>Se \u00e8 stato fatto, il file di configurazione di ESlint (ad es. <em>.eslintrc.json<\/em>a seconda di quello che avete scelto in precedenza) dovrebbe apparire nella vostra directory principale, da qualche parte accanto a <em>.stylelintrc.json<\/em> creato in precedenza.<\/p>\n\n\n\n<p>Ora dobbiamo definire gli script in <em>pacchetto.json<\/em> come per i file SCSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"script\": {\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>Congratulazioni! ESLint \u00e8 pronto all'uso. Verifichiamo se funziona correttamente. Creare <em>\/src\/index.js<\/em> con alcuni contenuti:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">console.log(\"qualcosa\");<\/code><\/pre>\n\n\n\n<p>Eseguire l'inserimento di un liner:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm run lint:js<\/code><\/pre>\n\n\n\n<p><code><br><\/code>Il risultato dovrebbe essere simile a questo:<\/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 avviso Dichiarazione console inattesa no-console\n\n\u2716 1 problema (0 errori, 1 avviso)<\/code><\/pre>\n\n\n\n<p>Questo avviso non scompare dopo aver utilizzato <em>-Correzione<\/em> perch\u00e9 <strong>non influisce sul codice potenzialmente significativo. Servono solo per lo stile del codice<\/strong>compresi gli spazi bianchi, le linee nuove, i punti e virgola, le virgolette, ecc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Definire i flussi di lavoro di GitHub<\/strong><\/h2>\n\n\n\n<p><a href=\"https:\/\/help.github.com\/en\/actions\/configuring-and-managing-workflows\/configuring-a-workflow\">Flussi di lavoro GitHub<\/a> sono una cosa abbastanza ben documentata. Sentitevi liberi di approfondire l'argomento, ma per il momento implementer\u00f2 un semplice flusso di lavoro per lincare il nostro codice dopo il push al repository remoto (ovviamente, ospitato su GitHub).<\/p>\n\n\n\n<p>Creare <em>\/.github\/flussi di lavoro<\/em> e la nuova directory <em>code-quality-workflow.yml<\/em> perch\u00e9 i flussi di lavoro di GitHub devono essere definiti con file YAML.<\/p>\n\n\n\n<p>Per eseguire un flusso di lavoro corretto, dobbiamo rispondere ad alcune domande:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quando vogliamo eseguire il nostro flusso di lavoro (su push, su richiesta di pull, su merge ecc.)?<\/li>\n\n\n\n<li>Vogliamo escludere alcune situazioni (come il push al ramo master)?<\/li>\n\n\n\n<li>Quale ambiente dobbiamo configurare per eseguire correttamente i nostri comandi (in questo esempio - Node)?<\/li>\n\n\n\n<li>\u00c8 necessario installare le dipendenze? In caso affermativo, come dovremmo memorizzarle nella cache?<\/li>\n\n\n\n<li>Quali sono i passi da compiere per completare il controllo?<\/li>\n<\/ul>\n\n\n\n<p>Dopo alcune considerazioni e qualche ora di lavoro con l'esempio di docs <em>.yml<\/em> Il file pu\u00f2 avere il seguente aspetto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">nome: Codice qualit\u00e0\n\nsu: 'push'\n\nlavori:\n  code-quality:\n    nome: Lint codice sorgente\n    viene eseguito su: ubuntu-latest\n    passi:\n    - usa: actions\/checkout@v1\n\n    - nome: impostare il nodo\n      usa: actions\/setup-node@v1\n      con:\n        node-version: '12.1'\n\n    - nome: dipendenze della cache\n      usa: actions\/cache@v1\n      con:\n        percorso: .\/node_modules\n        chiave: $(( runner.OS ))-dipendenze-$(( hashFiles('<strong>**\/package-lock.json')<\/strong> ))\n        chiavi di ripristino: |\n          $(( runner.OS ))-dipendenze-$(( env.cache-name ))-\n          $(( runner.OS ))-dipendenze-\n          $(( runner.OS ))-\n\n    - nome: installare le dipendenze\n      eseguire: |\n        installare npm\n\n    - nome: Lint i file\n      eseguire: |\n        npm eseguire lint<\/code><\/pre>\n\n\n\n<p>GitHub fornisce tutto il materiale ambientale di cui abbiamo bisogno. Nell'ultima riga stiamo eseguendo il comando <strong><em>npm run lint<\/em><\/strong> che non era stato definito in precedenza:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\"script\": {\n    \"lint\": \"npm run lint:js &amp;&amp; npm run lint:scss\".\n}<\/code><\/pre>\n\n\n\n<p>Si noti che nel nostro flusso di lavoro non si utilizza il metodo <strong>:fix<\/strong> comandi.<\/p>\n\n\n\n<p>Una volta completati tutti questi passaggi, si pu\u00f2 godere di questo bellissimo output da GitHub prima di unire la richiesta di pull: <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>La qualit\u00e0 del codice \u00e8 una parte cruciale del processo di sviluppo, soprattutto quando si vuole lavorare in modo efficiente e a lungo termine. Esistono molti approcci e best practice, comprese le metodologie agili, ma la maggior parte di essi si riferisce a un grande progetto aziendale condotto da almeno 6 persone.<\/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\/it\/blog\/qualita-prima-5-semplici-passi-per-listare-il-codice-con-i-flussi-di-lavoro-di-github-in-un-progetto-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/blog\/qualita-prima-5-semplici-passi-per-listare-il-codice-con-i-flussi-di-lavoro-di-github-in-un-progetto-javascript\/\" \/>\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 minuti\" \/>\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\":\"it-IT\",\"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\":\"it-IT\",\"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\":\"it-IT\",\"@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\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\":\"it-IT\",\"@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\\\/it\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"La qualit\u00e0 prima di tutto! 5 semplici passi per lincare il codice con i flussi di lavoro di GitHub nel progetto JavaScript - 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\/it\/blog\/qualita-prima-5-semplici-passi-per-listare-il-codice-con-i-flussi-di-lavoro-di-github-in-un-progetto-javascript\/","og_locale":"it_IT","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\/it\/blog\/qualita-prima-5-semplici-passi-per-listare-il-codice-con-i-flussi-di-lavoro-di-github-in-un-progetto-javascript\/","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 minuti"},"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":"it-IT","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":"La qualit\u00e0 prima di tutto! 5 semplici passi per lincare il codice con i flussi di lavoro di GitHub nel progetto JavaScript - 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":"it-IT","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":"it-IT","@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":"it-IT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@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":"it-IT","@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\/it\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts\/3524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/comments?post=3524"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts\/3524\/revisions"}],"predecessor-version":[{"id":8622,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts\/3524\/revisions\/8622"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/media\/3525"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/media?parent=3524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/categories?post=3524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/tags?post=3524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}