我想使用$>npm start
,並使用「nodemon」進行開發,使用「nodemon」進行生產。我不能把條件邏輯放在我的package.json文件中,那麼最好如何實現?Node.js - nodemon vs node - development vs production
回答
nodemon實際讀取package.start
值,所以如果你只是設置start
屬性爲你」 d在生產中,如node app.js
,然後運行nodemon而沒有任何參數,它將與package.start
一起運行並重新啓動,期待開發。
儘管這在全局使用nodemon時很有用,但我認爲它對於想要鍵入'npm start'並讓它在'dev'環境中運行nodemon並且在'production'時運行節點沒有幫助'。下面的條件if語句的答案似乎是實現這一目標的唯一方法。 – 2016-08-29 19:17:40
@AdamReis:有時候一個問題會問如何做錯事。這就是所謂的XY問題,它不僅可以接受,而且可以鼓勵SO以不使用X的方式實現Y的正確方式。在這種情況下,OP可能不知道nodemon實際上是如何工作的,沒有必要。因此,如果有更好的方法去做事情,就沒有必要完成字面問題。 – slebetman 2017-01-04 16:39:58
您應該能夠將NPM的啓動用作常規shell腳本。
"scripts": {
"start": "if [$NODE_ENV == 'production']; then node app.js; else nodemon app.js; fi"
}
現在開始您的服務器生產
$ NODE_ENV='production' npm start
或發展
$ NODE_ENV='development' npm start
很酷 - 當我試着在package.json文件中嵌入shell腳本時,出現錯誤,但看起來像後面的命令將有所幫助。我正在使用heroku,所以我相信我必須設置env變量在heroku – 2014-11-14 08:14:17
這不適用於Windows,但它可能適用於Mac/Unix – 2014-12-20 00:32:31
這應該是公認的答案。 – jmiraglia 2016-11-28 19:40:10
我很喜歡丹尼爾的解決方案,但認爲這將是更清潔把它放在一個單獨的文件startup.sh
:
#!/bin/sh
if [ $NODE_ENV = "production" ]; then
node src/index.js;
else
nodemon src/index.js;
fi
然後,只需更改的package.json閱讀:
"scripts": {
"start": ". ./startup.sh"
},
- 1. Node-PerfectAPI vs Restify.js vs ExpressJS vs Node-APIServer
- 2. webpack-dev-server vs nodemon
- 3. Dualcore vs Quadcore for Development
- 4. Mercurial Commits vs Actual Production圖表
- 5. php artisan vs apache/nginx for production
- 6. factory_girl vs fixtures for development data(Rails)
- 7. DynamoDB Staging/Production/Development版本
- 8. Forever vs. Node-Windows
- 9. RxJS vs rx-node
- 10. Node.js res.send VS res.end VS return res.end
- 11. node.js - res.end vs fs.createWriteStream
- 12. Node.JS(Typescript vs Javascript)vs Ruby On Rails
- 13. Amazon SES vs Node Mailer
- 14. node命令vs app.listen()
- 15. zeroMQ VS的node.js VS beanstalkd VS扭曲
- 16. 調試和部署Javascript:localhost vs production
- 17. Phalcon php vs node.js
- 18. Node.js buf.toString vs String.fromCharCode
- 19. CouchApp vs Node.js
- 20. Node.js Express vs. Flatiron
- 21. Deepstream.io。 Node Api vs NodeJS SDK
- 22. Node vs Nodejs版本不同
- 23. 的Node.js dns.resolve()VS dns.lookup()
- 24. node.js async.js nextTick vs setImmediate
- 25. 的Node.js VS HttpAsync(asp.net)
- 26. node.js的util.inherits VS新
- 27. fs.watch vs setInterval in node.js
- 28. Node js npm httpp-proxy vs http-proxy
- 29. gulp nodemon + node =錯誤:listen EADDRINUSE
- 30. node.js requestjs失敗vs curl
*井當然你可以在package.json腳本行中放置條件邏輯。這些腳本字符串值由bash簡單解釋。 – 2017-06-20 07:49:25