2.4 KiB
Wspólnie uczynijmy Bruno lepszym !!
Cieszymy się, że chcesz udoskonalić Bruno. Poniżej znajdziesz wskazówki, jak rozpocząć pracę z Bruno na Twoim komputerze.
Stos Technologiczny
Bruno jest zbudowane przy użyciu Next.js i React. Używamy również electron do stworzenia wersji desktopowej (która obsługuje lokalne kolekcje)
Biblioteki, których używamy
- CSS - Tailwind
- Edytory Kodu - Codemirror
- Zarządzanie Stanem - Redux
- Ikony - Tabler Icons
- Formularze - formik
- Walidacja Schematu - Yup
- Klient Zapytań - axios
- Obserwator Systemu Plików - chokidar
Zależności
Będziesz potrzebować Node v20.x lub najnowszej wersji LTS oraz npm 8.x. W projekcie używamy npm workspaces
Rozwój
Bruno jest rozwijane jako aplikacja desktopowa. Musisz załadować aplikację, uruchamiając aplikację Next.js w jednym terminalu, a następnie uruchomić aplikację electron w innym terminalu.
Zależności
- NodeJS v18
Lokalny Rozwój
# użyj wersji nodejs 18
nvm use
# zainstaluj zależności
npm i --legacy-peer-deps
# zbuduj dokumentację graphql
npm run build:graphql-docs
# zbuduj zapytanie bruno
npm run build:bruno-query
# uruchom aplikację next (terminal 1)
npm run dev:web
# uruchom aplikację electron (terminal 2)
npm run dev:electron
Rozwiązywanie Problemów
Możesz napotkać błąd Unsupported platform
podczas uruchamiania npm install
. Aby to naprawić, będziesz musiał usunąć node_modules
i package-lock.json
, a następnie uruchomić npm install
. Powinno to zainstalować wszystkie niezbędne pakiety potrzebne do uruchomienia aplikacji.
# Usuń node_modules w podkatalogach
find ./ -type d -name "node_modules" -print0 | while read -d $'\0' dir; do
rm -rf "$dir"
done
# Usuń package-lock w podkatalogach
find . -type f -name "package-lock.json" -delete
Testowanie
# bruno-schema
npm test --workspace=packages/bruno-schema
# bruno-lang
npm test --workspace=packages/bruno-lang
Tworzenie Pull Request
- Prosimy, aby PR były małe i skoncentrowane na jednej rzeczy
- Prosimy przestrzegać formatu tworzenia gałęzi
- feature/[nazwa funkcji]: Ta gałąź powinna zawierać zmiany dotyczące konkretnej funkcji
- Przykład: feature/dark-mode
- bugfix/[nazwa błędu]: Ta gałąź powinna zawierać tylko poprawki dla konkretnego błędu
- Przykład bugfix/bug-1
- feature/[nazwa funkcji]: Ta gałąź powinna zawierać zmiany dotyczące konkretnej funkcji