Esantioneaza configurarea monorepo cu spatii de lucru pentru fire, dactilografiat si lerna.

Configurarea explicata

Scule

  • Monorepo este instalat folosind fire.

    • Pachetele sunt conectate automat intre ele, ceea ce inseamna ca puteti face pachete incrucisate in cadrul repo.
    • devDependentele sunt comune si apar doar in pachetul radacina.json. Mai usor de gestionat si actualizat.
    • Fiecare pachet are propriile scripturi si dependente. Acestea sunt instalate in radacina node_modules, utilizand acelasi mecanism de deduptie folosit de fire pentru pachete individuale.
    • Adaugarea de pachete noi este la fel de simpla ca aruncarea unui pachet existent in folderul pachetelor si reluarea firului.
  • Scripturile Monorepo sunt executate folosind lerna.

    • lerna publish – publicare cu pachete multiple.
    • lerna run – rularea scripturilor de pachete.
    • lerna actualizat – afiseaza pachetele modificate (de la ultima eticheta).
  • Sursele si testele sunt scrise in TypeScript strict.

    • Baza comuna tsconfig.base.json.
  • Testarea se face folosind mocha si chai.

    • Proiecte usoare, testate in lupta, cu putine dependente.
    • Poate fi inclus si utilizat in browser.

Pachete de esantioane incluse

Structura si configuratiile de baza

json // configuratie tipografica comuna tsconfig.json // configuratie tip tip radacina tip solutie yarn.lock // singurul fisier de blocare din repo. toate pachetele combinate

Solutii de styling

Acest depozit isi propune sa evite prezentarea in detaliu a solutiilor de styling.

Exista o configurare naiva css-loader / mini-css-extract-plugin pentru biblioteca sanitize.css utilizata, dar infrastructura nu contine nicio copiere a activelor (in folderul dist) si, prin urmare, nu accepta activele css locale .

Fiecare solutie de styling are propriul set de cerinte de infrastructura.

Solutiile bazate pe CSS-in-JS, de exemplu, probabil ca nu va trebui sa va faceti griji deloc si sa functionati fara configurare suplimentara.

In cadrul Wix, folosim Stylable, care are propriul CLI (stc) pentru a construi si / sau a copia fisiere .st.css in dist.

Suport complet pentru importul codului sursa .css / .scss / .less /. Orice ar necesita o cladire suplimentara. Ar trebui abordat si pentru Node, daca se doreste executarea mocha la testele care importa aceste fisiere sursa.

Managementul dependentei

In mod traditional, lucrul cu proiecte in depozite separate face dificila mentinerea versiunilor devDependencies aliniate, deoarece fiecare proiect isi poate specifica propriile versiuni devDependency.

Monorepos simplifica acest lucru, deoarece dependentele dev sunt partajate intre toate pachetele din monorepo.

Avand in vedere acest lucru, folosim urmatoarea structura de dependenta:

  • devDependencies sunt plasate in pachetul radacina.json
  • dependente si peer Dependentele sunt plasate in package.json al pachetului relevant care le necesita, deoarece fiecare pachet este publicat separat

Noi devDependente pot fi adaugate la pachetul radacina.json folosind fire:

fire add <nume pachet> –dev -W

Unele pachete depind de pachetele fratilor din cadrul monorepo. De exemplu, in aceasta repo, @ sample / app depinde de @ sample / components. Aceasta relatie este doar o dependenta normala si poate fi descrisa in package.json al aplicatiei astfel:

“dependencies”: {“@ sample / components”: “<versiunea pachetului” “}

Implementare

yarn lerna publish va publica noi versiuni ale pachetelor la npm.

Lerna cere noi numere de versiune pentru pachetele care s-au schimbat de la ultima versiune si dependentele acestora. Fiecare pachet are un script de preambalare care ruleaza automat compilarea inainte de ambalare.

yarn lerna publish –force-publish va forta eliberarea tuturor pachetelor, indiferent de care s-au schimbat efectiv.

Implementarea activelor aplicatiilor / serverelor pe serverele de productie reale nu este afisata.