我已经升级到yarn版本3.1.0(之前是1.x,一切正常)。
在项目的package.json中有一个具有以下结构的脚本:
"scripts": {
"someScript": "export NODE_ENV=development && ...",
}
跑步时
yarn run someScript
或
yarn someScript
shell 输出
command not found: export
在 shell 导出命令本身中运行时,会找到它并列出找到的环境变量。
使用包含“export”命令(用于设置环境变量)的yarn运行脚本有什么问题?应该写什么以及在哪里才能像 1.x 版本一样工作,或者是否有新的方法来设置环境?
export
是一个内置的 shell。
尝试不导出,例如:
"scripts": {
"someScript": "NODE_ENV=development env",
}
您可能知道,鉴于系统 shell 很少能跨 Windows 和 Posix 移植,Yarn 不再使用它们来运行脚本条目。相反,我们使用我们自己的 shell 解释器。
对于您来说,这意味着您的
export
不再可以使用 scripts
。就你而言,它有点没用,因为你只需要运行NODE_ENV=development ...
。
也就是说,在某些情况下您需要使用 shell 内置命令(
export
、source
...)。为此,您必须显式调用上述 shell:
"scripts": {
"someScript": "/bin/sh -c 'export NODE_ENV=development && ...'",
}