Как обновить конкретную версию подпакета с помощью npm
Я проверил глобальный пакет minimatch на глоток
$ npm list -g minimatch
+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
| +-- glob-stream@3.1.18
| | +-- glob@4.5.3
| | | `-- minimatch@2.0.10 deduped
| | `-- minimatch@2.0.10
| `-- glob-watcher@0.0.6
| `-- gaze@0.5.2
| `-- globule@0.1.0
| +-- glob@3.1.21
| | `-- minimatch@0.2.14 deduped
| `-- minimatch@0.2.14
Теперь я хотел обновить все версии minimatch из определенного пакета gulp (все minimatch@0.2.14 и minimatch@3.04) до последней версии.
Есть ли какая-нибудь команда в npm, которая обновляет мои существующие зависимости пакетов?
2 ответа
Вот мое решение, вы можете создать символическую ссылку для пакета minimatch, используя
npm ln
npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]
вот ссылка для более подробного объяснения https://docs.npmjs.com/cli/link
Я думаю, что вы не должны обновлять их вручную, потому что, если что-то не так, вам придется удалить все и установить заново. Если есть некоторые проблемы с миграцией, беспокоит вас, то попробуйте.
npm audit [--json|--parseable]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=dev]
вот документация https://docs.npmjs.com/cli/link
Вы не можете и не должны обновлять подпакеты (пакеты, используемые как зависимости для других пакетов).
Модули Node разработаны так, чтобы содержать все зависимости с указанными версиями внутри node_modules
, чтобы избежать проблем с новыми обновлениями. Скажем ваш minimatch@3.0.4
вводит некоторые новые функции, теперь glob@4.5.3
может перестать работать, и в свою очередь gulp@3.9.1
может перестать работать, как хорошо.
Вы должны либо:
Обновление до нового gulp
версия, не беспокоясь о minimatch
npm update gulp
или используйте последнюю версию minimatch
напрямую, используя
npm install minimatch
Однако, если вы действительно хотите выполнить операцию по какой-либо причине, вы можете попробовать следующий уродливый хак:
- установить minimatch где-нибудь в случайном месте с
npm install minimatch@3.0.4
- перейти к
node_modules
папку в этом месте и скопируйтеminimatch
папка - найдите вашу папку установки gulp (это может зависеть от вашей системы,
C:\Users\user\AppData\Roaming\npm\node_modules\gulp
в Windows или/usr/lib/node_modules/gulp/
в Linux) - ищи
minimatch
внутриgulp
установочная папка (find . | grep minimatch
) - заменить все найденное
minimatch
папки с той, которую вы только что установили в случайном месте
С этой точки зрения gulp
следует использовать обновленный minimatch
, хотя npm list
будет по-прежнему отображать старый номер версии.
Опять же, это крайне не рекомендуется и предоставляется только для ответа на вопрос.