Как обновить конкретную версию подпакета с помощью npm - PullRequest
0 голосов
/ 24 октября 2018

Я проверил глобальный minimatch пакета на gulp

$ 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 ]

0 голосов
/ 13 ноября 2018

Вот мое решение, вы можете создать символическую ссылку для пакета 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

0 голосов
/ 24 октября 2018

Вы не можете и не должны обновлять подпакеты (пакеты, используемые в качестве зависимостей для других пакетов).

Узловые модули предназначены для хранения всех зависимостей с указанными версиями внутри 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 по-прежнему будет отображать номер старой версии.
Опять же, это крайне не рекомендуется и предоставляется только радивзмахивая вопросом.

...