/ / Jakie jest właściwe podejście do automatycznego wdrażania aplikacji Angular? (Angular Cli, ekspresowa, cyfrowa kropla oceanu) - kątowe, ekspresowe, rozmieszczanie, kątowe-cli, dev-to-production

Jakie jest właściwe podejście do automatycznego wdrażania aplikacji Angular? (Angular Cli, ekspresowa, cyfrowa kropla oceanu) - kątowe, ekspresowe, rozmieszczanie, kątowe-cli, dev-to-production

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ą pm2

2) 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 № 1

Wł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ć.