Jaka jest najlepsza praktyka do wdrażania aplikacji NodeJS?

1) Bezpośrednio przenoszenie folderów Node_modules z serwera programistycznego do serwera produkcyjnego, dzięki czemu można utworzyć nasze same lokalne środowisko również w produkcji. Jakiekolwiek zmiany wprowadzone do dowolnego z modułów węzłów zdalnie nie wpłyną na nasz kod.

2) Uruchom polecenie npm install w serwerze produkcyjnym za pomocą package.json. Tutaj problem jest problem, jakiekolwiek zmiany w modułach węzłów wpłyną na nasz kod. W obliczu pewnych problemów z modułem zwrotnym (Link emisji).

Czy ktoś może mi pomóc?

19
Sanjay Kumar N S 5 czerwiec 2018, 09:18

5 odpowiedzi

Najlepsza odpowiedź

Uruchamianie npm install w serwerie produkcyjnym nie można wykonać w pewnym scenariuszu (brak narzędzi do kompilowania, ograniczony dostęp do Internetu itp , pamięć i przepustowość.

Należy uruchomić npm install --production na maszynie z tymi samymi bibliotekami i wersją węzła serwera produkcyjnego, kompresuje Node_modules i wdrażanie na serwerze produkcyjnym. Powinieneś również przechowywać plik package-lock.json do wersji Pinpoint.

Takie podejście umożliwia również budowanie / przetestowanie kodu za pomocą pakietów rozwojowych, a następnie przycinanie node_modules przed rzeczywistym wdrożeniem.

17
DBellavista 5 czerwiec 2018, 07:56
  • Przenoszenie folderu node_modules jest nadmiernie przesunięty.
  • Uruchamianie npm install może złamać zależności wersji.
  • Najlepszym podejściem jest npm ci. Używa pliku package_lock i instaluje wymagane zależności bez modyfikacji wersji. NPM CI przeznaczony do ciągłych projektów integracyjnych. Link
2
Raj Sahoo 6 luty 2019, 07:30

Domyślam się, że pytam o to pytanie, nie rozumiesz punktu pliku package.json.

Plik package.json jest wyraźnie przeznaczony do tego celu (że i przesyłanie do rejestru NPM), transfer pakietu węzła bez konieczności przenoszenia znacznej liczby zależności wraz z nim.

Pójdę tak daleko, aby powiedzieć, że ktoś powinien nigdy Ręcznie przesuń katalog node_modules w ogóle.

Zdecydowanie użyj polecenia npm install na serwerze produkcyjnym, jest to właściwy sposób robienia tego. Aby uniknąć zmian w katalogu {X1}} w porównaniu do lokalnego środowiska, użyj pliku package lock. To powinno pomóc w minimalizacji zmian w kodzie źródłowym w node_modules.

Mam na myśli zły zamiar, mówiąc to

1
harryparkdotio 5 czerwiec 2018, 06:34

Zdecydowanie npm install. Ale nie powinieneś tego robić własną ręką, jeśli chodzi o wdrażanie aplikacji.

Użyj narzędzia do tego jak PM2.

Jeśli chodzi o twoje obawy dotyczące zmian w pakietach, krótka odpowiedź to package-lock.json.

1
tniezurawski 5 czerwiec 2018, 11:02

Jestem deweloperem ASP.NET, ale ostatnio zacząłem pracować z aplikacjami Node.js. Dla mnie był to jeden z wymienionych wyzwań, które wspomniałeś, aby przesunąć folder node_modules do produkcji. Zamiast przesunąć cały folder do produkcji lub tylko uruchomienie polecenia npm install na serwerze produkcyjnym, zorientowałem się i wypróbowałem sposób łączenia moich aplikacji node.js.Js przy użyciu Webpack do pojedynczych / wielu wiązek i Właśnie pozbyłem się bałaganu zarządzania {x3}} folder. Odbiera tylko wymagane pakiety Node_modules, które są używane / odnoszące w mojej aplikacji i wiązki w jednym pliku wraz z moim kodem aplikacji i wdrażam ten pojedynczy plik do produkcji bez przenoszenia folderu node_modules.

Odkryłem, że podejście przydatne w moim przypadku, ale sugeruję mi, czy nie jest to właściwy sposób na wydajność aplikacji lub jeśli właśnie minusy tego podejścia.

1
Ali Shahzad 1 grudzień 2018, 14:40