Javascript 是否将命令行变量传递到npm脚本?

Javascript 是否将命令行变量传递到npm脚本?,javascript,node.js,shell,npm,ecmascript-6,Javascript,Node.js,Shell,Npm,Ecmascript 6,我正在尝试向我的主index.js脚本传递一个命令行(特别是不在版本控制中)选项,该脚本根据特定的S3 bucket执行一些操作 在my package.json中: "scripts": { "start": "bucket_name=${bucket_name:=null} node babel.runtime.js" }, 并通过命令行: npm start -- --bucket_name="test" 但是bucket\u name始终返回为null,因此var没有正确传递。我

我正在尝试向我的主
index.js
脚本传递一个命令行(特别是不在版本控制中)选项,该脚本根据特定的S3 bucket执行一些操作

在my package.json中:

"scripts": {
  "start": "bucket_name=${bucket_name:=null} node babel.runtime.js"
},
并通过命令行:

npm start -- --bucket_name="test"

但是
bucket\u name
始终返回为null,因此var没有正确传递。我认为这很简单,但我不知道我做错了什么。

您介绍了两种分别为流程分配变量的方法

第一个,使用
npm脚本

"scripts": {
  "start": "bucket_name=${bucket_name:=null} node babel.runtime.js"
}
此方法设置环境变量
bucket\u name
,该变量可从
process.env.bucket\u name
访问

第二种方法是通过命令行

npm start -- --bucket_name="test"
这种方法将
bucket\u name
设置为正在运行的进程的参数。这可以从
process.argv
array访问


这并不是说变量没有被设置成这样或那样,而是关于你访问的地方。每一个都在不同的位置设置
bucket\u name

从终端将启动脚本设置为:
node babel.runtime.js
和do
bucket\u name=test npm start
的可能重复。它应该在
process.env.BUCKET\u NAME