1

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

  cache_location="$(npm get cache)"

但是,这个值是否也由我可以读取的环境变量表示?

NPM_CACHE_LOCATION什么?

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

4

1 回答 1

2

简短回答:这取决于您何时/如何访问它,因为在 npm运行NPM_CACHE_LOCATION时没有可用的环境变量(例如 ) 。

您需要调用npm config get cacheor npm get cache,就像您当前正在做的那样。

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

下面演示了这...


发现哪些环境变量可用:

作为找出 npm 放入环境中的 env 变量的一种方法,您可以在 npm-script中使用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

文档中它指出:

配置

配置参数放在带有npm_config_前缀的环境中。例如,您可以root通过检查npm_config_root环境变量来查看有效配置。

注意:printenv | grep "^npm_"直接通过 CLI 运行不会返回任何内容。

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

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

    "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-script 调用此节点脚本process.env.npm_config_cache才能使用。通过运行命令行调用它,例如node ./somefile.js将返回undefined- 这进一步表明带有_npm前缀的参数仅在 npm 运行时被放入环境中。


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

export NPM_CACHE_LOCATION="$(npm get cache)"

取消设置以将其删除:

unset NPM_CACHE_LOCATION
于 2018-06-13T09:39:22.180 回答