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.
Tak jak to podkreślałem na każdym kroku
mój edytor kodu i zasadniczo większość narzędzi, z których korzystam
skonfigurowana jest w taki sposób, aby wyświetlała mi minimum niezbędnych
informacji do tego, aby móc wykonać konkretne zadanie.
W przypadku edytora kodu działa to tak, że praktycznie przez większość czasu jestem
po prostu skupiony na samej zawartości pliku.
Jedyną istotną dla mnie informacją poza samym kodem jest nazwa pliku oraz
ewentualnie informacja o kolejnych otwartych plikach.
Poza tym spotkałem się również z
konfiguracjami, które wyłączały numerowanie linii.
W mojej opinii jednak jest to zły pomysł
ze względu na to, że wielokrotnie chociażby proces samej aplikacji często
informuje nas o tym, w której linii wystąpił jakiś błąd.
Z tego powodu wyłączenie tej informacji moim zdaniem jest dość kiepskim pomysłem.
Cała reszta informacji, takich jak dodatkowe panele, sidebary boczne i np.
okna wbudowanego terminala są moim zdaniem zbędne na czas pisania kodu.
Przykładowo nawet teraz, w momencie gdy włączyłem jeden i drugi zwrócił uwagę jak
mało przestrzeni roboczej mam tutaj na sam kod.
Oczywiście w tym momencie sam font jest
tutaj odpowiednio powiększony, ponieważ w trakcie nagrywania zależy mi na tym, aby
dało się oglądać te materiały również na telefonie.
Ale nawet pomimo tego, gdybyśmy mieli tutaj mniejszy font, to marnujemy mnóstwo
przestrzeni na informacje, które w danej chwili nie są nam potrzebne.
Dodatkowo bardzo negatywnie wpływa to na samo skupienie
w momencie, gdy widzimy jak nam coś miga,
zmienia się i zasadniczo tylko odwraca uwagę.
I teraz przykładowo w momencie gdy
chociażby instalujemy IntelliJ to widzimy następujący widok.
Ten akurat pochodzi z Windowsa, natomiast na Macu wygląda to całkiem podobnie.
Mamy tutaj zestaw różnego rodzaju folderów, przycisków, opcji, paneli
bocznych i dodatkowych informacji o projekcie, które nie wnoszą absolutnie
żadnej wartości, o ile w danej chwili nie jest to nam potrzebne.
Z tego powodu za każdym razem, gdy otwieram edytor, który nie jest
skonfigurowany, zwykle klikam prawym przyciskiem myszy na dany panel bądź
sidebar i po prostu albo go ukrywam, albo w ogóle usuwam z panelu.
W niektórych sytuacjach wyświetlają się różnego rodzaju ikonki i dodatkowe menu i
w takiej sytuacji, aby je wyłączyć zwykle musimy przejść do ustawień wyglądu i tutaj
w ustawieniach powyłączać sobie panele, których w danej chwili nie potrzebujemy.
Ostatecznie teraz nie jestem w stanie zresetować moich ustawień po to, aby
przeprowadzić przez cały proces konfiguracji edytora,
natomiast te dwie wskazówki powinny w zupełności Ci wystarczyć do tego, aby
oczywiście w momencie, gdy masz taką ochotę, dostosować to do swoich potrzeb.
Jedynym wyzwaniem, które może się pojawić
jest odnalezienie konkretnego elementu, ponieważ ich nazwy nie są oczywiste.
Zwykle w takiej sytuacji po prostu opisywałem dany panel bądź zestaw
przycisków w Googlu, a następnie dopisałem frazę W jaki sposób można to wyłączyć?
oczywiście po angielsku
i w rezultacie zwykle otrzymywałem odpowiedź.
I tutaj analogiczną konfigurację można przeprowadzić również w Visual Studio Code więc
jeżeli Cię to interesuje, to polecam
zajrzeć na tego bloga, gdzie Caleb opisuje bardzo szczegółowo swój proces
konfigurowania edytora i dostosowywania go do swoich potrzeb.
I właśnie Caleb jest przykładem osoby,
która jak widzisz wyłącza tutaj numerowanie linii
więc uważam, że nie warto stosować
wszystkich jego wskazówki. Zresztą to samo ma zastosowanie do mnie.
Co więcej, nawet jeżeli nie interesuje Cię
konfiguracja w Visual Studio Code i pracujesz już w IntelliJ bądź jakiejś
innej aplikacji od JetBrains to i tak polecam zapoznać Ci się z tym
artykułem ze względu na to, że być może znajdziesz tutaj jakieś inspiracje np.
rozszerzeń, które również będzie można wykorzystać w innym edytorze kodu.
Podobnie też poza samymi rozszerzeniami warto zwrócić uwagę na różnego rodzaju
techniki i ustawienia, które stosuje Caleb ze względu na to, że jego optymalizacja
pracy moim zdaniem jest naprawdę na wysokim poziomie.
Tymczasem jeszcze zaznaczę w tym momencie jedną rzecz.
To, że panele są wyłączone, nie oznacza to tego, że nie jestem w stanie np.
łatwo po nie sięgnąć.
Część ze skrótów naturalnie pamiętam i szczerze mówiąc nie ma ich zbyt wiele, a
jednocześnie czasem zdarzają się sytuacje takie jak np.
breadcrumbs, w przypadku którego nie przepisałem żadnych skrótów
ale tak jak widzisz z pomocą palety
komend po prostu wyszukuję sobie tą opcję, a następnie przełączam ustawienie w
zależności od tego czy w danej chwili jest mi potrzebne.
Kolejnym sposobem, który sprawdza się w tej sytuacji niesamowicie jest oczywiście
Raycast, w przypadku którego mamy do dyspozycji rozszerzenie Search Menu Items, które
umożliwia nam przeszukiwanie wszystkich opcji z tego głównego panelu menu.
W rezultacie jestem w stanie niesamowicie
szybko sięgać po różne opcje, nawet jeżeli nie pamiętam skrótu klawiszowego.
Kolejnym elementem, na który warto zwrócić
uwagę jest sama kolorystyka oraz ogólnie styl samego interfejsu.
W moim przypadku jest to naturalnie Material Team i tutaj jeżeli chodzi o samą
kolorystykę to oczywiście zależy ona od własnych preferencji,
natomiast w momencie gdy będziesz ją wybierać pamiętaj tylko o tym, aby dobrać
ją w taki sposób, aby poszczególne elementy kodu były wyraźnie zaznaczone
kolorystycznie bądź w jakiejś innej wizualnej formie.
To samo tyczy się samego fontu i w moim
przypadku przez długi czas wykorzystywałem ten font operator mono,
natomiast aktualnie wykorzystuje Fira Code, który również sprawdza się
fenomenalnie i dodatkowo oferuje ligatury, które
wiele osób preferuje, natomiast ja osobiście nie mogę się do nich przekonać.
Tak czy inaczej pamiętaj o tym, że wszystkie elementy dostosowania Twojego
edytora raczej jest dobrze dopasować do własnych preferencji i swoich potrzeb
i z tego powodu nawet jeżeli ja pokazuję
Ci jakieś różne ustawienia, to oczywiście niekoniecznie musisz po nie sięgać.
Jednocześnie chciałbym jeszcze tylko
zwrócić uwagę na fakt, że możesz dostosować różne elementy, np.
podkreślania składni.
Przykładowo, jeżeli tutaj wyszukamy sobie
decorators, no to mamy tutaj ustawienie i akurat w tym momencie znajdujemy się w TypeScript,
więc musimy odnaleźć na liście decorator i zwróć uwagę, że jest on
zaznaczony innym kolorem niż ten domyślny w JavaScripcie.
Chodzi o to, że w tym momencie, akurat gdy pracuję, z NestJS, chcę mieć jasne
rozróżnienie tego, czym jest dekorator, a czym jest np.
nazwa metody.
W ten sposób nawet wizualnie szybko jestem w stanie objąć wzrokiem poszczególne
elementy kodu i to ułatwia nawigowanie po nim oraz samo zrozumienie.
Zatem jeżeli chodzi o sam wygląd edytora, można to sprowadzić do dwóch rzeczy.
Wyłączenia wszystkich zbędnych paneli oraz dostosowania motywu kolorystycznego i
fontu w taki sposób, aby nam służył i nie przeszkadzał w czytaniu kodu.
A jeżeli jeszcze dodatkowo uda nam się osiągnąć efekt, który po prostu nam się
podoba, to z pewnością dodatkowo na tym skorzystamy.
Kolejnym elementem, jaki bez wątpienia
trzeba poruszyć przy okazji konfiguracji edytorów i to zarówno mam tutaj na myśli
IntelliJ jak i SublimeText 3 to oczywiście lista rozszerzeń.
Tutaj muszę przyznać, że spotykałem się z różnymi osobami, które np.
instalują dziesiątki bądź nawet setki pluginów do swoich edytorów, z czego i tak
realnie wykorzystują tylko małą część z nich.
Jeżeli chodzi o mnie, preferuję raczej dokładnie odwrotne podejście polegające na
tym, że tak jak widzisz w moim przypadku jest zainstalowanych 17 wtyczek.
Są to naprawdę podstawowe wtyczki, takie
jak obsługa plików .env , wtyczki dotyczące w tym przypadku
Material Icons, czyli ikonek, które wyświetlane są tutaj,
następnie mamy plugin wspierający składnie Blade, ponieważ jeden z moich projektów
wykorzystuje Laravel i tam właśnie ten silnik szablonów jest wykorzystywany.
Następnie mamy wtyczkę, która umożliwia wykorzystanie Emmeta w zasadzie niemalże w
każdym pliku i jest to również niesamowicie przydatne, ponieważ
niejednokrotnie przyjdzie Ci pisać składnie HTML w plikach, które html
nie są. Kolejnym rozszerzeniem, które w tym momencie jest jak widzisz wyłączone
jest Gist Snippet, czyli zasadniczo jest to
proste rozszerzenie, które umożliwia szybkie tworzenie gistów.
Również bardzo mocno mi się przydaje, szczególnie w momencie, gdy potrzebuję
jakoś szybko podzielić się fragmentem kodu.
I teraz kolejny na liście jest GitHub Copilot, czyli nic innego jak sztuczna inteligencja
od Microsoftu, która pomaga nam w pisaniu kodu.
Tutaj samego Copilota wykorzystuję głównie do celów edukacyjnych oraz np.
przygotowywania jakichś pojedynczych fragmentów kodu
i właśnie samego Copilota nie wykorzystuję
raczej w projektach komercyjnych ze względu na to, że są różne wątpliwości na
temat sposobu przetwarzanych przez niego danych.
Idąc dalej mamy jeszcze wsparcie dla Handlebars oraz tutaj mamy Hugo i Go, ponieważ
również posiadam jeden projekt w tej technologii
i analogicznie też mamy jeszcze wsparcie dla Vue, Laravel, PHP i np.
Svelte. Tutaj jeszcze ponownie mamy Material
Design i jak widzisz jeszcze na liście pojawia się kilka rozszerzeń dla
konkretnych technologii oraz rozszerzenie Tabnine, które analogicznie jak GitHub Copilot,
aczkolwiek w znacząco mniejszym stopniu pomaga nam w pisaniu kodu.
No i teraz jeżeli chodzi o rozszerzenia, to jak widzisz nie stosuję tutaj niczego
dziwnego poza tym, co jest mi absolutnie niezbędne do pracy.
Ma to przede wszystkim wymiar taki, że rozszerzenia rozwijane przez niezależnych
developerów lubią sprawiać różnego rodzaju problemy.
Z tego powodu ograniczam ich wykorzystanie do niezbędnego minimum, ponieważ nie chcę
dokładać sobie pracy związanej z ich konfiguracją, crashami aktualizacjami i
wieloma różnymi innymi konfliktami, które można z łatwością spotkać.
Jednocześnie nie zamykam się tutaj na instalację jakiś dodatkowych wtyczek oraz
raz na jakiś czas przeglądam sobie artykuły np.
takie jak ten, w ramach których można spotkać różnego rodzaju techniki i
praktyki, o których wcześniej po prostu nie słyszałem, a jednocześnie mogą
stanowić dodatkowy element mojego stylu pracy.
No i teraz myślę, że warto jeszcze rzucić
okiem na Sublime Text, w przypadku którego przede wszystkim należy zainstalować
Package Control do tego, aby móc instalować nowe wtyczki i w moim przypadku są to
AdvancedNewFile ułatwia tworzenie plików
AutoFileName ułatwiająca wpisywanie nazw plików np.
w momencie gdy je importujemy do kodu.
Poza nią naturalnie mamy tutaj Emmet ESLint oraz Formatter.
W przypadku Formattera pokazywałem Ci jak działa w przypadku np.
obiektów JSON, ale oczywiście również sprawdza się w pozostałych przypadkach.
JavaScript Snippets to po prostu zestaw różnego
rodzaju krótkich Snippetów, które ułatwiają pisanie kodu np.
CL oraz tab ułatwia wpisanie console.log.
Idąc tutaj dalej mamy ponownie Materialize, czyli wtyczkę umożliwiającą
dostosowanie wyglądu oraz oczywiście Package Control i wsparcie dla np.
PHP oraz dodatkową wtyczkę do pracy z obiektami JSON.
Następną jest rekomendowana niemal wszędzie wtyczka rozszerzająca możliwości
Sidebar, a konkretnie menu kontekstowego, które się tam znajduje
i w zasadzie jest to już ostatnia na mojej liście.
Zatem ponownie, jak widzisz, mamy tutaj
przykład ograniczenia wtyczek praktycznie do minimum, a jednocześnie mam zachowaną
tutaj tą maksymalną użyteczność, na której naprawdę bardzo mi zależy.
No i tutaj jeszcze w kontekście edytorów chciałbym poruszyć temat ich CLI, czyli
zasadniczo komendy subl oraz idea, w przypadku których możemy podać ścieżkę do
pliku lub katalogu, aby otworzyć je wewnątrz takiego edytora.
Przykładowo, jeżeli przejdziemy sobie do
katalogu demo, a następnie podam tutaj polecenie subl.
No to tak jak widzisz, natychmiast
otworzył się edytor na katalogu, który w danej chwili wybrałem.
Analogicznie też mam tutaj makra Keyboard Maestro
w przypadku których wystarczy zaznaczyć plik lub katalog, a następnie
uruchomić tutaj skrypt Shell, który posługuje się dokładnie tym poleceniem, a następnie
przekazuje tutaj zmienną aktualnie zaznaczonego pliku.
Dodam tylko, że jeżeli chcesz
skonfigurować coś takiego u siebie, to byłaby potrzeba wykorzystania tutaj akcji
umożliwiającej iterowanie po zaznaczeniu plików z Findera, ponieważ w moim
przypadku odbywa się to na nieco innej zasadzie.
W każdym razie w takiej sytuacji chodzi po
prostu o to, że mielibyśmy tutaj zmienną, w której zapisana jest ścieżka do pliku, a
następnie te dwie akcje wykonali byśmy dokładnie tutaj.
Efekt byłby taki, że w momencie uruchomienia tej akcji aktualnie
zaznaczony plik w Finderze zostanie uruchomiony
w tym przypadku w IntelliJ.
W przypadku Sublime Text wygląda to dokładnie tak samo.
Teraz nie będę skupiał się tutaj na wykorzystaniu Keyboard Maestro, aczkolwiek
miej na uwadze sam fakt możliwości uruchomienia tych aplikacji np.
skrótem klawiszowym i tym samym ułatwienia sobie rozpoczęcia pracy nad projektem.
Teraz jeżeli chodzi o samą konfiguracja edytorów, to byłoby już na tyle,
dziękuję Ci za uwagę i zapraszam do kolejnej lekcji.