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.
Myślę, że taką jedną z lepszych technik,
które można wykorzystywać od czasu do czasu jest przeglądanie npm od GitHuba w
poszukiwaniu najbardziej docenianych projektów.
W związku z tym, że ich kod źródłowy jest
otwarty, możemy pooglądać sobie różnego rodzaju dobre techniki dotyczące albo
konfiguracji samego projektu, albo w tym przypadku przyjrzymy się plikowi package.json
I właśnie to ten plik będzie bohaterem tej lekcji,
ze względu na to, że stanowi on serce aplikacji tworzonej z pomocą JavaScriptu.
Pomimo tego, że jego obecność może być utożsamiana bezpośrednio z
pakietami NPM, tak jednocześnie w naszym projekcie również musimy go posiadać ze
względu na jego dodatkowe funkcje, o których zaraz powiem.
W tym momencie zakładam, że jego podstawowa struktura jest Ci doskonale
znana i zresztą nie ma co tu tłumaczyć ze względu na to, że ewentualnie może nas
interesować wersja projektu, ponieważ zwykle gdy rozwijamy je wyłącznie na nasze
potrzeby, to rzadko kiedy ktokolwiek zwraca na nią uwagę.
W praktyce jednak, jeżeli chodzi o
zależności projektu, jak również posiadają swoje wersje, sytuacja jest tutaj nieco
bardziej złożona i będziemy sobie o niej mówić w jednej z kolejnych lekcji.
Tymczasem całkiem użyteczny jest tutaj jeszcze link do repozytorium,
ze względu na to, że jeżeli informacja o nim się tutaj znajduje, to możemy takim
oto poleceniem przenieść się bezpośrednio do repozytorium tego projektu.
Jednocześnie to samo możemy zrobić poprzez słowo kluczowe bugs.
W ten sposób zostaniemy przeniesieni
również do repozytorium, ale do zakładki Issues.
Na podstawie mojego doświadczenia mogę powiedzieć, że zaglądanie w zakładkę Issues
jest ponownie czymś, co spotykam dość rzadko u innych osób, a jednocześnie dla
mnie zarówno otwarte, jak i zamknięte tickety są często źródłem wiedzy na temat
problemów, które spotykam z różnego rodzaju pakietami.
Po prostu zamiast wyszukiwać jakiś problem
w Googlu, wystarczy wyszukać go po słowie kluczowym w tym miejscu.
W ten sposób możemy zostać przeniesieni do wątku, gdzie ktoś bardzo dokładnie opisze
problem, który spotykamy i co więcej albo od razu zaproponuje rozwiązanie, albo
gdzieś w komentarzach ktoś nas na nie nakieruje.
Teraz wróćmy jeszcze na chwilę do Package.json.
Oczywiście tutaj są jeszcze pola, które możesz brać szczególnie
pod uwagę, gdy tworzysz paczkę, którą chcesz udostępniać publicznie,
natomiast na potrzeby wewnętrznie
tworzonych projektów raczej nie odgrywają one większej roli.
Jednocześnie jest tutaj jeszcze właściwość
private, którą możesz ustawić na true, aby nawet w sytuacji, gdy ktoś przypadkowo
będzie próbować opublikować swoją paczkę, to taka akcja zostanie tutaj zablokowana.
Poniżej mamy tutaj sekcję scripts.
I co do niej, to myślę, że jesteś w stanie
ją wykorzystywać i zresztą z całą pewnością już to robisz,
natomiast jednocześnie w kontekście tworzenia własnych skryptów i ich
organizacji jest kilka istotnych wątków i z tego powodu również będziemy sobie o nich
jeszcze rozmawiać w jednej z kolejnych lekcji.
To co musisz jednak wiedzieć na tym
etapie, to fakt, aby po prostu tworzyć te skrypty.
Po prostu bardzo często spotykam się z projektami,
czasem również zdarzało mi się takie
tworzyć samodzielnie, w przypadku których nie było zdefiniowanych żadnych skryptów,
ponieważ i tak można było wykonywać je ręcznie.
Rzecz w tym, że wracając do projektu po
kilku miesiącach bądź nawet kilku latach jego uruchomienie przestaje być oczywiste
w szczególności jeżeli mamy jakiś złożony proces budowania tego projektu.
W związku z tym bardzo dobrą praktyką,
której należy się tutaj trzymać jest po prostu zapisywanie skryptów od razu, gdy
je tworzymy i po prostu nie odkładanie na później.
Jeżeli chodzi o pozostałe elementy, to
czasem zdarzają się jakieś ustawienia, w tym przypadku dotyczące Prettiera, aczkolwiek
ja osobiście z takimi jeszcze się nie spotkałem,
no i oczywiście mamy zależności projektu, czyli w zasadzie wszystko co musi być
doinstalowane do naszego projektu aby był uruchomiony poprawnie.
I tutaj zwróć uwagę na pewien szczegół.
Mianowicie wszystkie wersje zależności, które są tutaj opisane i
wyjątkiem jest ta tutaj, są zainstalowane poprzez podanie ich konkretnej wersji.
W niektórych sytuacjach zdarza się tak, że
przed zapisem wersji mamy ^ bądź bądź symbol ~.
Oznacza to, że w momencie instalacji
danego pakietu możliwe będzie zwiększenie w tym przypadku wersji patcha, czyli tej
ostatniej cyfry, bądź też w przypadku gdyby była tutaj tylda to w momencie instalacji tego
projektu możliwe byłoby zaktualizowanie nawet wersji minor, która być może
wprowadza nawet bugi, bądź nawet jeżeli to nie są bugi, to po prostu jakieś dodatkowe
elementy przestają z jakiegoś powodu współpracować z naszym projektem.
Oczywiście teoretycznie tak się nie powinno wydarzyć, ale zapisywanie wersji
dokładnie takiej jakiej oczekujemy, żeby się zainstalowała jest po prostu znacznie
bezpieczniejsze i daje nam większą kontrolę nad naszym projektem.
Jednocześnie musisz pamiętać o tym, że
nawet jeżeli instalujesz jakiś pakiet i on sam zależy od innych, to oczywiście ich
twórcy nie muszą przestrzegać tej zasady i może się czasem okazać, że po prostu
dodatkowe stopnie zależności zostały gdzieś zaktualizowane po drodze.
Jak sobie z tym poradzić będziemy sobie
jeszcze mówić. No i tutaj jeszcze na dole mamy jeszcze dość
ważny element w postaci określenia, na jakiej wersji Node.js działa dana paczka.
W tym przypadku jest to wersja przynajmniej 12.9.0
ale ważniejszą informacją jest tutaj to, że
jeżeli spróbujemy uruchomić ten projekt na wersji mniejszej niż 12.9.0, to zostaniemy
o tym jasno poinformowani. W momencie, gdyby tej informacji nie było
zostaniemy zasypani błędami i będziemy
musieli tutaj na piechotę dojść do źródła problemu.
Idąc dalej mamy tutaj jeszcze dodatkowe
elementy konfiguracji i też specyficzne elementy dla tej konkretnej paczki
w związku z tym dla nas nie ma już tutaj raczej nic ciekawego.
Zatem podsumowując temat pliku Package.json warto upewnić się, że zawiera on
przynajmniej minimum informacji, które umożliwią nam uruchomienie tego projektu.
Tymi informacjami są przede wszystkim jego nazwa oraz wersja
w momencie, gdy publikujemy paczkę oraz
oczywiście skrypty umożliwiające uruchomienie projektu
no i oczywiście lista zależności.
No i tutaj jeżeli chodzi o tą główną listę zależności oraz listę zależności
deweloperskich domyślam się, że wiesz doskonale o co tutaj chodzi, ale w razie
potrzeby po prostu paczki developerskiej nie będą instalowane
w momencie gdy wykorzystamy polecenie npm install z flagą production.
Myślę, że na tym etapie w temacie wprowadzenia do manifestu projektu, czyli
dokładnie tego pliku myślę, że to byłoby już na tyle.
W związku z tym dziękuję Ci za uwagę i zapraszam do kolejnych materiałów.