window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Kvaliteet kõigepealt! 5 lihtsat sammu, kuidas oma koodi GitHubi töövoogude abil JavaScript projektis lintida - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2020-03-10
Tarkvaraarendus

Kvaliteet kõigepealt! 5 lihtsat sammu oma koodi lintimiseks GitHubi töövoogude abil JavaScript projektis

Wojciech Bak

Koodikvaliteet on arendusprotsessi oluline osa, eriti kui soovite töötada tõhusalt ja pikaajaliselt. On palju lähenemisviise ja parimaid tavasid, sealhulgas kogu agiilsete metoodikate värk, kuid enamik neist on seotud mõne suure, vähemalt 6 inimese poolt läbiviidava ettevõtte projektiga.

Mida me peaksime tegema, kui projekt on väike või ei tea klient ikka veel, kas tasub rohkem investeerida? Ilmselt on Projekti MVP etapp, kood stiili- või ühiktestid ei ole esmatähtis. Investorid tahavad tavaliselt head toode ja kuule - kui see töötab, siis ei ole vaja katsetada, eks ole?

Tegelikult on mul mõningaid kogemusi rakenduste loomine nullist, isegi ilma parimate tavade kasutamiseta. Mõned ärilised asjaolud sundisid mind otsima kompromissi investori eelarveplaanide ja arendaja "nice-to-have" nimekirja vahel. Õnneks, kui kasutate GitHubi, saab enamiku koodi kvaliteediga seotud tavapärastest probleemidest lahendada mõne minutiga.

Selles artiklis näitan teile, kuidas kasutada GitHubi töövooge Node.js keskkonnas oma koodibaasi standardiseerimiseks.

Mõned eeldused enne alustamist:

  • Te olete tuttav NPM-i ja Linuxi konsooliga.
  • Teil on mõningane kogemus stiilipreprotsessorite, moodulite laadijate, bundlerite jne kasutamisega.
  • Te teate, milleks on linterid ja tahate neid oma projektides tõesti kasutada.

1. Tüüpiline JavaScript projekti struktuur

Kui te olete kunagi kasutanud mõnda JS raamistikku nagu Vue või React, võite hõlpsasti märgata mõningaid ühiseid asju nende vahel, nt:

  • /src kataloogi kogu teie JS-loogika ja komponentidega,
  • /test kataloogi üksuse ja e2e testide jaoks,
  • /varad kataloogi stiilide, piltide jne jaoks.

Isegi kui me räägime JavaScript projekt, me töötame Sõlme keskkonda, nii et ilmselt peaks olema ka mõned Node'i asjad nagu package.json, package-lock.json ja /node_modules kataloogi meie juurkataloogis.

Kõik need asjad on oma koha peal - seda me nimetame konventsioon. Raamistikud on leiutatud selleks, et pakkuda mõningaid mõistlikke konventsioone, nii et tavaliselt ei ole meil vaja isegi hoolida esialgsest disainimustrist. Kuna selles näites tahan selgitada mõningaid lähenemisviise, ei hakka ma rakendama mingeid valmis lahendusi nagu Vue CLI.

Aeg on aru saada, mis peitub kõigi nende maagiliste lintide all!

2. Tüüpilise Node projekti laiendamine

Kvaliteetsete lahenduste pakkumiseks on linterid esimene asi, millest me peaksime uue projekti loomisel alustama. Keskendume kahele linterile - Stylelint stiilide jaoks (*.scss) ja ESLint lähtefailide jaoks (*.js). Mõlemad linterid on saadaval NPM-is ja neid on üsna lihtne konfigureerida. Linterite kasutamine nõuab paigaldusprotsessi läbimist, konfigfailide lisamist ja projekti skriptide määratlemist. Teeme seda samm-sammult.

3. Stylelindi lisamine

Stylelint'i paigaldamine Node'i keskkonda on väga lihtne. Vastavalt ametlikud dokumendid, peate lihtsalt jooksma:

npm install --save-dev stylelint stylelint-config-standard

ja oodake, kuni see on valmis.

stylelint-config-standard pakub vaikimisi lintingu reegleid ja selle võib asendada mis tahes paketiga, mis sobib teie vajadustele paremini (nt. Airbnb stiilis). Seejärel looge uus peidetud fail .stylelintrc.json, mis on Stylelint'i konfiguratsioonifail, mis vastutab meie eelnevalt määratletud reeglite laadimise eest:

{
    "extends": "stylelint-config-standard"
}

Praegu on ainus puuduv asi mõni NPM skript (või skriptid), mis on deklareeritud package.json failis, et alustada meie SCSS-failide lintingut. Siin on minu ettepanek:

"skriptid": {
    "lint:scss": scss' --syntax scss -f verbose --color": "stylelint '**/*.scss' --syntax scss -f verbose --color",
    "lint:scss:fix": "stylelint '**/*.scss' --syntax scss --fix -f verbose -color"
}

Nagu näete, olen deklareerinud skripti, mis sisaldab -fix valik - seda tuleb kasutada enne muudatuste saatmist repositooriumi.

Pidage meeles - on halb tava kasutada -fix teie CI-voolus, sest siis ei ole kood, mille te tootmisse edastate, repositooriumis õigesti kujundatud. Seepärast ongi meil vaja mõlemat skripti.

Testime oma linterit, luues faili /assets/scss/styles.scss mingi sisuga, nagu:

body {
                    background-color: #fff;
}
npm run lint:scss

Teie konsoolis peaks olema näha midagi sellist:

> stylelint '**/*.scss' --syntax scss -f verbose --color

assets/scss/styles.scss

2:21 ✖ Oodatud taandumine 2 tühikut taandumine

1 allikas kontrollitud

~/Codest/Projektid/github-workflow-demo/assets/scss/styles.scss

1 probleem leitud

raskusaste "error": 1

taandumine: 1

npm ERR! kood ELIFECYCLE

npm ERR! errno 2

npm ERR! [email protected] lint:scss: `stylelint '**/*.scss' --syntax scss -f verbose --color`

npm ERR! Väljalangemise staatus 2

See tähendab tegelikult, et meie linter töötab!

Väljund näitab täpselt, milline rida põhjustab vea ja kirjeldab probleemi lahendamist. Mõned probleemid ei ole automaatselt parandatavad, sest need vajavad arendaja otsust, kuid enamikul juhtudel tuleb lihtsalt käivitada sama käsk koos järgmisega -fix võimalus, nii et käivitame selle.

npm run lint:scss:fix

Nüüd peaksite nägema rohelist väljundit, kus vigu ei ole leitud:

stylelint '**/*.scss' --syntax scss --fix -f verbose --color


1 kontrollitud allikas

/Users/wojciechbak/Codest/Projektid/github-workflow-demo/assets/scss/styles.scss

0 leitud probleemi

4. ESLint lisamine

See samm on peaaegu sama, mis eelmine. Installeerime ESLint'i, defineerime mõned vaikimisi reeglid ja deklareerime kaks kutsutavat NPM skripti - ühe CI jaoks ja ühe pre-push'i jaoks. Käime selle läbi!

Kui kasutate NPM-i oma igapäevatöös, siis võib-olla soovite ESLint'i globaalselt paigaldada. Kui te seda ei tee, vaadake palun paigaldusjuhiseid dokumendis ametlikud dokumendid.

npm install -g eslint

Kui eslint käsk on teie masinas saadaval, käivitage see lihtsalt oma projektis:

eslint --init

Järgides edasisi juhiseid, mis kuvatakse teie terminalis, tehke lihtsalt mõned projektiotsused, nagu:

  • Javascript või TypeScript
  • Airbnb stiilis või Google'i stiilis
  • konfiguratsioonitüüp (JSON-fail, JS-fail või inline in package.json)
  • ES-moodulid (import/eksport) või nõuda süntaks

Siinkohal tasub kirjutada paar sõna koodi vormindajast nimega Prettier. See on täielikult standardiseeritud ja ühildub enamiku koodiredaktoritega (nt VS Code). Prettier pakub palju eeldefineeritud koodi kujundamise reegleid, teeb koostööd linteritega ja võib olla suureks toeks koodi tippkvaliteedi tagaajamisel. Selleks, et mõista, mis Prettier täpselt on, külastage seda. võrdlus ametlikest dokumentidest.

Kui see on tehtud, siis ESlint config faili (nt. .eslintrc.json, sõltuvalt sellest, mida te varem valisite) peaks ilmuma teie juurkataloogi, kusagil kõrval oleva .stylelintrc.json loodud enne.

Nüüd peame defineerima skriptid package.json faili, nagu SCSS-failide puhul:

"skriptid": {
    "lint:js": *.js' --ignore-pattern node_modules/": "eslint '**/*.js' --ignore-pattern node_modules/",
    "lint:js:fix": "eslint '**/*.js' --ignore-pattern node_modules/ --fix"
}

Palju õnne! ESLint on kohe kasutusvalmis. Kontrollime, kas see töötab õigesti. Looge /src/index.js faili mingi sisuga:

console.log("midagi");

Käivita linter:

npm run lint:js


Väljund peaks välja nägema selline:

> eslint '**/*.js' --ignore-pattern node_modules/

~/Codest/Projektid/github-workflow-demo/src/index.js

1:1 hoiatus Ootamatu konsooli avaldis no-console

✖ 1 probleem (0 viga, 1 hoiatus)

See hoiatus ei kao pärast kasutamist -fix võimalus, sest linterid ei mõjuta potentsiaalselt mõttekat koodi. Need on ainult koodi kujundamiseks., sealhulgas tühikud, read, semikoolonid, jutumärgid jne.

5. GitHubi töövoogude määratlemine

GitHubi töövood on üsna hästi dokumenteeritud asi. Võite vabalt süveneda sellesse, kuid praegu rakendan ma lihtsa töövoo, et meie koodi pärast push'i kaugrepositooriumi (ilmselt GitHubis majutatud) lint'ile viia.

Loo /.github/workflows kataloogi ja uue code-quality-workflow.yml faili, kuna GitHubi töövood tuleb defineerida YAML-failide abil.

Korraliku töövoo käivitamiseks peame vastama mõnele küsimusele:

  • Millal me tahame oma töövoogu käivitada (push, pull request, merge jne)?
  • Kas me tahame välistada mõned olukorrad (näiteks push to branch master)?
  • Millise keskkonna me peame seadistama, et meie käske õigesti käivitada (antud näites - Node)?
  • Kas meil on vaja paigaldada sõltuvusi? Kui jah, siis kuidas peaksime seda vahemällu salvestama?
  • Milliseid samme peame kontrolli lõpuleviimiseks tegema?

Pärast mõningaid kaalutlusi ja paar tundi tööd dokumentidega näiteks .yml fail võib välja näha selline:

nimi: Koodikvaliteet

on: 'push'

tööd:
  koodikvaliteet:
    name: Lint source code
    töötab: ubuntu-latest
    sammud:
    - kasutab: actions/checkout@v1

    - nimi: Setup Node
      kasutab: actions/setup-node@v1
      with:
        node-version: '12.1'

    - name: Cache dependencies
      kasutab: actions/cache@v1
      with:
        path: ./node_modules
        key: $(( runner.OS ))-dependencies-$(( hashFiles('**/package-lock.json') ))
        restore-keys: |
          $(( runner.OS ))-dependencies-$(( env.cache-name ))-
          $(( runner.OS ))-dependencies-
          $(( runner.OS ))-

    - name: Paigaldada sõltuvused
      run: |
        npm install

    - nimi: Lint-failid
      run: |
        npm run lint

GitHub pakub kõiki vajalikke keskkonnaalaseid asju. Viimases reas käivitame käsu npm run lint mida varem ei olnud määratletud:

"skriptid": {
    "lint": "npm run lint:js && npm run lint:scss"
}

Pange tähele, et meie töövoos ma ei kasuta :fix käsud.

Kui kõik need sammud on tehtud, saate nautida seda ilusat väljundit GitHubist enne Pull Request'i ühendamist:

Seotud artiklid

Enterprise & Scaleups lahendused

Parimad tavad tugeva ja sidusa meeskonna loomiseks

Koostöö on tarkvaraarenduse edukuse seisukohalt ülioluline. Tugev meeskond, mis teeb head koostööd, suudab saavutada paremaid tulemusi ja ületada probleeme. Koostöö edendamiseks on vaja jõupingutusi, suhtlemist ja pidevat...

The Codest
Krystian Barchanski Frontend Unit Leader
Tarkvaraarendus

Kuidas rakendada Agile Methodology?

Meisterda agiilset metoodikat koos parimate tavadega edukaks rakendamiseks ja täiustatud projektijuhtimiseks tarkvaraarenduses.

THECODEST

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

    etEstonian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch elGreek etEstonian