Chciałbym użyć $>npm start
i używać go "nodemon" do programowania i "węzła" do produkcji. Nie mogę umieścić logiki warunkowej w pliku package.json, więc jak najlepiej to osiągnąć?Node.js - nodemon vs node - development a production
Odpowiedz
nodemon faktycznie odczytuje wartość package.start
, więc jeśli tylko ustawić właściwość start
do tego, co” d w produkcji, np. node app.js
, a następnie uruchom nodemon bez żadnych argumentów, uruchomi się z package.start
i uruchomi ponownie, gdy będziesz " d oczekiwać w rozwoju.
Chociaż jest to użyteczne, gdy używasz globalnie nodemon, myślę, że nie pomoże to w przypadku, gdy chcesz wpisać 'npm start' i uruchomić go nodemon, jeśli znajdujesz się w środowisku' dev' i węźle w 'produkcji '. Poniższa odpowiedź z warunkową instrukcją if wydaje się być jedyną drogą do osiągnięcia tego. –
@AdamReis: Somtimes pytanie, jak zrobić coś złego. Jest to znane jako problem XY i jest ono nie tylko akceptowalne, ale również zalecane dla SO, aby odpowiedzieć prawidłowym sposobem osiągnięcia Y bez wykonywania X. W tym przypadku OP może nie wiedzieć, jak nodemon faktycznie działa, i dlatego prosi o coś, co to nie jest konieczne. Więc nie jest konieczne, aby dosięgnąć dosłowne pytanie, czy istnieje lepszy sposób robienia rzeczy. – slebetman
Powinieneś być w stanie użyć startu NPM jako zwykłego skryptu powłoki.
"scripts": {
"start": "if [$NODE_ENV == 'production']; then node app.js; else nodemon app.js; fi"
}
teraz, aby rozpocząć swój serwer do produkcji
$ NODE_ENV='production' npm start
lub rozwoju
$ NODE_ENV='development' npm start
fajnie - kiedy wypróbowałem tylko skrypt powłoki osadzony w pliku package.json, dostałem błąd, ale wygląda na to, że komendy po tym pomogą. używam heroku, więc uważam, że muszę ustawić zmienną env na heroku –
to nie działa w systemie Windows, ale prawdopodobnie działa na Mac/Unix –
To powinna być zaakceptowana odpowiedź. – jmiraglia
lubiłem rozwiązanie Daniela, ale pomyślałem, że byłoby jeszcze czystsze, aby umieścić go w osobnym pliku startup.sh
:
#!/bin/sh
if [ $NODE_ENV = "production" ]; then
node src/index.js;
else
nodemon src/index.js;
fi
Następnie wystarczy zmienić package.json czytać:
"scripts": {
"start": ". ./startup.sh"
},
- 1. Node.JS Development na iOS?
- 2. Node-PerfectAPI vs Restify.js kontra ExpressJS vs Node-APIServer
- 3. npm start vs node app.js
- 4. Łańcuchy połączeń Live vs Development
- 5. Jak używać nodemon z JSX?
- 6. Xcode 9 Server exportArchive: exportOptionsPlist błąd dla klucza "iCloudContainerEnvironment": oczekiwany jeden z {Development, Production}
- 7. Forever + Nodemon działa razem
- 8. Workflow In Production Code
- 9. Nodemon - wyłączenie plików
- 10. Node.js sync vs. async
- 11. node.js: socket.io vs express.static
- 12. Różnica między używaniem metody getConnection() a używaniem puli bezpośrednio w pliku node.js z modułem node-mysql?
- 13. jak zrobić linting za pomocą nodemon?
- 14. Jak monitorować dowiązane moduły za pomocą Nodemon?
- 15. Zadzwoń do biblioteki C++ z Node.js (Węzeł addons/node-ffi)
- 16. Node.js + Express: Routes vs controller
- 17. Kod VS + Debugger dla Chrome node.js
- 18. Konsola Production Rails nie uruchomi się
- 19. Node-waf: nie znaleziono
- 20. Na czym polega problem "węzeł", ale "nodemon" nie działa na Windows 7 64-bit w pliku node.js?
- 21. http.createserver vs net.createserver in node.js
- 22. Od Web Development do Android Development
- 23. Różnica między socket.io a node.js
- 24. Cloudkit JS && Node JS
- 25. Node.js - Auto Refresh In Dev
- 26. Node.js do Node.js komunikacja
- 27. Co to jest node-gyp
- 28. Node-webkit wykonuje zewnętrzne polecenie?
- 29. 'stwierdzenie -A X' vs "stwierdzenie -A X =()
- 30. Sony Bravia App development
* dołek Oczywiście możesz umieścić logikę warunkową w liniach skryptów package.json. Te wartości łańcuchów skryptów są proste interpretowane przez bash. –