如何在shell中正确执行带参数的yarn dotenv prisma组合命令
参数透传失败原因
该问题由多层命令嵌套的参数边界未正确分隔导致:你当前的命令涉及yarn workspace、dotenv-cli、prisma三层命令解析逻辑,仅添加一次--仅完成了dotenv层的参数分隔,yarn workspace层仍会错误拦截后续的prisma专属参数。
解决方案
按优先级推荐以下可行写法:
方案1:双层双破折号分隔(适配90%以上yarn版本)
给yarn和dotenv各加一层参数分隔符,明确透传规则:
yarn workspace @nl/server run dotenv -e .env.development -- -- prisma --preview-feature db seed
规则说明:
- 第一层
--告知yarn,后续所有参数都传递给dotenv命令 - 第二层
--告知dotenv,后续所有内容都是要执行的prisma命令及专属参数
方案2:引号包裹prisma完整命令(兼容性最高)
如果方案1不生效,直接用引号把prisma的完整执行语句打包作为dotenv的执行目标,完全避免参数拆分错误:
yarn workspace @nl/server dotenv -e .env.development -- "prisma --preview-feature db seed"
方案3:Node脚本内直接注入环境变量
如果是在Node.js脚本中生成执行命令,可绕开dotenv-cli直接处理:读取.env文件内容注入到process.env后,再通过子进程调用prisma命令,完全避免多层命令的参数透传问题。
前置校验项
- 确认项目安装的是
dotenv-cli而非基础dotenv库,基础dotenv没有命令行执行子命令的能力,会直接导致参数解析异常 - 确认当前prisma版本仍需要
--preview-feature参数,prisma 4.0+版本中大部分特性已转正,部分场景下该参数已被废弃,强行添加反而会报错
内容的提问来源于stack exchange,提问作者Xen_mar
相关产品推荐
相关产品推荐

