如何更新npm模块,忽略git repo

时间:2014-12-08 11:24:33

标签: git npm

我分叉了一个npm模块,现在它是一个git repo。

所以我的package.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 repo?或者跳过此错误?

6 个答案:

答案 0 :(得分:10)

npm检查所有目录是否存在.git目录,并抛出EISGIT错误(如果存在),因此无法忽略它或跳过它。

code会检查它是否是链接:

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

所以我能够通过将模块符号链接到node_modules来使其工作。

$ ln -s ../some-module node_modules

答案 1 :(得分:5)

我在执行npm安装库时也遇到了这个问题,我能够通过从错误消息中提到的相应library_name中删除.git目录(隐藏在node_modules/library_name中)来解决此问题

还要确保不要从项目的根目录中删除.git directory,因为如果从项目的根目录中删除.git目录,则将丢失与git相关的信息,例如分支信息等。

感谢bolav很好地解释了如何引发EISGIT错误。

答案 2 :(得分:4)

rm -rf node_modules/*/.git/

尝试一下

答案 3 :(得分:2)

是的,有一种方法可以跳过错误。

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创建模块的符号链接到您的库repo文件夹。
问题:然后Watchman没有扫描其中的JS文件。

建议:" npm发布"和" npm install"。每一个。单。时间。
问题:快速开发测试/周期很糟糕,并且在npm目录中发送了数百个永远不会使用的版本。

建议:使用Watchman链接(WML)。 (即文件更改时的目录自动复制)
问题:必须有一个后台程序一直在运行,所有包含的回购在我的机器上。此外,这意味着我无法直接在node_modules文件夹中打开文件以进行快速更改;相反,我每次都必须去图书馆的源代码库。这通常很好,但有时在程序仓库中进行更改会很好,并且它会反映在库仓库中,反之亦然。

我的解决方案

所以是的,通过上述更改,我可以使用库目录的硬链接克隆并避免上述问题。

我用它来创建目录级硬链接克隆:http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#hardlinkclones

这种方法的一个问题是,每当我在库中添加或删除文件时,我都必须重新运行硬链接克隆。但至少在现有文件中进行更改时,我不必做任何事情。 (这是更痛苦的)

答案 4 :(得分:0)

KISHOREs-MBP:dummyReactNativeProject simpro $ npm install-保存react-native-gesture-handler npm ERR!路径/ Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR!代码EISGIT npm ERR! git / Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view:似乎是git repo或子模块。 npm ERR! git /用户/ simpro /桌面/ Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR! git拒绝删除它。手动更新, npm ERR! git或先将其移开。

npm错误!可以在以下位置找到此运行的完整日志: 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 install-保存react-native-gesture-handler npm ERR!路径/ Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR!代码EISGIT npm ERR! git / Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view:似乎是git repo或子模块。 npm ERR! git /用户/ simpro /桌面/ Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR! git拒绝删除它。手动更新, npm ERR! git或先将其移开。

npm错误!可以在以下位置找到此运行的完整日志: npm ERR! /Users/simpro/.npm/_logs/2019-05-10T10_33_07_251Z-debug.log

在安装react-native-gesture-handler时,我也面临着同样的问题。 然后我从节点模块中删除了 react-native-safe-area-view (这是给文件夹的问题),并安装了react-native-gesture-handler并为我工作。

原因:由于git

答案 5 :(得分:0)

一种简单的方法是先删除模块,然后再使用'npm install'再次加载它。

  1. rm -rf node_modules/library_name
  2. npm install
相关问题