You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下如何在package.json中配置多命令启动脚本?

解决MacOS下Node.js项目start-dev脚本的问题

我来帮你搞定这个迁移的问题~首先得理清Windows和MacOS Shell命令的几个关键差异,然后调整脚本写法:

问题根源

你的原Windows脚本用了set来设置环境变量,而且引号转义是适配Windows cmd的,但MacOS用的是bash/zsh这类Unix Shell,语法规则不一样,加上你之前的尝试里还缺了命令分隔符&&和闭合引号,导致Shell解析出错。

MacOS专属的正确写法

你可以用下面两种写法中的任意一种:

写法1:调整引号和环境变量顺序

"start-dev": "nodemon --exec \"cd ./src && NODE_ENV=development babel-node server.js\""

这里把cd ./src提前,然后用&&分隔命令,环境变量直接用NODE_ENV=development的Unix风格写法,同时正确转义外层的双引号。

写法2:用单引号包裹内部命令(更简洁)

"start-dev": "nodemon --exec 'cd ./src && NODE_ENV=development babel-node server.js'"

Unix Shell里单引号可以直接包裹包含&&的命令,不需要转义,这样写法更清爽。

跨平台优化方案(推荐)

如果不想维护两个系统的脚本,可以用cross-env这个包,它能让环境变量设置在Windows和Unix系统下都生效:

  1. 先安装依赖:
yarn add cross-env --dev
  1. 修改脚本为:
"start-dev": "nodemon --exec \"cross-env NODE_ENV=development cd ./src && babel-node server.js\""

这样不管是Windows还是MacOS,运行yarn start-dev都能正常工作啦。

为什么你之前的尝试失败?

你写的"nodemon --exec \"NODE_ENV=development cd ./src babel-node server.js"有两个问题:

  • 缺少命令分隔符&&,Shell会把NODE_ENV=development、cd ./src、babel-node server.js当成一个命令的参数,而不是三个依次执行的命令
  • 没有闭合最后的双引号,导致Shell报错unexpected EOF while looking for matching "\""

内容的提问来源于stack exchange,提问作者Mendes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:06:02