将自定义变量从 npm 脚本设置为 javascript

Posted

技术标签:

【中文标题】将自定义变量从 npm 脚本设置为 javascript【英文标题】:Setting custom variables from npm script to javascript 【发布时间】:2022-01-21 15:24:03 【问题描述】:

可能是重复的,但有没有办法从 npm 脚本中设置变量,这些变量可以通过 process.env.CUSTOM_VAR 之类的方式在 javascript 中访问?

在我的脚本部分的 package.json 中,我添加了 "start": "react-native start --reset-cache",它工作正常,但现在我想做类似 "inspect": "INSPECT=1 react-native start --reset-cache" 的事情,并让它在 javascript 中访问。我用谷歌搜索了所有似乎都指向像上面那样添加它的东西,但它似乎不起作用。

感谢任何帮助!

【问题讨论】:

【参考方案1】:

您可以有一个程序来读取process.argv 并根据该列表执行操作(process.argv 包含脚本启动的标志)

argvToEnv.js

//you can set the prefix to your liking
const prefix="*" //the start script may have many flags
//if any flag starts with a prefix, it will turn it into an env variable
let envList= //soon to be list of things env variables
for(let i=0;i<process.argv.length;i++)
  let flag=process.argv[i]
  if(flag.startsWith(prefix))
    envList[process.argv[i++].substr(prefix.length)]=process.argv[i]
  

Object.keys(envList).forEach(key=>
  process.env[key]=envList[key]
)

index.js

require('path/to/argvToEnv.js')
//whatever else you do in your main js file

启动脚本

"start": "react-native start --reset-cache *CUSTOM_VAR \"success hehe\""

【讨论】:

跟随这个到 t 但 process.argv 没有定义。无论我做什么,过程总是被定义为"env": "NODE_ENV": "development" 嗯.. 这很奇怪,process.argv 没有被定义?好吧,我知道那边发生了什么 D:

以上是关于将自定义变量从 npm 脚本设置为 javascript的主要内容,如果未能解决你的问题,请参考以下文章

将自定义标头设置为 websocket 请求 (ktor)

如何将自定义字体系列添加到 react-reader npm

将自定义元数据设置为 Google Cloud Storage 中的对象

将自定义 R 脚本部署为 Web 服务 Azure ML Studio

抛出错误 RangeError:将自定义日期设置为 react-datepicker 的 DatePicker 时时间值无效

如何在 NPM 脚本中使用 Windows 控制台“设置”变量?