是否可以在 Express 应用程序中使用一个 npm 脚本启动 nodemon 和浏览器同步?
Posted
技术标签:
【中文标题】是否可以在 Express 应用程序中使用一个 npm 脚本启动 nodemon 和浏览器同步?【英文标题】:Is it possible to start nodemon and browser-sync with one npm script in an Express app? 【发布时间】:2021-02-08 02:37:28 【问题描述】:在我的 Express 应用程序中,我同时使用 nodemon
和 browser-sync
。我的package.json
中有这些 npm 脚本:
"scripts":
"start": "node ./bin/www",
"start:nodemon": "nodemon ./bin/www",
"start:debug": "SET DEBUG=img:* & npm run start:nodemon",
"start:browser-sync": " browser-sync start --proxy 'localhost:3000' --files 'public,views'",
"test": "npm run start:debug & npm run start:browser-sync"
目前,我打开两个 cmd
窗口,在第一个窗口中运行 start:debug
,在另一个窗口中运行 start:browser-sync
。一切正常。
我想我可以像在我的test
脚本中那样组合这些脚本并运行它们,但是,它不能那样工作。看起来它以nodemon
开头并忽略browser-sync
。那么,我能否以某种方式将这两个脚本与一个 npm 脚本一起启动,或者这在技术上是不可能的,我必须运行两个 cmds
才能使其工作?谢谢。
【问题讨论】:
【参考方案1】:这是因为命令之间的&
在 Bash 中意味着“在后台执行第一个命令,而在前台执行第二个命令”,而在 Windows cmd 中,这意味着“在第一个命令完成后执行第二个命令”。
要以独立于平台的方式并行运行命令,您可以使用例如npm-run-all:
"scripts":
"start": "node ./bin/www",
"start:nodemon": "nodemon ./bin/www",
"start:debug": "SET DEBUG=img:* & npm run start:nodemon",
"start:browser-sync": " browser-sync start --proxy 'localhost:3000' --files 'public,views'",
"test": "run-p start:debug start:browser-sync"
或者你可以试试run-z:
"scripts":
"start": "node ./bin/www",
"start:nodemon": "nodemon ./bin/www",
"start:debug": "SET DEBUG=img:* & npm run start:nodemon",
"start:browser-sync": " browser-sync start --proxy 'localhost:3000' --files 'public,views'",
"test": "run-z start:debug,start:browser-sync"
后者无需安装即可使用。跑吧
npx run-z start:debug,start:browser-sync
【讨论】:
谢谢,我试了第一个,报错[nodemon] app crashed - waiting for file changes before starting...
这似乎是您的应用程序问题。尝试直接启动它,看看应用程序崩溃的原因。以上是关于是否可以在 Express 应用程序中使用一个 npm 脚本启动 nodemon 和浏览器同步?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Cognito 可以在 EB 上的 Node/Express/React 应用程序中使用吗?
是否可以使用 express.js 清除 node.js 需要缓存?
是否可以在不使用 express 作为 vue js 的后端的情况下使用纯节点 js? [关闭]