Yarn 运行 someScript 输出“未找到命令:导出”

问题描述 投票:0回答:2

我已经升级到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 版本一样工作,或者是否有新的方法来设置环境?

yarnpkg yarnpkg-v3
2个回答
2
投票

export
是一个内置的 shell。

尝试不导出,例如:

"scripts": {
  "someScript": "NODE_ENV=development env",
}

0
投票

Yarn 3 不再使用系统 shell:

您可能知道,鉴于系统 shell 很少能跨 Windows 和 Posix 移植,Yarn 不再使用它们来运行脚本条目。相反,我们使用我们自己的 shell 解释器。

对于您来说,这意味着您的

export
不再可以使用
scripts
。就你而言,它有点没用,因为你只需要运行
NODE_ENV=development  ...

也就是说,在某些情况下您需要使用 shell 内置命令(

export
source
...)。为此,您必须显式调用上述 shell:

"scripts": {
  "someScript": "/bin/sh -c 'export NODE_ENV=development && ...'",
}
© www.soinside.com 2019 - 2024. All rights reserved.