Stack 社区您好,
我很想实现一些简单的事情:
"loadKey": "export GITLAB_KEY=123 || set GITLAB_KEY=123",
"echoKey": "echo ${GITLAB-KEY}",
使其既跨操作系统兼容,又最少安装额外的软件包。我明白了,这个主题已经被处理了多次,更新也多次,所以也许是时候得到一些最终的解决方案了?
我所能得到的最接近的是:
"loadKey": "cross-env GITLAB_KEY=22 npm run pp4",
"echoKey": "cross-env-shell \"echo $TEST\""
是否可以在不任何外部 npm dev 依赖项的情况下获得此行为?
&&
在这个结构中具有如此大的破坏性?这会起作用:
"load": "cross-env GITLAB_KEY=22",
"echo": "cross-env-shell \"echo $GITLAB_KEY\"",
"loadAndEcho": "npm run load npm run echo"
但这不会:
"load": "cross-env GITLAB_KEY=22",
"echo": "cross-env-shell \"echo $GITLAB_KEY\"",
"loadAndEcho": "npm run load && npm run echo"
我注意到,使用 &&
echo scritp 将访问全局设置的 evn 变量,就像直接从 BASH
set GITLAB_KEY=GLOBAL
一样,我很想了解原因和区别。
对于带有“&&”的行为,其在此上下文中的意义在于命令执行的顺序。当使用“npm run load && npm run echo”时,echo 命令在单独的 shell 中执行,该 shell 可能无法访问上一个命令中设置的环境变量。此行为是由于 && 在 npm run 脚本上下文中的工作方式的本质造成的。
"loadAndEcho": "node -e \"console.log(process.env.GITLAB_KEY)\""
这种方式直接使用 Node.js 访问环境变量,无需依赖外部 npm dev 依赖。它提供了一种独立于平台的方式来使用“cross-env”或任何其他方法访问一组环境变量。