Понимание термоусадочной пленки NPM - PullRequest
0 голосов
/ 07 июня 2018

Недавно обнаружен npm-audit, и при первом запуске он обнаружил множество уязвимостей, в основном в отношении пакетов и их зависимостей.

Желая устранить эти уязвимости, я обнаружил npm shrinkwrap, который позволяет мне указать, какие версии и его зависимости следует использовать?Так или иначе, я вижу это (Пожалуйста, исправьте меня, если не так, здесь, чтобы узнать).

Один пример, который я пытаюсь исправить, - это модуль hoek, в моем package.json это установлено как "hoek": "^5.0.3"

Когда я запускаю npm shrinkwrap, одна из зависимостей имеет hoek, установленную как версию 2

"boom": {
  "version": "2.10.1",
  "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
  "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
  "requires": {
    "hoek": "2.x.x"
  },
  "dependencies": {
    "hoek": {
      "version": "2.16.3",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
    }
  }
},

Я подумал, что могу отредактировать это и указать, какую версию я хочу, чтобы зависимость использовалась кактак

  "boom": {
  "version": "2.10.1",
  "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
  "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
  "dev": true,
  "requires": {
    "hoek": "2.x.x"
  },
  "dependencies": {
    "hoek": {
      "version": "5.0.3",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.3.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true
    }
  }
},

Однако, когда я запускаю npm shrinkwrap или npm install, все это возвращается к исходному

Как мне поступить с этим?Является ли термоусадочная пленка правильным выбором или я пытаюсь сделать что-то с этим, чего просто не могу?

Спасибо

1 Ответ

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

NPM shrinkwrap используется для блокировки версии зависимости в проекте.

После установки пакетов с помощью npm install или npm install имя-пакета и обновив папку node_modules, вы должны запустить npm shrinkwrap

. Он создаст новый файл npm-shrinkwrap.json со сведениями обо всех пакетах, которые вы используете, и вам придется зафиксировать файл.

В следующий раз, когда кто-то вызовет npm install , он установит пакеты из npm-shrinkwrap.json , и у вас будет одинаковая среда на всех машинах.

...