Publikacja paczek za pomocą GitHub Packages - okładka

Publikacja paczek JavaScript z GitHub Packages

Opublikowano Kategorie Backend, Frontend, JavaScriptCzas czytania 4min

W tym wpisie pokażę Ci jak w szybki i wygodny sposób wykorzystać GitHub Packages jako alternatywę dla npm.

Dlaczego nie npm?

Przede wszystkim jest to opcja korzystniejsza finansowo. Ograniczeniem wynikającym z wykorzystania npm jest brak możliwości publikowania prywatnych paczek przy wykorzystaniu darmowej wersji. Co więcej, cennik npm jest moim subiektywnym zdaniem zbyt wygórowany jak na możliwości, które zyskujemy ($7 miesięcznie za każdego użytkownika mającego dostęp do paczki lub $7 miesięcznie za każdego członka organizacji, który ma dostęp do prywatnej paczki). Możliwość publikowania prywatnych paczek Github oferuje nawet w wersji darmowej. Ograniczeniem jest tutaj przepustowość (w wersjach pro/team jest ona wyższa).W wersji darmowej jest to 500 MB storage oraz 1 GB przepustowości miesięcznie. W przypadku mniejszych projektów moim zdaniem taki limit jest w zupełności wystarczający.

Drugim argumentem mogącym zachęcić do wypróbowania GitHub Packages jest mnogość wspieranych technologii. Oprócz paczek JS’owych omawiane rozwiązanie wspiera m.in. paczki dla języków Java czy Ruby, a nawet obrazy Dockerowe.

Do dzieła!

Publikacja paczki JS’owej za pomocą GitHub Packages jest bardzo proste. Przede wszystkim należy zacząć od stworzenia paczki. Do stworzenia paczki będzie konieczne utworzenie pliku package.json. Jeśli nie wiesz do czego służy ten plik, to zachęcam do zapoznania się z artykułem gdzie pokazuję podstawy pracy z npm. Mój testowy plik wygląda następująco.


{
  "name": "@elszczepano/test-package",
  "version": "1.0.0",
  "description": "A blogpost test package",
  "main": "src/index.js",
  "files": [
    "/src"
  ],
  "author": "Dominik Szczepaniak",
  "license": "MIT",
  "publishConfig": {
    "registry": "https://npm.pkg.github.com"
  },
  "repository": {
    "type": "git",
    "url": "[email protected]:elszczepano/test-repository.git"
  }
}

Warto zwrócić uwagę na kilka pól w powyższej definicji paczki. Do nazwy paczki (name) dodałem swoją nazwę użytkownika, aby wskazać, do jakiej organizacji należy paczka. Kolejnym polem wartym uwagi jest pole publishConfig, które zawiera konfigurację dla menadżera paczek. Aby opublikować paczkę na GitHub Packages, konieczne jest wskazanie adresu registry jako https://npm.pkg.github.com. Do konfiguracji paczki dodaję zawsze również pole repository — wskazuje ono na adres repozytorium, w którym znajduje się paczka. Jeżeli wskazane repozytorium jest repozytorium prywatnym, paczki wskazujące na to repozytorium również będą prywatne.

Kolejnym krokiem jest konfiguracja pliku ~/.npmrc. W tym pliku konieczne będzie dodanie dwóch opcji konfiguracyjnych. Przede wszystkim, potrzebujemy dodać _authToken. Aby wygenerować niezbędny token, wchodzimy w ustawienia naszego konta na GitHub, następnie wybieramy opcję Developer Settings/Personal access token. Następnie klikamy Generate new token i zaznaczamy opcję write:packages. Automatycznie powinny zaznaczyć się pozostałe wymagane uprawnienia. Ze względów bezpieczeństwa warto także wybrać opcję limitującą czas życia utworzonego tokenu. W moim przypadku wygląda to następująco.

Tworzenie nowego GitHub tokenu

Po wygenerowaniu tokenu do pliku ~/.npmrc należy dodać następującą linię.


//npm.pkg.github.com/:_authToken=YOUR_TOKEN

W miejsce YOUR_TOKEN należy oczywiście umieścić wygenerowany token.

Drugą opcją konfiguracyjną jest wskazanie, jakie paczki mają być pobierane z GitHub Packages. W przypadku, gdy domyślnie wykorzystywanym repozytorium paczek jest npm, opcja ta będzie niezbędna. Tu przydaje się ustawiona organizacja w nazwie paczki. Dzięki temu można wskazać, że wszystkie paczki z danej organizacji mają być pobierane z innego repozytorium. Osiągnięcie tego rezultatu, w moim przypadku daje dodanie następującej linii.


@elszczepano:registry = https://npm.pkg.github.com

Oczywiście w miejsce mojej organizacji należy wstawić swoją nazwę.

Następnie należy zalogować się do registry za pomocą komendy npm login --registry=https://npm.pkg.github.com. Do uwierzytelnienia się konieczne będzie podanie loginu, hasła oraz adresu email. Po uwierzytelnieniu w miejscu, w którym znajduje plik package.json, należy wywołać polecenie npm publish.

Podsumowanie

I to by było na tyle! W konsoli powinna pojawić się informacja o pomyślnym opublikowaniu paczki. Paczka będzie dostępna na wykorzystanym profilu GitHub’owym w zakładce Packages. Serdecznie zachęcam do zapoznania się z dokumentacją, źródłami i materiałami dodatkowymi oraz do pozostawienia komentarza 🙂

Źródła i materiały dodatkowe

Dominik Szczepaniak

Zawodowo Senior Software Engineer w CKSource. Prywatnie bloger, fan włoskiej kuchni, miłośnik jazdy na rowerze i treningu siłowego.

Inne wpisy, które mogą Cię zainteresować

Zapisz się na mailing i odbierz e-booka

Zapisując się na mój mailing, otrzymasz darmowy egzemplarz e-booka 106 Pytań Rekrutacyjnych Junior JavaScript Developer! Będziesz też otrzymywać wartościowe treści i powiadomienia o nowych wpisach na skrzynkę e-mail.

Subscribe
Powiadom o
guest

0 komentarzy
Inline Feedbacks
View all comments