npm install
instaluje zależności zależne w konfiguracji package.json.
npm run build
uruchamia skrypt „build” i tworzy skrypt, który uruchamia twoją aplikację - powiedzmy server.js
npm start
uruchamia skrypt „startowy”, który będzie miał postać „node server.js”
Trudno jest dokładnie określić, na czym polegał problem, ale zasadniczo patrząc na konfigurację skryptów, domyślam się, że „kompilacja” używa jakiegoś narzędzia do tworzenia aplikacji, podczas gdy „start” zakłada, że kompilacja została wykonana, ale kończy się niepowodzeniem, jeśli pliku tam nie ma.
Prawdopodobnie używasz bower lub grunt - wydaje mi się, że pamiętam, że typowa aplikacja gruntowna będzie miała zdefiniowane te skrypty, a także „czysty” skrypt do usunięcia ostatniej kompilacji.
Narzędzia do budowania zwykle tworzą plik w bin /, dist / lub build / folder, który następnie wywołuje skrypt startowy - np. „Node build / server.js”. Kiedy twój npm start
się nie powiedzie, to prawdopodobnie dlatego, że nazywa npm clean
lub podobna, aby usunąć ostatnią kompilację więc plik aplikacja nie jest obecny powodując npm zaczynają się niepowodzeniem.
Kod źródłowy npm build - aby poruszyć dyskusję w tym pytaniu - jest na githubie, abyś mógł się z nim zapoznać, jeśli chcesz. Jeśli uruchamiasz npm build
bezpośrednio i masz zdefiniowany skrypt "budujący", zakończy się on błędem z prośbą o wywołanie skryptu budującego, ponieważ npm run-script build
nie jest to to samo co npm run script
.
Nie jestem do końca pewien, co to npm build
robi, ale wydaje się, że jest to związane z postinstall i pakowaniem skryptów w zależności. Zakładam, że może to oznaczać, że wszelkie skrypty budujące CLI lub biblioteki natywne wymagane przez zależności są budowane dla określonego środowiska po pobraniu pakietu. To właśnie dlatego link i install wywołują ten skrypt.