Получить расположение кэша с переменной env - PullRequest
0 голосов
/ 12 июня 2018

Я получаю местоположение кэша NPM, используя:

  cache_location="$(npm get cache)"

однако, это значение также представлено переменной env, которую я могу прочитать?

Что-то вроде NPM_CACHE_LOCATION?

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

1 Ответ

0 голосов
/ 13 июня 2018

Краткий ответ: Это зависит от того, когда / как вы хотите получить к нему доступ, поскольку нет переменной env (например, NPM_CACHE_LOCATION), доступной, пока npm работает не работает.

Вам нужно будет вызвать npm config get cache или npm get cache, как вы это делаете в настоящее время.

Однако после запуска npm параметры конфигурации помещаются в среду с помощью * 1012.* префикс.

Это демонстрирует следующее ...


Узнайте, какие переменные env доступны:

Как способ узнать, какие переменные (en) envnpm помещает в среду, вы можете использовать printenv в npm-скрипте.Например, в package.json add:

...
"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, например:

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

    См. cross-var для использования межплатформенного синтаксиса.

  2. Доступ к расположению кэша npm через скрипт Nodejs ,Например:

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...