Rozwijam aplikację Angular z Angular Cli. Również za pomocą ekspresowej aplikacji jako serwera zaplecza. Mam repozytorium BitBucket i serwer produkcyjny na dropie DigitalOcean z Ubuntu 16.04 Tak więc struktura mojego folderu projektu jest dość prosta:
- src - angular app sources
- server - express app
Kiedy tworzę kompilację produkcyjną, Angular Cli kompiluje wszystkie pliki server/public
folder (zastąpiłem domyślny dist
jako outDir in angle-cli.json)
Widzę tutaj dwa sposoby wdrażania mojej aplikacji na serwer produkcyjny:
1) Po prostu przenieś cały projekt do zdalnego repozytorium na BitBucket (z pominięciem
server/public
- w przeciwnym razie nie jest to najlepsza praktyka, prawda?), a następnie sklonuj go na mojej kropli, zainstaluj wszystkie zależności, utwórz produkcję i uruchom ją za pomocą pm22) Utwórz kompilację produkcji na moim komputerze lokalnym, a następnie skopiuj tylko
server
folder do dropletu, instaluj tylko zależności produkcyjne potrzebne do ekspresowej aplikacji i uruchomić ją przez pm2
Chcę uczynić ten proces łatwym i automatycznym przy tworzeniu skryptu lub czegoś podobnego.
Tak, rozumiem, że obie możliwości są możliwe, ale ponieważ jestem nowy w rozwoju SPA, nie mam żadnego doświadczenia i może nie mogę zobaczyć jakichś ukrytych zalet i wad obu sposobów.
Na razie widzę drugi jako bardziej poprawnyponieważ nie będzie żadnych dodatkowych plików, zainstalowanych zależności i procesów na moim serwerze produkcyjnym, tylko te, które są potrzebne do działania aplikacji, ale nie znalazłem żadnego tutoriala z takim podejściem.
Jaka byłaby najlepsza praktyka?
Odpowiedzi:
0 dla odpowiedzi № 1Właściwe podejście: zależy. Właściwe podejście zależy od konfiguracji / stosu. Podejścia, które opisałeś, działają, ale nie są zautomatyzowane, ponieważ wciąż kopiujesz pliki do swojej kropelki ręcznie.
Lepszym rozwiązaniem byłoby użycie narzędzia do automatyzacji, takiego jak Travis CI lub CircleCI. Na przykład używam Travis do automatycznego wdrożenia mojej osobistej witryny. Mój .travis.yml
plik można znaleźć tutaj.
Co to jest:
- Uruchom skrypt test npm.
- Pamięć podręczna
node_modules
, dla szybszych czasów budowy. - Wykonuje krok wdrożenia, jeśli zatwierdzenie to oznaczono jako zatwierdzenie.
- Przed wdrożeniem tworzy projekt do produkcji.
Teraz używam Hosting Firebase ponieważ moja prywatna strona internetowa jest tylko statyczną witryną zbudowaną Hugo. Będziesz musiał zaplanować swoje kroki, aby zamknąć proces ponownego wdrażania do swojej kropli, uruchamiając pm2 i cokolwiek innego musi się udać.