Как обновить зависимости зависимостей, используя npm - PullRequest
2 голосов
/ 17 марта 2020

Мне очень интересно, что я не могу найти ответ на этот простой вопрос. Кроме того, я очень удивляюсь, что npm update не решает эту проблему.

Я не могу опубликовать здесь свое полное дерево зависимостей, но все же позвольте мне описать мою проблему:

minimist устарел (версия 1.2.0) и имеет уязвимость безопасности в этой версии. Пакеты требуют, чтобы minimist определял зависимость как ^ 1.2.0 - так что она совместима с 1.2.2.

Общее решение состоит в том, чтобы установить ее на package.json в devDependencies или dependencies с ^1.2.2. Я не хочу помещать это в package.json. Я чувствую, что npm update также должен обновлять косвенные зависимости.

Я что-то упустил?

Здесь вы можете увидеть мой пакет-блокировку. json: https://github.com/tflori/riki-community/blob/master/package-lock.json

А на выходе npm ls minimist:

riki-community@ /home/iras/work/projects/riki/community
├─┬ awesome-typescript-loader@5.2.1
│ ├─┬ loader-utils@1.2.3
│ │ └─┬ json5@1.0.1
│ │   └── minimist@1.2.0  deduped
│ └─┬ mkdirp@0.5.1
│   └── minimist@0.0.8 
├─┬ jest@25.1.0
│ └─┬ @jest/core@25.1.0
│   ├─┬ @jest/transform@25.1.0
│   │ └─┬ @babel/core@7.8.7
│   │   └─┬ json5@2.1.2
│   │     └── minimist@1.2.5 
│   └─┬ jest-haste-map@25.1.0
│     └─┬ sane@4.1.0
│       ├─┬ @cnakazawa/watch@1.0.4
│       │ └── minimist@1.2.0  deduped
│       └── minimist@1.2.0  deduped
├─┬ node-sass@4.13.1
│ └─┬ meow@3.7.0
│   └── minimist@1.2.0 
├─┬ ts-jest@25.2.1
│ └─┬ json5@2.1.2
│   └── minimist@1.2.5 
├─┬ tsconfig-paths-webpack-plugin@3.2.0
│ └─┬ tsconfig-paths@3.8.0
│   └── minimist@1.2.0  deduped
└─┬ webpack@4.42.0
  └─┬ watchpack@1.6.0
    └─┬ chokidar@2.1.8
      └─┬ UNMET OPTIONAL DEPENDENCY fsevents@1.2.9
        └─┬ UNMET OPTIONAL DEPENDENCY node-pre-gyp@0.12.0
          ├─┬ UNMET OPTIONAL DEPENDENCY mkdirp@0.5.1
          │ └── UNMET OPTIONAL DEPENDENCY minimist@0.0.8 
          └─┬ UNMET OPTIONAL DEPENDENCY rc@1.2.8
            └── UNMET OPTIONAL DEPENDENCY minimist@1.2.0 

Ответы [ 3 ]

1 голос
/ 17 марта 2020

Мне также нужно было вручную изменить версию минимиста на «^ 1.2.5» с «0.0.8» для зависимости «mkdirp»

1 голос
/ 17 марта 2020

Проблема в глубине. Из документации:

Начиная с npm@2.6.1, обновление npm будет проверять только пакеты верхнего уровня. Предыдущие версии npm также рекурсивно проверяли все зависимости. Чтобы получить старое поведение, используйте npm --depth 9999. update.

Поэтому мы должны предоставить глубину, которую мы хотим обновить. В моем случае 9999 занял много времени, и я отменил его. Но --depth 5 было достаточно.

npm update --depth 5
0 голосов
/ 17 марта 2020

Прежде чем это сделают другие: конечно, есть обходной путь ...

Откройте package-lock.json и найдите все случаи "minimist": { и удалите объект.

Пример:

Измените это:

          "dependencies": {
            "minimist": {
              "version": "1.2.0",
              "bundled": true,
              "dev": true,
              "optional": true
            }
          }

на это:

          "dependencies": {
          }

И снова запустите npm install.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...