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.
W temacie naszego manifestu projektu i pliku package.json
musimy nieco dłużej zatrzymać się w temacie skryptów.
Mianowicie, tak jak już powiedziałem, powinniśmy zadbać o to, aby nasz projekt
był opatrzony w odpowiednie skrypty, które będą odpowiedzialne za wykonywanie różnego
rodzaju akcji związanych z budowaniem, uruchamianiem, testowaniem czy innymi
akcjami, które muszą zostać wykonane w ramach naszego projektu.
No i tutaj musisz wiedzieć, że w
niektórych sytuacjach te skrypty mogą być zdecydowanie bardziej zaawansowane niż
zwykłe uruchomienie aplikacji poleceniem node index js.
Z tego powodu jest teraz przynajmniej kilka wątków, o których musisz wiedzieć i
przynajmniej orientować się, w jaki sposób możesz je wykorzystywać.
Jeżeli uruchomimy ten projekt z pomocą Sublime Text, no to w tej chwili tak w
zasadzie nie mamy tutaj nic oprócz pliku Package.json.
I tutaj pierwszą rzeczą, o której musisz
wiedzieć jest możliwość wykonywania skryptów w odpowiedniej kolejności.
Przykładowo tutaj zapiszemy sobie skrypt, który powie, że jest pierwszy
natomiast drugi i tak uruchomi się przed nim.
Efekt końcowy będzie taki, że jeżeli uruchomimy sobie teraz polecenie npm run
first, no to w praktyce ten nasz skrypt niestety nie będzie pierwszy, ponieważ
przed nim wykona się ten, który posiada przedrostek pre.
Oznacza to, że analogicznie jesteśmy w
stanie wykorzystać tutaj przedrostek post i w takiej sytuacji, pomimo tego, że znowu
wykonujemy tylko jedno polecenie, tak naprawdę wykonamy dwa.
W ten sposób jesteśmy w stanie budować
skrypty, które zamiast odwoływać się do siebie np.
w taki sposób, nadal będą w stanie wykonywać się w odpowiedniej kolejności.
Ostatecznie jednak, jeżeli zmienimy tutaj
nazwę na secont i tutaj również, no to rezultat końcowy będzie dokładnie
taki sam, z tą różnicą, że skrypt secont w tym przypadku wykona się jako drugi
i nie ma w tym nic szczególnego, bo po
prostu został zapisany w takiej kolejności.
Jednocześnie tutaj jeszcze istnieje
możliwość przekazania do niego dodatkowych argumentów.
Na przykład jeżeli zrobilibyśmy teraz tak,
czyli przekazujemy tutaj zmienną o wartości
Adam, no to jesteśmy w stanie odwołać się do niej poprzez $ a następnie npm
config oraz nazwę tej zmiennej w tym przypadku name.
Tutaj ponownie, jeżeli wrócimy do naszego terminala i uruchomimy nasze polecenie, no to
w rezultacie ponownie wykonał się pierwszy skrypt, a następnie do drugiego została
przekazana wartość Adam i została wyświetlona bezpośrednio w komunikacie.
I teraz jeszcze w tym momencie możemy
analogicznie posługiwać się zmiennymi, z tą różnicą, że zamiast wykorzystywać tutaj
npm config name możemy wykorzystać npm package config name.
W takiej sytuacji wartość zostanie odczytania z właściwości config,
w przypadku której
również możemy zapisać klucz name wskazujący na moje imię.
Jeżeli teraz ponownie uruchomimy sobie ten
skrypt, efekt końcowy będzie taki sam, z tą różnicą jednak, że wartość nie została
odczytana z pierwszego skryptu, tylko bezpośrednio z konfiguracji Package.json.
Efekt widać na załączonym obrazku.
Ostatnim wątkiem w tej lekcji, który
chciałbym poruszyć jest temat zmiennych środowiskowych.
Jeżeli teraz utworzymy sobie plik .env to jak wiesz wewnątrz niego jesteśmy w
stanie przechowywać różnego rodzaju zmienne np.
numer portu, na którym działa nasza aplikacja.
Jeżeli jednak chcielibyśmy przykładowo
utworzyć plik index.js, który będzie sercem naszej aplikacji, a następnie tutaj
spróbujemy odwołać się do tej zmiennej poprzez process.env.port
no to w takiej sytuacji, jeżeli będziemy chcieli uruchomić naszą aplikację,
niestety wartość ta nie zostanie poprawnie odczytana.
Jeżeli masz jakiekolwiek doświadczenie z Node.js to prawdopodobnie znasz
paczkę .env, którą można podłączyć do naszej aplikacji.
Jednocześnie jest dla niej bardzo dobra
alternatywa w postaci env-cmd, którą możemy teraz zainstalować, w
przypadku której mamy znacznie większe możliwości kontroli nad naszymi plikami ze
zmiennymi środowiskowymi, a do jej wykorzystania jedyne co potrzebujemy
zrobić, to po prostu poprzedzić nasz skrypt następującym poleceniem.
Jeżeli teraz ponownie uruchomię moją
aplikację, no to jak się pewnie domyślasz będziemy mieć tu wartość naszego portu.
I teraz jeżeli chodzi o env-cmd, bardzo
istotną kwestią, którą on tutaj rozwiązuje jest problem dotyczący Windowsa.
Otóż bardzo często zdarza mi się, gdy pracuję z osobami pracującymi na
Windowsie, że projekt w ogóle nie chce im się uruchomić właśnie ze względu na to, że
pliki środowiskowe nie są poprawnie odczytywane.
W przypadku env-cmd o takich problemach nie ma mowy.
W temacie kilku takich praktycznych
wskazówek dotyczących pisania skryptów to by było na tyle.
Mam nadzieję, że okazały się dla Ciebie przydatne.
A jeżeli zastanawiasz się w jaki sposób w
ogóle możesz je wykorzystywać poza oczywiście takim ręcznym uruchamianiem
tych skryptów, no to za jakiś czas będziemy zajmować się publikacją naszej aplikacji
na serwerze produkcyjnym i tam będziemy wykorzystywać procesy automatyzacji całego
uruchomienia i deploymentu naszej aplikacji na serwerze produkcyjnym
i w takiej sytuacji umiejętność pisania skryptów okaże się bardzo pomocna.
Co więcej, w tym temacie nie powiedziałem
jeszcze swojego ostatniego słowa, więc zapraszam Cię do
kolejnej lekcji.