Caret, тильда или фиксированный package.json для большого производственного приложения? - PullRequest
2 голосов
/ 19 марта 2019

У меня есть большое реактивное приложение в производстве, и мне интересно, лучше ли использовать фиксированные версии для моих пакетов? Я слышал, что использование каретки (^) - хорошая практика, но мне кажется, что это оставит приложение открытым для большего количества ошибок?

Я немного погуглил эту проблему, и кажется, что существует разрыв между ^ и исправленными версиями. Где-то в документации (npm) есть определенный ответ о том, какой подход использовать?

1 Ответ

1 голос
/ 19 марта 2019

Во время разработки вы можете выбрать то, что вам удобно, но я бы порекомендовал сжать упаковку прямо перед тем, как вы начнете тестировать приложение, прежде чем приступить к работе.Заблокируйте зависимости с помощью:

npm shrinkwrap

Эта команда превращает package-lock.json в публикуемый npm-shrinkwrap.json или просто создает новую.Файл, созданный и обновленный этой командой, будет иметь приоритет над любыми другими существующими или будущими package-lock.json файлами.Подробное описание конструкции и назначения блокировок пакетов в npm см. npm-package-locks.

Таким образом, вы можете оставить зависимости, объявленные в package.json, как они есть.(тильда / каретка), но точные версии, объявленные в npm-shrinkwrap.json, будут когда-либо использоваться только при установке npm.

У меня лично возникла проблема непосредственно перед началом работы, когда зависимость была объявлена ​​с ~ (более строгая) была обновлена ​​и внесла ошибку (которая не должна происходить для исправления / исправления ошибки).Это случалось только один раз, но я не хотел бы испытывать судьбу.

Вы всегда можете обновить npm-shrinkwrap.json, сначала выполнив npm update <package_name>, указав пакет, который необходимо обновить, затем повторив npm shrinkwrapобновить существующий npm-shrinkwrap.json.

... и не забудьте npm ci

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