Как обновить модули npm, игнорируя репозиторий git

Я разветкил один из модулей npm и теперь это репозиторий git.

Итак, мой пакет .json:

"dependencies": {
    "some-module": "git+https://github.com/my-name/some-module.git",
}

Свернутое репо синхронизируется путем сбора вверх и слияния. Но когда я пытаюсь обновить другие модули npm, он дает ошибку:

npm ERR! git Appears to be a git repo or submodule.
npm ERR! git     /Users/.../node_modules/some-module
npm ERR! git Refusing to remove it. Update manually,
npm ERR! git or move it out of the way first.

npm ERR! System Darwin 13.4.0
npm ERR! command "node" "/usr/local/bin/npm" "update"
npm ERR! cwd /Users/...
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path /Users/.../node_modules/some-module
npm ERR! code EISGIT
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/.../npm-debug.log
npm ERR! not ok code 0

Есть ли способ игнорировать репозиторий git при обновлении? Или пропустить эту ошибку?

Ответы

Ответ 1

npm проверяет все каталоги для существования каталога .git и выдает ошибку EISGIT, если она существует, поэтому нет способа игнорировать ее или пропустить ее.

код, однако, проверьте, есть ли ссылка:

mod.parent && !mod.isLink && [checkGit, mod.realpath],

Итак, я смог заставить его работать, символизируя модуль в node_modules.

$ ln -s ../some-module node_modules

Ответ 2

У меня тоже была эта проблема во время выполнения библиотеки установки npm, и я смог решить ее, удалив каталог .git (который скрыт внутри node_modules/library_name) из соответствующего имени библиотеки, указанного в сообщении об ошибке.

Также убедитесь, что вы не удаляете .git directory из корня вашего проекта, потому что если вы удалите каталог .git из корня проекта, вы потеряете информацию, связанную с git, такую как информация о ветке и т.д.

Спасибо болаву за хорошее объяснение того, как выдается ошибка EISGIT.

Ответ 3

Да, есть способ пропустить ошибку.

1) Откройте файл "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-install-checks\index.js"
2) Комментируйте этот код в самом низу:

if (!er && s.isDirectory()) {
  var e = new Error(folder + ': Appears to be a git repo or submodule.')
  e.path = folder
  e.code = 'EISGIT'
  return cb(e)
}

Готово.

Фон

От другого разработчика, долго разочарованного этой ошибкой; ни одно из предлагаемых решений не работает в моем случае из-за ограничений различных систем.

Предложение: NPM работает с символическими ссылками, поэтому создайте символическую ссылку модуля из node_modules в папку вашей библиотеки репо.
Проблема: тогда Watchman не сканирует файлы JS внутри.

Предложение: "npm publish" и "npm install". Каждый. Один. Время.
Проблема: Ужасно для быстрых тестов/циклов разработки и спама каталога npm с сотнями неиспользуемых версий.

Предложение: используйте ссылки Watchman (WML). (т.е. автокопирование каталога при изменении файла)
Проблема. Необходимо иметь фоновый режим, работающий все время, для всех включенных репозиториев на моей машине. Кроме того, это означает, что я не могу открыть файлы непосредственно в папке node_modules, чтобы сделать быстрые изменения; вместо этого я должен каждый раз обращаться к библиотечному источнику репо. Обычно это нормально, но иногда приятно вносить изменения в репо программы и отражать его в библиотечном репо, в дополнение к наоборот.

Мое решение

Так что да, с приведенным выше изменением, я могу использовать клон жесткой ссылки в каталоге библиотеки и избегать описанных выше проблем.

Я использую это, чтобы создать клон жесткой ссылки на уровне каталогов: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#hardlinkclones

Одна из проблем с этим подходом заключается в том, что я должен повторно запускать клон жесткой ссылки всякий раз, когда я добавляю или удаляю файлы в библиотеке. Но по крайней мере мне не нужно ничего делать, когда изменения производятся в существующих файлах. (что гораздо более болезненно)

Ответ 4

Простой способ сделать это - сначала удалить модуль ,, а затем , использовать "npm install", чтобы загрузить его снова.

  1. rm -rf node_modules/library_name
  2. npm install

Ответ 5

KISHOREs-MBP: dummyReactNativeProject просто $ npm установить --save обработчик реагировать на собственный жест npm ERR! Путь/Пользователи /Simpro/Рабочий стол/Кишор/dummyReactNativeProject/node_modules/Reaction -native-Safe- Area-View Npm ERR! код EISGIT npm ERR! git/Users/simpro/Desktop/Kishore/dummyReactNativeProject/node_modules/реагировать-нативный-безопасный-область-представление: представляется git-репо или подмодулем. нпм ERR! git/Users/simpro/Рабочий стол /Kishore/dummyReactNativeProject/node_modules/Reaction-native-safe-area-view npm ERR! git Отказ от удаления. Обновление вручную, npm ERR! мерзавец или убери его с дороги первым.

нпм ERR! Полный журнал этого прогона можно найти в: npm ERR! /Users/simpro/.npm/_logs/2019-05-10T10_29_18_510Z-debug.log KISHOREs-MBP: dummyReactNativeProject simpro $ rm -rf.git KISHOREs-MBP: dummyReactNativeProject simpro $ npm установить --save реагировать-собственный жест обработчик npm ERR! Путь/Пользователи /Simpro/Рабочий стол/Кишор/dummyReactNativeProject/node_modules/Reaction-native-Safe-Area-View Npm ERR! код EISGIT npm ERR! git/Users/simpro/Desktop/Kishore/dummyReactNativeProject/node_modules/реагировать-нативный-безопасный-область-представление: представляется git-репо или подмодулем. нпм ERR! git/Users/simpro/Рабочий стол /Kishore/dummyReactNativeProject/node_modules/Reaction-native-safe-area-view npm ERR! git Отказ от удаления. Обновление вручную, npm ERR! мерзавец или убери его с дороги первым.

нпм ERR! Полный журнал этого прогона можно найти в: npm ERR! /Users/simpro/.npm/_logs/2019-05-10T10_33_07_251Z-debug.log

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

Причина: из-за мерзавца