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
和dobucket\u name=test npm start
的可能重复。它应该在process.env.BUCKET\u NAME