Изменение в поведении установки npm перезаписывает модули github в package.json

#node.js #npm #npm-install

#node.js #npm #npm-install

Вопрос:

У меня есть несколько частных модулей github для разработки в рамках моего node.js проект. Мой package.json включает в себя что-то вроде:

   "dependencies": {
    ...
    "my-dev-module": "git ssh://git@github.com/my-company/my-dev-module.git#test-branch",
    ...
  }
 

В течение последних нескольких лет, когда я устанавливаю свой-dev-модуль npm, он просто устанавливал эту ветку и не касался package.json.

Недавно после установки он начал перезаписывать запись с помощью:

   "dependencies": {
    ...
    "my-dev-module": "*",
    ...
  }
 

Поэтому при последующих установках npm происходит сбой, потому что это не опубликованный модуль.

Это связано с обновлением npm до последней версии (7.5.4). Я понизил npm до 6.14.11, и проблема исчезла.

Я прочитал документацию по недавнему выпуску, но ничто не показалось очевидным в качестве виновника. Есть идеи?

Ответ №1:

У вас есть файл package-lock.json, поэтому используйте

npm ci

команда вместо

npm i

для установки пакетов.

Это гарантирует, что все установленные пакеты находятся в соответствии с файлом package-lock.json и не будут редактировать версию пакетов для файла package.json. Кроме того, это будет более быстрый запрос с использованием кэширования для последующих вызовов команд.