файл package-lock.json, пакет с "опционально": true
один из моих PR-коллег по работе содержит обновление package-lock.json, в которое добавлено необязательное значение: true. Я не уверен, что это даже после того, как погуглил. Может кто-нибудь объяснить, пожалуйста?
Ответы
Ответ 1
С https://docs.npmjs.com/files/package-lock.json#optional:
Если true, то эта зависимость является либо необязательной зависимостью ТОЛЬКО модуля верхнего уровня, либо транзитивной зависимостью одного. Это неверно для зависимостей, которые являются необязательной зависимостью верхнего уровня и транзитивной зависимостью необязательной зависимости верхнего уровня.
Безопасно объединить это изменение.
Причина, по которой вы видите это изменение, наиболее вероятна, потому что npm немного изменил структуру package-lock.json в версии 6.6. Ваш друг в основном запустил npm install
с npm 6. 6+ на package-lock.json, ранее сгенерированном с npm 6. 5-.
Вы должны быть в состоянии избежать такого рода проблем, убедившись, что все в вашей команде используют последнюю версию npm
.
Ответ 2
После удаления пакета из зависимостей его зависимости помечаются как "optional": true
в package-lock.json
.
Обычно безопасно удалять такие пакеты вручную или с помощью
$ rm -rf package-lock.json node_modules/
$ npm install
Однако это не на 100% безопасно, так как некоторые пакеты будут обновлены до более новых версий.
Ответ 3
Одной из причин будет:
Для некоторых пакетов npm могут потребоваться зависимые пакеты (например, minimist) для работы в разных ОС. NPM помечает эти пакеты как дополнительные при установке npm, если это вообще не требуется, в зависимости от используемой ОС.
Пожалуйста, проверьте следующую проблему:
Открытый выпуск: package-lock.json и дополнительные пакеты: https://github.com/npm/npm/issues/17722
Надеюсь, поможет.