Я фиксирую блокировку пакета.json файл, созданный npm 5?
npm 5 был выпущен сегодня и одна из новых функций включает детерминированные установки с созданием .
этот файл должен храниться в системе контроля версий?
Я предполагаю, что это похоже на yarn.lock и composer.lock, оба из которых должны храниться в системе управления версиями.
7 ответов:
да
package-lock.jsonпредназначен для проверки в системе управления версиями. Если вы используете npm 5, Вы можете увидеть это в командной строке:created a lockfile as package-lock.json. You should commit this file.по даннымnpm help package-lock.json:
package-lock.jsonавтоматически генерируется для любых операций, где npm изменяет либоnode_modulesдерево, илиpackage.json. Он описывает точное дерево, которое было создано, так что последующие установки могут создание идентичных деревьев, независимо от промежуточной зависимости новинки.этот файл предназначен для фиксации в репозитории источник, и подают различные цели:
опишите одно представление дерева зависимостей таким образом, чтобы товарищи по команде, развертывания и непрерывная интеграция гарантированно устанавливали точно такие же зависимости.
предоставьте возможность пользователям "путешествовать во времени" в предыдущие состояния
node_modulesбез фиксации сам каталог.чтобы облегчить большую видимость изменений дерева через читаемые различия управления версиями.
и оптимизировать процесс установки, позволяя npm пропустить повторные разрешения метаданных для ранее установленных пакетов.
одна ключевая деталь, о
package-lock.jsonЭто то, что он не может быть опубликован, и это будет проигнорировано, если найдено в любом месте, кроме пакета верхнего уровня. Оно доли формат с npm-shrinkwrap.json(5), который по сути является тем же файлом, но разрешает публикацию. Это не рекомендуется, если развертывание средства CLI или в противном случае используется процесс публикации для создания производственных пакетов.если как
package-lock.jsonиnpm-shrinkwrap.jsonприсутствуют в корне пакет,package-lock.jsonбудет полностью проигнорирована.
Да, он предназначен для регистрации. Я хочу предложить, чтобы он получил свою собственную уникальную фиксацию. Мы находим, что это добавляет много шума к нашим различиям.
вы можете проверить официальные документы:https://docs.npmjs.com/files/package-lock.json
Да, вы можете зафиксировать этот файл.
package-lock.jsonавтоматически генерируется для любых операций, гдеnpmизменяет либоnode_modulesдерево, илиpackage.json. Он описывает точное дерево, которое было создано, так что последующие установки могут генерировать идентичные деревья, независимо от промежуточных обновлений зависимостей.
да, лучше всего проверить в
Я согласен, что это вызовет много шума или конфликта, когда вы видите разницу. Но преимущества таковы:
- гарантируйте точно такую же версию каждого пакета. Эта часть является наиболее важной при строительстве в различных средах в разное время. Вы можете использовать
^1.2.3в своемpackage.json, но как вы можете обеспечить каждый разnpm installбудет забрать ту же версию в вашей машине dev и в сервер сборки, особенно эти пакеты косвенных зависимостей? Ну,package-lock.jsonобеспечит это. (С помощьюnpm ciкоторый устанавливает пакеты на основе файла блокировки)- улучшает процесс установки.
- это помогает с новой функцией проверки
npm audit fix(Я думаю, что функция аудита от npm версии 6).
Я не фиксирую этот файл в своих проектах. Какой в этом смысл ?
- создания
- это причина ошибки целостности кода SHA1 в gitlab с gitlab-ci.в формате YML строит
хотя это правда, что я никогда не использую ^ в мой пакет.json для libs, потому что у меня был плохой опыт с ним :)
с уважением.
к людям, жалующимся на шум при выполнении git diff:
git diff -- . ':(exclude)*package-lock.json'то, что я сделал, это использовать псевдоним
alias gd="git diff --ignore-all-space --ignore-space-at-eol --ignore-space-change --ignore-blank-lines -- . ':(exclude)*package-lock.json'"
Примечание: во-первых, я не смог сделать ниже предложил решение работает, но я чувствую, что с большим количеством знаний о предмете мы можем пусть это сработает. Дайте мне знать если это помогло вам или моего понимания о
npm-merge-driver- это неправильно.как говорят многие здесь
it will cause a lot of noise or conflictв таком случае запустите:npx npm-merge-driver install -gи
npx npm-merge-driver install $ git merge my-conflicting-branch npm WARN conflict A git conflict was detected in package-lock.json. Attempting to auto-resolve. added 1 package in 0.077s Auto-merging package-lock.json Merge made by the 'recursive' strategy. package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) $ git status <clean>Проверьте больше на docs здесь:https://www.npmjs.com/package/npm-merge-driver
Comments