我使用以下方法获取NPM缓存位置:
cache_location="$(npm get cache)"
然而,这个值是否也由我能读取的env变量表示?
像NPM_CACHE_LOCATION
?
答案 0 :(得分:2)
简答:这取决于您何时/如何访问它,因为没有env变量(例如NPM_CACHE_LOCATION
),可用,而npm 不< / em>跑步。
您需要像现在一样调用npm config get cache
或npm get cache
。
但是,一旦npm运行,配置参数将被放入带有npm_
前缀的环境中。
以下内容证明了这一点......
作为一种了解npm在环境中放置的env变量的方法,您可以在npm脚本中使用printenv。例如,在 package.json 中添加:
...
"scripts": {
"print-env-vars": "printenv | grep \"^npm_\""
},
...
然后运行以下命令:
npm run print-env-vars
在生成的控制台日志中(即运行npm run print-env-vars
后),您会看到列出的npm_config_cache
环境变量。它的内容如下:
npm_config_cache=/Users/UserName/.npm
在docs中声明:
<强>构造强>
配置参数放在环境中,带有
npm_config_
前缀。例如,您可以通过查看root
环境变量来查看有效的npm_config_root
配置。
注意:直接通过CLI运行printenv | grep "^npm_"
不会返回任何内容。
您可以通过npm脚本访问缓存位置,例如:
"scripts": {
"cache-loc-using-bash": "echo $npm_config_cache",
"cache-loc-using-win": "echo %npm_config_cache%"
},
有关使用跨平台语法的信息,请参阅cross-var。
通过 Nodejs 脚本访问npm缓存位置。例如:
const cacheLocation = process.env.npm_config_cache;
console.log(cacheLocation)
注意:需要通过npm脚本调用此节点脚本,以使process.env.npm_config_cache
可用。通过运行命令行调用它,例如node ./somefile.js
将返回undefined
- 这进一步表明带有_npm
前缀的参数仅在npm运行时才会被放入环境中。
不太理想,但您当然可以使用export设置自己的环境变量:
export NPM_CACHE_LOCATION="$(npm get cache)"
和unset将其删除:
unset NPM_CACHE_LOCATION