如何将命令行变量传递到npm脚本中?

3

我想要传递一个命令行选项(具体来说,不在版本控制中)到我的主要 index.js 脚本,该脚本根据特定的S3存储桶执行一些操作。

在我的 package.json 文件中:

"scripts": {
  "start": "bucket_name=${bucket_name:=null} node babel.runtime.js"
},

通过命令行:

npm start -- --bucket_name="test"

bucket_name一直返回null,所以变量没有被正确传递。我认为这是一些简单的问题,但我无法找出我的错误在哪里。


可能是将命令行参数发送到npm脚本的重复问题。 - Mikko
将您的启动脚本设置为:node babel.runtime.js,然后从终端运行 BUCKET_NAME=test npm start。这样应该会在 process.env.BUCKET_NAME 中提供。 - Saugat
1个回答

4
你提供了两种将变量分配给进程的方法。
第一种方法是使用npm脚本。
"scripts": {
  "start": "bucket_name=${bucket_name:=null} node babel.runtime.js"
}

这种方法设置了bucket_name环境变量,可以通过process.env.bucket_name访问。
第二种方法是通过命令行。
npm start -- --bucket_name="test"

这种方法将bucket_name设置为运行过程的参数。它可以从process.argv数组中访问。

问题并不在于变量是否被设置为某种方式,而是你访问的位置不同。每个位置都有不同的设置bucket_name方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接