Przy budowaniu bibliotek jest taka zasada, że jako twórcy biblioteki staramy się zejść do najniższej możliwej wersji paczek z jakich korzystamy, a zarazem projekt, który będzie korzystał z naszej biblioteki był w stanie korzystać z najwyższej wersji.
Publikowanie do NPM
Aby opublikować paczkę w NPM musimy lekko zmodyfikować package.json w naszej bibliotece, dodając m.in. autora, licencję, opis i repozytorium, więc plik w całej okazałości będzie wyglądał tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "name": "angular-foundation", "version": "0.0.1", "author": "Piotr Czech", "license": "MIT", "repository": { "type": "git", "url": "https://github.com/Xeinaemm/angular-foundation" }, "description": "Simple example how to build a library", "peerDependencies": { "@angular/material": "^6.0.0 || ^7.1.0", "@angular/cdk": "^6.0.0 || ^7.1.0", "@angular/animations": "^6.0.0 || ^7.1.0", "@angular/common": "^6.0.0 || ^7.1.0", "@angular/compiler": "^6.0.0 || ^7.1.0", "@angular/core": "^6.0.0 || ^7.1.0", "@angular/forms": "^6.0.0 || ^7.1.0", "@angular/http": "^6.0.0 || ^7.1.0", "@angular/platform-browser": "^6.0.0 || ^7.1.0", "@angular/platform-browser-dynamic": "^6.0.0 || ^7.1.0", "@angular/router": "^6.0.0 || ^7.1.0", "core-js": "^2.0.0 || ^2.5.7", "rxjs": "^5.0.0 || ^6.3.3", "zone.js": "^0.7.0 || ^0.8.26" } } |
Dodatkowo nasza paczka powinna zawierać pliki README i licencje, więc dodajemy nowe skrypty kopiujące pliki z katalogu głównego, czyli:
1 2 |
"copy_license": "cpx \"./LICENSE\" \"dist/angular-foundation/\"", "copy_readme": "cpx \"./README.md\" \"dist/angular-foundation/\"", |
I modyfikujemy komendę package:
1 |
"package": "npm run clear && npm run build_lib && npm run copy_assets && npm run copy_license && npm run copy_readme && npm run npm_pack && npm run copy_tgz && npm run clear" |
Samo w sobie publikowanie paczki wymaga posiadania konta na npmjs.com, gdy posiadamy takie konto wystarczy, że wykonamy dwie komendy, aby opublikować paczkę, czyli:
1 |
npm login |
A potem:
1 |
npm publish ./packages/angular-foundation-0.0.1.tgz |
Podsumowanie
Samo w sobie budowanie biblioteki nie jest skomplikowane, zresztą jak każdego rozwiązania, jednak różnica między dobrym, a złym rozwiązaniem jest jedna i nazywa się: dyscyplina. Budowanie rozwiązań, z których będą korzystać inni, niesie za sobą odpowiedzialność, aby wszystko było pisane jednym stylem, najlepiej w oparciu o wzorce, ponieważ jest to coś, co łączy wszystkie technologie.
Podsumowując, każdy idiota jest w stanie napisać kod, który zrozumie komputer. Niewielu jest w stanie napisać go tak, aby zrozumiał go człowiek.
W razie jakichkolwiek pytań, piszcie śmiało w komentarzach! Link to repozytorium znajdziecie tutaj.