Przegląd i Konfiguracje narzędzi
3 godz. 49 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykAktualnie trudno wyobrazić sobie pracę w ekosystemie JavaScriptu bez terminala. W pierwszym rozdziale kursu nie tylko dowiesz się o dostępnych na rynku narzędziach oraz rozszerzeniach ale także o sposobach ich konfiguracji, uwzględniających przykłady z codziennej pracy, w tym wykorzystanie GPT-3 do łatwiejszej obsługi terminala.
Dla osób, które programują, IDE (Integrated Development Environment) niemal zawsze stanowi najważniejsze narzędzie pracy. Pomimo tego, że na rynku dostępny jest bardzo dobry Visual Studio Code, w tym kursie poznasz bliżej płatne narzędzia firmy JetBrains, które w wielu przypadkach sprawdzą się nieporównywalnie lepiej. Dobrze skonfigurowane IDE potrafi "zrozumieć" Twój kod na tyle, aby skutecznie Ci pomagać w pisaniu kodu, pracy zespołowej czy debugowaniu aplikacji.
Poza narzędziami bezpośrednio związanymi z programowaniem, istnieje szereg aplikacji które pomagają w codziennej pracy. Mowa o pracy koncepcyjnej, sandboxach, organizacji wiedzy, zadań, kalendarza, poczty czy nawet sięganie po narzędzia no-code / low-code. W tym kursie znajdziesz przegląd tych, które mają duży sens z punktu widzenia full-stack'a, aczkolwiek pamiętaj że każde z nich posiada też różne alternatywy, które mogą bardziej przypaść Ci do gustu.
Kolejnym niezbędnym elementem w programowaniu, są różnego rodzaju zależności projektu oraz narzędzia instalowane na komputerze czy serwerach, w celu ułatwienia pracy lub wręcz jej umożliwienia. Poza tym poruszymy też temat własnych skryptów a nawet tworzenia CLI w Node.js na własne potrzeby.
Tworzenie aplikacji w JS charakteryzuje konieczność wykorzystywania różnego rodzaju narzędzi, umożliwiających m.in. transpilowanie oraz optymalizację kodu. Obecnie jednym z najlepszych wyborów jest Vite i to na nim skupimy się najbardziej, łącząc go nie tylko z samym JavaScriptem ale także frameworkami CSS (konkretnie Tailwind CSS).
Ten kurs powstał z myślą o osobach pracujących w ekosystemie JavaScriptu. Jest to szybkie przegląd dostępnych na rynku narzędzi oraz przykładów ich praktycznego wykorzystania w codziennej pracy. Jeżeli szukasz inspiracji, nowych narzędzi lub sposobów usprawnienia codziennych zadań — w tym kursie je znajdziesz.
Domyślam się, że temat Package Managerów jest Ci
przynajmniej znany ze względu na to, że instalowanie pakietów npm jest jedną z
pierwszych rzeczy, które robimy pracując w ekosystemie JavaScriptu.
Jednocześnie chciałbym się przy tym temacie nieco zatrzymać ze względu na to,
że nawet w przypadku doświadczonych osób zdarzają się nawet fundamentalne błędy
oraz całkiem częste są sytuacje, w których te osoby po prostu nie zdają sobie sprawy
z pewnych możliwości oraz elementów zarządzania zależnościami projektu, które
często prowadzą do różnego rodzaju błędów, które naprawia się dość po omacku.
Zacznijmy od tego, że z całą pewnością
najbardziej popularnym Package Managerem dla JavaScriptu jest oczywiście npm.
Jeżeli z niego korzystasz, nie ma z tym najmniejszego problemu, aczkolwiek musisz
zdawać sobie sprawę, że obecnie mamy dostępnych przynajmniej kilka alternatyw.
Pierwszą z nich, która pojawiła się już lata temu jest Yarn.
I szczerze mówiąc, w momencie jego premiery i chwilę później był całkiem
dobrą alternatywą dla NPM, który stopniowo zaczął się aktualizować i też
adresować pewnego rodzaju problemy, które początkowo rozwiązywał wyłącznie Yarn.
Aktualnie poza małymi detalami myślę, że wybór pomiędzy NPM a YARN nie wiąże się ze
szczególnie zauważalnym różnicami, ale już nieco inaczej jest w przypadku pnPm, czyli
stosunkowo nowego narzędzia, które charakteryzuje się przede wszystkim
szybkością oraz efektywnością dotyczącą zarządzania samymi pakietami
zainstalowanymi na naszym prywatnym komputerze.
Otóż jak pewnie doskonale wiesz, w
przypadku instalacji pakietów z pomocą NPM a bądź YARNa, w naszym katalogu projektu
tworzony jest katalog node_modules zawierający wszystkie zależności projektu.
Mało tego, zależności naszego projektu
posiadają swoje zależności i efekt końcowy jest taki, że nawet w przypadku prostego
projektu mamy tutaj nawet kilkaset katalogów.
W tej chwili wykorzystując magię kina utworzyłem sobie tutaj dwa projekty NestJS.
Jeden i drugi jest bliźniaczo do
siebie podobny, z tą różnicą, że jeden wykorzystuje npm, a drugi pnpm.
No i teraz zarówno w przypadku tego
pierwszego, jak i drugiego usuniemy sobie katalogi node_modules, a następnie przejdziemy
do terminala, w którym to z pomocą npm zainstalujemy zależności
no i w tym momencie te wszystkie
zależności zostały pobrane na mój komputer i trwało to 4 sekundy.
W przypadku pnpm jeżeli wykonamy dokładnie tą samą akcję to rezultat o który nam
tutaj chodzi zostanie zrealizowany w 300 milisekund.
Poza tym, jeżeli zwrócisz uwagę na to, co tutaj dokładnie się wydarzyło, to mamy
informację o tym, że niektóre paczki zostały podlinkowane przez pnpm.
Jeżeli teraz przebadamy sobie zarówno node-modules
pochodzące z projektu npm tutaj po prawej stronie oraz z projektu pnpm po lewej, to
zobaczymy prawie 100 megabajtów różnicy pomiędzy nimi.
Jeżeli jeszcze raz przejdziemy sobie do
Findera, to okaże się, że w projekcie pnpm w katalogu node-models obok samych
folderów zależności w przypadku tych podlinkowanych mamy rzeczywiście taką
strzałkę, która oznacza mniej więcej tyle, że w tym momencie paczka ts-node nie
znajduje się w katalogu node-modules, tylko została do niego podlinkowana.
Oznacza to, że jeżeli przykładowo rxjs zainstalował bym w wielu projektach
wykorzystujących pnpm, to fizycznie ta konkretna wersja tej
paczki znajdowała się na moim dysku tylko raz.
No i jak się nie łatwo domyślić, to właśnie między innymi z tego wynika ta
szybkość oraz efektywność pracy z pakietami.
Zwyczajnie tutaj prosta koncepcja
sprawiła, że oszczędzamy zarówno czas jak i miejsce na dysku.
Osobiście teraz już praktycznie na każdym kroku sięgam po pnpm, aczkolwiek jeszcze na
ten moment mam pewien problem z wykorzystaniem go w połączeniu z IntelliJ.
Mam nadzieję, że wynika to albo z mojej błędnej konfiguracji, albo że poprawka,
która rozwiąże ten problem pojawi się już niebawem.
No i teraz na rynku pojawił się co ciekawe
jeszcze jeden gracz o nazwie Bun, który również reprezentuje zupełnie inne
podejście i co więcej nie jest tylko Package Managerem, tylko całym narzędziem zdolnym
do bundlowania, transpilowania kodu, instalacji pakietów, konwertowania, obsługi
nawet w TypeScript, czy też w ogóle uruchamiania samego kodu JavaScript.
Aktualnie sam projekt znajduje się jeszcze
w becie nie nadającej się do wykorzystania produkcyjnego
aczkolwiek patrząc na statystyki lub też
nawet testowe wykorzystanie możliwości poprzez chociażby instalację pakietów z
pomocą Bun wydaje mi się, że warto obserwować ten projekt.
Tym bardziej, że jeżeli
wrócimy jeszcze do terminala i wykorzystamy właśnie Bun do instalacji
wszystkich zależności naszego projektu, to zwróć uwagę, że zajęło to 784 milisekundy
i to pomimo tego, że w przeciwieństwie do pnpm nie mieliśmy tutaj tej przewagi
dotyczącej linkowania pakietów, ponieważ jeżeli przejdziemy sobie teraz do katalogu Bun
to zobaczymy, że w Node.js faktycznie fizycznie znajdują się te pliki.
Tutaj nie ma mowy o linkowaniu czegoś co znajduje się w innym miejscu, tylko po
prostu te wszystkie zależności fizycznie znajdują się w tym konkretnie miejscu.
Co prawda trzeba tutaj podkreślić, że czasem Bun potrafi się zawiesić i taka
instalacja pakietów, tak jak w tym przypadku zajęła bardzo krótką chwilę,
tak w innych przypadkach po prostu
zatrzymuje się na jakimś etapie i nie chce skończyć.
Tymczasem jeżeli pójdziemy dalej, to
zapewne zdajesz sobie sprawę z tego, że istnieją jeszcze inne narzędzia typu
Package Manager do obsługi dodatkowych rozszerzeń dla systemów Linux oraz macOS
i analogicznie też dla Pythona oraz samego Linuxa.
I w tym przypadku mówimy o APT.
W każdym razie wszystkie te trzy narzędzia
oczywiście Package Manager dla JavaScriptu jest Twoim niezbędnikiem pracy.
Zawsze bierz tutaj pod uwagę fakt, w którym miejscu na Twoim dysku są
instalowane pakiety oraz w jakich konkretnie wersjach są instalowane.
O tym, w jaki sposób zarządzać sobie wersjami akurat w przypadku ekosystemu
JavaScriptu będziemy sobie jeszcze mówić w kolejnych lekcjach.
Natomiast teraz chciałbym tylko, aby było
dla Ciebie jasne, że Package Managerów mamy do dyspozycji przynajmniej kilka i
to, który wybierzesz zależy w dużej mierze już od Ciebie
natomiast ja chciałbym pokazać Ci, w jaki sposób zarządzać samymi zależnościami
projektu, niezależnie od tego, z jakich narzędzi będziesz korzystać.
Teraz dzięki za uwagę i do usłyszenia za chwilę.