Monorepon pilkkaaminen

(22. marraskuuta 2020)

Tämä on todellinen kuva kehitysympäristöstämme sen jälkeen, kun olemme luoneet pilkkopalvelimen repo

kasvavan määrän palveluja luodaan taustajärjestelmällemme, etuosan kehitykseen alkoi vaikuttaa se, kuinka monta repoa ja palvelinta tarvitsit asentaa paikallisesti, jotta käyttöliittymä käynnistyy. Ja jos otamme huomioon myös ( käyttöliittymän arkkitehtuurin muokkauksen ), tiesimme, että meidän on ryhdyttävä toimiin saadaksemme nopea ja sujuva kehityskokemus. Sieltä tulee sisään monorepo-pilkkopalvelimemme.

Hieman LumAppsista

Jos et tiedä LumApps , olemme globaali teknologiayritys, jolla on R & D -tiimejä Ranskassa ja joka tarjoaa asiakkaillemme SaaS Digital Workplace -ratkaisu, joka luo kokonaisvaltaisen työtilan, joka on integroitu useisiin paketteihin ja yhteistyötyökaluihin. Haluatko tietää vähän enemmän meistä? Siirry osoitteeseen LumApps.com ja katsokaa!

Tarvitsemme

Jopa pari vuotta sitten frontend-sovelluksemme oli melko helppo käynnistää omassa kehitysympäristössä koodauksen aloittamiseksi. Suoritit käyttöliittymän ja taustajärjestelmän, ja siinä se oli! Mutta koska yritys ja sovellus ovat kasvaneet räjähdysmäisesti parin viime vuoden aikana uudet palvelut loivat ja uusia kehittäjiä tulossa kehittämään Tuotteen käynnistäminen sovelluksessa paikallisesti ei ollut niin helppoa kuin ennen.

Nämä uudet palvelut tarkoittivat, että sinun on määritettävä ne koneellesi, mikä ei vain vie aikaa asennukseen, vaan myös paljon suoritinta, mikä luo todella kovan yhdistelmän kehitysympäristöihimme. Tarvitsimme järjestelmän, joka antoi meille mahdollisuuden:

  • poistaa kyseiset palvelutriippuvuudet paikallista kehitystä varten ja sinulla on yksi palvelin , joka palveli käyttöliittymän tarvitsemia tietoja paikalliseen kehitykseen ja pidentäen siten paikallista kehitysaikaa 🚀
  • Luo joukko tietoja, joita kaikki joukkueet voisivat käyttää uudelleen toimintojensa kehittämiseksi. Tämä tarkoitti tietojen jakamista tiimien kesken ja niiden sallimista luoda omia tietojoukkoja poistamaan / lisäämällä kokoonpanoja kullekin tietyn tiimin kokoonpano 🛠
  • Sinulla on yhdenmukainen joukko tietoja , joita voidaan käyttää uudelleen ryhmään yksikkö- ja integraatiotestit ✅

Kuinka teimme sen

Jonkin tutkimuksen jälkeen , löysimme hienon npm-moduulin nimeltä json-server jonka avulla voimme luoda täydellisen väärennetyn REST-sovellusliittymän oikeastaan ​​mitään konfiguraatiota. Se on todella hämmästyttävä työkalu , koska se paitsi sallii tietojen pilkkaamisen ja palvelimen luomisen, mutta tarjoaa myös paljon keskeiset API-toiminnot heti laatikosta, mikä tekee tästä työkalusta todella seuraavan tason kun pilkkaa. Sen avulla voimme esimerkiksi suorittaa POST-palvelun luomaan resurssin ja seuraavalla kerralla teemme GET-luettelon noutamista varten resursseja, äskettäin luotu resurssi olisi siellä! Sen avulla voidaan myös luoda express js -välituotteita , joita voidaan käyttää säätämiseen pyyntöjä ja vastauksia, antaen meille täyden pääsyn muutoksiin mitä haluamme!

json-server

Hanki täysi väärennetty REST-sovellusliittymä nollakoodaus alle 30 sekunnissa

www.npmjs.com

Tämän lisäksi loimme pienen jode-js-tiedoston, jonka avulla voimme hallita näitä pilkkuja helposti tiedostot monorepossa.Pohjimmiltaan json-server tarvitsee json-aloituskohdan, jossa mallitiedot elävät, mutta koska käytämme monorepo-arkkitehtuuria, halusimme jokaisella paketilla on omat mallitietonsa , joten he ovat kyseisen tiedon omistajia, ja lisäksi se antaa meille mahdollisuuden nähdä selvästi paketit kuluttavat päätepisteet. Tämä solmu js-tiedosto on komentosarja, joka suoritetaan ennen json-server ja se:

  • Käy läpi kaikki työtilan paketit ja etsii tiedostoja nimeltä api.json _mock -kansio ja yhdistää ne kaikki yhdeksi tiedostoksi kaikkien pakettien kaikkien tietojen kanssa. Siinä otetaan huomioon myös muut json-server -määritykset, kuten reitittää tai välilevyt ja laittaa ne kaikki yhdessä paikassa
Käyttäjäkansio, jossa on alikansio nimeltä _mocks ja 3 tiedostoa: api.json, route.json ja user.middleware.js
Näin käyttäjäpakettimme näyttää omilla määritellyillä pilkkoillaan
  • Kirjoittaa nämä yhdistetyt tiedostot ennalta määritettyyn kansioon ja suorittaa json-server näiden tiedostojen kanssa syötteenä .
  • Tämä kaikki suoritetaan yhdellä komennolla lanka pilkkaa joka luo tiedostot ja käynnistää sitten json-server .
  • Annoimme myös jokaiselle moduulille luoda erilaisia ​​skenaarioita API-vastauksilleen, joita kutsumme ohittaa . Jokainen paketti voi luoda niin monta ohitusta kuin haluaa, jotka ovat API: n palauttaman datan osajoukkoja, eri arvot ohittavat ja muuttavat siten, että API palauttaa toisen skenaarion. Joten esimerkiksi ilmoituspalvelumme API-vastaus näyttää tältä:
API-vastaus ilmoituspalveluumme avainkohteiden kanssa lukemattomat ilmoitukset, joiden arvo on vähintään 5 todellisuudessa
Ilmoituspalvelumme palauttaa luettelon näytettävistä ilmoituksista, kuinka monta niistä käyttäjä ei ole lukenut ja jos ilmoituksia on enemmän hakea

Mutta entä jos haluaisimme käynnistää helposti käyttöliittymän, jossa käyttäjällä ei ole lainkaan ilmoituksia? Tällöin luomme ohituksen ei-ilmoitukset.api.json , joka ohittaa tämän tiedoston:

Ilmoituspalvelumme sovellusliittymän vastaus lukemattomilla ilmoituksilla, joiden arvo on 0 ja enemmän väärässä
Ohita skenaario, jossa nykyiselle käyttäjälle ei ole ilmoituksia

Kansion tasolla ilmoituspakettimme näyttää tältä:

Ilmoituskeskuksessamme on paljon erilaisia ​​skenaarioita 😅

Ja näiden ohitusten soveltamiseksi käynnistämme vain langan pilkut – ohita ei-ilmoitukset ja solmun js-tiedostomme etsivät kullekin paketille luotuja eri ohituksia nimellä ei ilmoituksia

ja yhdistävät syvät arvot kunkin API-vastauksen alkuperäisiin arvoihin. Tämä tarkoitti myös, että jos on olemassa muita paketteja, jotka haluavat luoda ohituksen ei-ilmoitukset -skenaarialle , he voivat myös tehdä sen ! Heidän on vain luotava tiedosto nimeltä no-ilmoitukset.api.json heidän _mocks -kansio.

Lopuksi voit myös käyttää useita ohituksia kerralla tekemällä lanka pilkkaa -ohita ei-ilmoitukset, järjestelmänvalvoja, ei-virkaa. Tämä käyttää näitä ohituksia peräkkäin ohittaen kukin avain API-vastauksissa annetussa järjestyksessä.

Mitä seuraavaksi

Meidän on vielä käytävä läpi vielä pari skenaariota, jotka haluamme käsitellä, jotta kehittäjämme saisivat sujuvamman kehityskokemuksen:

  • Luo pilkkuja automaattisesti etä-taustapalvelusta.
  • Vahvista ajoittain nämä pilkkaukset etätaustapalvelua vastaan varmistaakseen, että API-vastaus ei muuta.
  • Avoimen lähdekoodin tämä pieni solmu js -skripti, joten ne teistä, jotka käyttävät monorepoja ja haluavat käyttää tätä koodia voi tehdä sen! Pysy kuulolla tämän aiheen tulevasta kehityksestä!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *