Подтвердить что ты не робот

`npm install` устанавливает все зависимости моего проекта по сети, даже если они уже установлены или доступны из кеша

всякий раз, когда я запускаю npm install в моем каталоге проектов, npm извлекает и устанавливает все зависимости, даже если они уже установлены в node_modules. Npm не устанавливается из моего кеша в ~/.npm/, хотя в моем кеше уже имеется очень большое количество пакетов.

Вот настройки конфигурации npm от npm config ls -l:

; cli configs
long = true
registry = "https://registry.npmjs.org/"

; userconfig /Users/jay/.npmrc
username = "jayhendren"

; globalconfig /Users/jay/local/nodejs/etc/npmrc
global = true
globalconfig = "/Users/jay/local/nodejs/etc/npmrc"
globalignorefile = "/Users/jay/local/nodejs/etc/npmignore"
prefix = "/Users/jay/local/nodejs"

; default values
always-auth = false
bin-links = true
browser = null
ca = null
cache = "/Users/jay/.npm"
cache-lock-retries = 10
cache-lock-stale = 60000
cache-lock-wait = 10000
cache-max = null
cache-min = 10
cert = null
color = true
depth = null
description = true
dev = false
editor = "/usr/bin/vim"
; email = "" (overridden)
engine-strict = false
fetch-retries = 2
fetch-retry-factor = 10
fetch-retry-maxtimeout = 60000
fetch-retry-mintimeout = 10000
force = false
git = "git"
git-tag-version = true
group = 20
heading = "npm"
https-proxy = null
ignore-scripts = false
init-module = "/Users/jay/.npm-init.js"
init.author.email = ""
init.author.name = ""
init.author.url = ""
init.license = "ISC"
json = false
key = null
link = false
local-address = undefined
loglevel = "http"
; long = false (overridden)
message = "%s"
node-version = "v0.10.25"
npat = false
onload-script = false
optional = true
parseable = false
production = false
proprietary-attribs = true
proxy = null
rebuild-bundle = true
registry = "https://registry.npmjs.org/"
rollback = true
save = false
save-bundle = false
save-dev = false
save-optional = false
searchexclude = null
searchopts = ""
searchsort = "name"
shell = "/bin/zsh"
shrinkwrap = true
sign-git-tag = false
strict-ssl = true
tag = "latest"
tmp = "/var/folders/sq/ls98jmdd09l__xwpxq3qqmpw0000gn/T/"
umask = 18
unicode = true
unsafe-perm = true
usage = false
user = "nobody"
user-agent = "node/v0.10.25 darwin x64"
userconfig = "/Users/jay/.npmrc"
; username = "" (overridden)
version = false
versions = false
viewer = "man"

Кто-нибудь знает, почему npm настаивает на выборе новых пакетов снова и снова?

4b9b3361

Ответ 1

Чтобы установить пакеты из силы кэша, вы можете использовать следующий способ:

$ npm --cache-min 9999999 install

См. также: https://addyosmani.com/blog/using-npm-offline/

Ответ 2

Используйте комбинацию флагов для эмуляции skip-installed

global = false
link = true
foo
+-- node_modules
    +-- blerg (1.2.5) <---[A]
    +-- bar (1.2.3) <---[B]
    |   `-- node_modules
    |       +-- baz (2.0.2) <---[C]
    |       |   `-- node_modules
    |       |       `-- quux (3.2.0)
    |       `-- asdf (2.3.4)
    `-- baz (1.2.3) <---[D]
        `-- node_modules
            `-- quux (3.2.0) <---[E]

Ссылки

npm 1.0: ссылка

npm 1.0: глобальная и локальная установка

npm-folders

node.js глобальные объекты

Ответ 3

Я запускал "npm prune" внутри моего проекта, чтобы удалить ненужные пакеты (т.е. не являющиеся зависимостями, и дать вам это раздражающее "постороннее" сообщение об ошибке). Один побочный эффект, казалось, заключался в удалении такого избыточного пакета, о котором вы говорите. Например, gulp требует пакет gulp -util. Поскольку это уже было на "верхнем" уровне, оно было удалено из gulp собственных node -модулей.