(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Pirmiausia kokybė! 5 paprasti žingsniai, kaip išvalyti kodą naudojant "GitHub" darbo eigą JavaScript projekte - The Codest
The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2019-04-14
Programinės įrangos kūrimas

Pirmiausia kokybė! 5 paprasti žingsniai, kaip JavaScript projekte perbraižyti kodą naudojant "GitHub" darbo eigą

Wojciech Bak

Kodo kokybė yra labai svarbi kūrimo proceso dalis, ypač kai norite efektyviai dirbti ilgą laiką. Yra daugybė metodų ir geriausios praktikos pavyzdžių, įskaitant visas judriąsias metodikas, tačiau dauguma jų susiję su dideliu įmonės projektu, kurį vykdo mažiausiai 6 žmonės.

Ką turėtume daryti, kai projektas yra mažas arba klientas vis dar nežino, ar verta investuoti daugiau? Akivaizdu, kad Projekto MVP etapas, kodas stilius ar vienetiniai testai nėra svarbiausias prioritetas. Investuotojai paprastai nori turėti gerą produktas ir c'mon - jei jis veikia, jo nereikia testuoti, ar ne?

Tiesą sakant, turiu patirties programėlių kūrimas nuo nulio, net ir nenaudojant geriausios praktikos. Kai kurios verslo aplinkybės privertė mane ieškoti kompromiso tarp investuotojo biudžeto planų ir kūrėjo „gražių” dalykų sąrašo. Laimei, jei naudojatės "GitHub", daugumą dažniausiai pasitaikančių su kodo kokybe susijusių problemų galima išspręsti per kelias minutes.

Šiame straipsnyje parodysiu, kaip Node.js aplinkoje naudoti "GitHub" darbo eigą ir standartizuoti savo kodų bazę.

Kelios prielaidos prieš pradedant:

  • Esate susipažinęs su NPM ir "Linux" konsole.
  • Turite patirties su stiliaus preprocesoriais, modulių įkrovikliais, paketais ir kt.
  • Žinote, kam skirti linteriai, ir tikrai norite juos naudoti savo projektuose.

1. Tipinė JavaScript projekto struktūra

Jei kada nors naudojote JS sistemos, pvz. Vue arba React, nesunkiai pastebėsite kai kuriuos bendrus dalykus, pvz:

  • /src katalogą su visa jūsų JS logika ir komponentais,
  • /testas katalogas, skirtas vienetiniams ir e2e testams,
  • /turtas katalogas, kuriame yra stilių, paveikslėlių ir kt.

Net jei kalbame apie JavaScript projektą, mes dirbame Mazgas aplinka, todėl akivaizdu, kad taip pat turėtų būti kai kurie "Node" dalykai, pvz. package.json, package-lock.json ir /node_modules katalogą mūsų šakniniame kataloge.

Visi šie dalykai yra savo vietose - tai vadiname konvencija. Karkasai yra sukurti tam, kad būtų numatytos tam tikros pagrįstos konvencijos, todėl paprastai mums net nereikia rūpintis pradiniu projektavimo šablonu. Kadangi šiame pavyzdyje noriu paaiškinti kai kuriuos metodus, netaikysiu jokių gatavų sprendimų, pavyzdžiui, Vue CLI.

Laikas suprasti, kas slypi po visais šiais stebuklingais lint scenarijais!

2. Tipinio "Node" projekto išplėtimas

Norint pateikti aukštos kokybės sprendimus, kuriant naują projektą pirmiausia reikėtų pradėti nuo linterių. Sutelkime dėmesį į du linterius - stilių linterį Stylelint (*.scss) ir "ESLint" šaltinio failams (*.js). Abu šie linteriai yra prieinami NPM ir juos gana lengva konfigūruoti. Naudojant linters reikia pereiti diegimo procesą, pridėti konfigūracijos failus ir apibrėžti projekto scenarijus. Atlikime tai žingsnis po žingsnio.

3. Stiliaus "Stylelint" pridėjimas

Įdiegti "Stylelint" "Node" aplinkoje labai paprasta. Pagal oficialūs dokumentai, jums tereikia paleisti:

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

ir palaukite, kol jis bus baigtas.

stylelint-config-standard pateikia numatytuosius tinklinimo taisyklių rinkinius ir gali būti pakeistas bet kuriuo paketu, kuris geriau atitinka jūsų poreikius (pvz. Airbnb stilius). Tada sukurkite naują paslėptą failą .stylelintrc.json, kuris yra "Stylelint" konfigūracijos failas, atsakingas už iš anksto nustatytų taisyklių įkėlimą:

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

Dabar trūksta tik vieno dalyko - paketo.json faile deklaruoto NPM scenarijaus (arba scenarijų), kad būtų galima pradėti lintinguoti SCSS failus. Štai mano pasiūlymas:

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

Kaip matote, deklaravau scenarijų, kuriame yra -fiksas parinktį - ją reikia naudoti prieš perkeliant pakeitimus į saugyklą.

Atminkite, kad bloga praktika yra naudoti -fiksas CI sraute, nes tada kodas, kurį perduodate į gamybą, saugykloje nėra tinkamai stilizuojamas. Todėl mums reikia abiejų scenarijų.

Išbandykime savo linterį sukurdami failą /assets/scss/styles.scss su tam tikru turiniu, pvz:

kūnas {
                    fono spalva: #fff;
}
npm paleisti lint:scss

Konsolėje turėtumėte matyti štai tokį vaizdą:

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

assets/scss/styles.scss

2:21 ✖ Laukiama 2 tarpų įtraukos įtraukos

Patikrintas 1 šaltinis

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

Rasta 1 problema

sunkumo lygis "klaida": 1

Įstrižainė: 1

npm ERR! kodas ELIFECYCLE

npm ERR! errno 2

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

npm ERR! Išėjimo būsena 2

Tai iš tikrųjų reiškia, kad mūsų linteris veikia!

Išvestyje tiksliai parodoma, kurioje eilutėje įvyko klaida, ir aprašoma problema, kurią reikia išspręsti. Kai kurių problemų negalima išspręsti automatiškai, nes reikia kūrėjo sprendimo, tačiau daugeliu atvejų tereikia paleisti tą pačią komandą su -fiksas parinktį, todėl paleiskime ją.

npm paleisti lint:scss:fix

Dabar turėtumėte matyti žalią išvestį be rastų klaidų:

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


Patikrintas 1 šaltinis

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

Rasta 0 problemų

4. ESLint pridėjimas

Šis žingsnis yra beveik toks pat kaip ir ankstesnis. Įdiegsime "ESLint", apibrėšime numatytąjį taisyklių rinkinį ir deklaruosime du NPM skriptus - vieną CI, kitą "pre-push". Pereikime per tai!

Jei kasdieniame darbe naudojate NPM, galbūt norėtumėte įdiegti "ESLint" visame pasaulyje. Jei ne, peržiūrėkite diegimo instrukcijas oficialūs dokumentai.

npm install -g eslint

Kai jūsų kompiuteryje yra eslint komanda, tiesiog paleiskite ją savo projekte:

eslint --init

Laikydamiesi tolesnių terminale rodomų instrukcijų, tiesiog priimkite kelis projekto sprendimus, pvz:

  • Javascript arba TypeScript
  • "Airbnb" ar "Google" stilius
  • konfigūracijos tipą (JSON failas, JS failas arba eilutėje package.json)
  • ES moduliai (importas/eksportas) arba reikalauti sintaksė

Šioje vietoje verta parašyti keletą žodžių apie kodo formatavimo priemonę Prettier. Jis visiškai standartizuotas ir suderinamas su daugeliu kodo redaktorių (pvz., VS Code). Prettier pateikia daugybę iš anksto nustatytų kodo stilizavimo taisyklių rinkinių, bendradarbiauja su linteriais ir gali būti puiki pagalba siekiant aukščiausios kodo kokybės. Norėdami suprasti, kas tiksliai yra Prettier, apsilankykite šioje svetainėje palyginimas iš oficialių dokumentų.

Jei tai padaryta, ESlint konfigūracijos failas (pvz. .eslintrc.json, (priklausomai nuo to, ką pasirinkote anksčiau), turėtų atsirasti jūsų šakniniame kataloge, kur nors šalia .stylelintrc.json sukurta anksčiau.

Dabar turime apibrėžti scenarijus package.json failą, kaip ir SCSS failus:

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

Sveikiname! "ESLint" jau galima naudoti. Patikrinkime, ar ji veikia teisingai. Sukurti /src/index.js failą su tam tikru turiniu:

console.log("kažkas");

Paleiskite linterį:

npm paleisti lint:js


Išvestis turėtų atrodyti taip:

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

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

1:1 įspėjimas Netikėtas konsolės teiginys no-console

✖ 1 problema (0 klaidų, 1 įspėjimas)

Šis įspėjimas neišnyks, jei naudosite -fiksas parinktį, nes linteriai neturi įtakos potencialiai reikšmingam kodui. Jie skirti tik kodo stilizacijai, įskaitant baltuosius tarpus, naująsias eilutes, kabutes, kabliataškius, kabutes ir t. t.

5. "GitHub" darbo eigos apibrėžimas

"GitHub" darbo eigos yra gana gerai dokumentuotas dalykas. Kviečiame gilintis į tai, bet kol kas įgyvendinsiu paprastą darbo eigą, skirtą mūsų kodui po išsiuntimo į nuotolinę saugyklą (aišku, talpinamą GitHub).

Sukurti /.github/workflows katalogą ir naują code-quality-workflow.yml failą, nes "GitHub" darbo eigos turi būti apibrėžtos naudojant YAML failus.

Norėdami paleisti tinkamą darbo eigą, turime atsakyti į keletą klausimų:

  • Kada norime paleisti savo darbo eigą (siunčiant, ištraukiant užklausą, sujungiant ir t. t.)?
  • Ar norime išskirti kai kuriuos atvejus (pvz., perkėlimą į pagrindinę šaką)?
  • Kokią aplinką turime nustatyti, kad teisingai paleistume komandas (šiame pavyzdyje - "Node")?
  • Ar reikia įdiegti priklausomybes? Jei taip, kaip turėtume tai padaryti?
  • Kokius veiksmus turime atlikti, kad užbaigtume patikrinimą?

Po tam tikrų svarstymų ir kelių valandų darbo su dokumentais pavyzdys .yml failas gali atrodyti taip:

pavadinimas: Kodas kokybė

on: 'push

darbo vietos:
  code-quality:
    vardas: Lint source code
    runs-on: ubuntu-latest
    steps:
    - Naudoja: actions/checkout@v1

    - pavadinimas: Setup Node
      uses: actions/setup-node@v1
      su:
        node-version: '12.1'

    - pavadinimas: Cache dependencies
      uses: actions/cache@v1
      with:
        su: kelias: ./node_modules
        raktas: $((( runner.OS ))-dependencies-$((( hashFiles('**/package-lock.json') ))
        restore-keys: |
          $(( runner.OS ))-priklausomybės-$(( env.cache-name ))-
          $(( runner.OS ))-priklausomybės-
          $(( runner.OS ))-

    - pavadinimas: Įdiegti priklausomybes
      paleisti: |
        npm install

    - vardas: Lint failai
      paleisti: |
        npm run lint

"GitHub" teikia visą mums reikalingą aplinkos medžiagą. Paskutinėje eilutėje paleidžiame komandą npm paleisti lint kuris anksčiau nebuvo apibrėžtas:

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

Atkreipkite dėmesį, kad mūsų darbo eigoje nenaudoju :fix komandų.

Atlikę visus šiuos veiksmus, prieš suliedami savo "Pull Request" užklausą galėsite mėgautis šia gražia "GitHub" išvestimi:

Susiję straipsniai

Įmonių ir didinimo sprendimai

Geriausia stiprios ir darnios komandos formavimo praktika

Bendradarbiavimas yra labai svarbus norint sėkmingai kurti programinę įrangą. Stipri komanda, kuri gerai bendradarbiauja, gali pasiekti geresnių rezultatų ir įveikti iššūkius. Norint skatinti bendradarbiavimą, reikia pastangų, bendravimo ir nuolatinio...

The Codest
Krystianas Barchanskis Priekinės dalies padalinio vadovas
Programinės įrangos kūrimas

Kaip įgyvendinti Agile Methodology?

Įvaldykite "agile" metodiką ir geriausią praktiką, kad sėkmingai įgyvendintumėte ir patobulintumėte projektų valdymą programinės įrangos kūrimo srityje.

GERIAUSIAS

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

    The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

    Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

    Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

    lt_LTLithuanian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lvLatvian is_ISIcelandic lt_LTLithuanian