是否可以在 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 应用程序中,我同时使用 nodemonbrowser-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创建的CRUD中删除锚标记?

是否可以在不使用 express 作为 vue js 的后端的情况下使用纯节点 js? [关闭]

Flyway 可以使用 Sql Express LocalDB

Nodejs - 小型 Express 服务器 + trayicon + pkg