使用env变量获取缓存位置

时间:2018-06-12 20:04:02

标签: npm npm-cache

我使用以下方法获取NPM缓存位置:

  cache_location="$(npm get cache)"

然而,这个值是否也由我能读取的env变量表示?

NPM_CACHE_LOCATION

之类的东西

https://docs.npmjs.com/cli/cache

1 个答案:

答案 0 :(得分:2)

简答:这取决于您何时/如何访问它,因为没有env变量(例如NPM_CACHE_LOCATION),可用,而npm 不< / em>跑步。

您需要像现在一样调用npm config get cachenpm get cache

但是,一旦npm运行,配置参数将被放入带有npm_前缀的环境中。

以下内容证明了这一点......

了解哪些env变量可用:

作为一种了解npm在环境中放置的env变量的方法,您可以在npm脚本中使用printenv。例如,在 package.json 中添加:

...
"scripts": {
  "print-env-vars": "printenv | grep \"^npm_\""
},
...

然后运行以下命令:

npm run print-env-vars

通过env变量获取缓存位置:

在生成的控制台日志中(即运行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_"不会返回任何内容。

使用env变量访问缓存位置:

  1. 您可以通过npm脚本访问缓存位置,例如:

    "scripts": {
      "cache-loc-using-bash": "echo $npm_config_cache",
      "cache-loc-using-win": "echo %npm_config_cache%"
    },
    

    有关使用跨平台语法的信息,请参阅cross-var

  2. 通过 Nodejs 脚本访问npm缓存位置。例如:

    const cacheLocation = process.env.npm_config_cache;
    console.log(cacheLocation)
    

    注意:需要通过npm脚本调用此节点脚本,以使process.env.npm_config_cache可用。通过运行命令行调用它,例如node ./somefile.js将返回undefined - 这进一步表明带有_npm前缀的参数仅在npm运行时才会被放入环境中。

  3. 不太理想,但您当然可以使用export设置自己的环境变量:

    export NPM_CACHE_LOCATION="$(npm get cache)"
    

    unset将其删除:

    unset NPM_CACHE_LOCATION