【问题标题】:Setting custom variables from npm script to javascript将自定义变量从 npm 脚本设置为 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 中访问。我用谷歌搜索了所有似乎都指向像上面那样添加它的东西,但它似乎不起作用。

感谢任何帮助!

【问题讨论】:

    标签: javascript node.js react-native npm


    【解决方案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:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2021-01-27
    相关资源
    最近更新 更多