无法使用 npm 从分叉的 github 存储库安装

Posted

技术标签:

【中文标题】无法使用 npm 从分叉的 github 存储库安装【英文标题】:Unable to install from forked github repo using npm 【发布时间】:2019-11-21 23:26:55 【问题描述】:

我想在 Github 上 fork React Data Grid repo,进行一些更改并将其安装到我的 react 应用程序中。

我在 repo 的 package.json 中添加了名称、版本和描述属性

我尝试通过以下方式安装它 npm 安装用户名/repo_url#branch

它确实安装并构建了包,但忽略了 node_modules/react-data-grid/packages/*/ 中的 dist 和 lib 文件夹,我无法在我的代码中导入它。

我试过了

1) 在我的应用程序的 .gitignore 中评论 dist

2) 在我的应用程序的 package.json 中添加带有 dist 的 files 属性

没有任何作用。 我做错了什么?

编辑

这是遵循@Derek Nguyen 响应后的堆栈跟踪

npm install piby180/react-data-grid#piby-current

> react-data-grid@1.0.0 postinstall C:\Users\Leo\Documents\Work\demos\myapp\node_modules\react-data-grid
> lerna bootstrap --no-ci && lerna run build

lerna notice cli v3.15.0
lerna info Bootstrapping 2 packages
lerna info Installing external dependencies
lerna info Symlinking packages and binaries
lerna success Bootstrapped 2 packages
lerna notice cli v3.15.0
lerna info Executing command in 2 packages: "npm run build"
lerna ERR! npm run build exited 1 in 'react-data-grid'
lerna ERR! npm run build stdout:

> react-data-grid@7.0.0-alpha.13 build C:\Users\Leo\Documents\Work\demos\myapp\node_modules\react-data-grid\packages\react-data-grid
> tsc

error TS6053: File 'C:/Users/Leo/Documents/Work/demos/myapp/node_modules/react-data-grid/packages/react-data-grid-addons/src/index.ts' not found.

error TS6053: File 'C:/Users/Leo/Documents/Work/demos/myapp/node_modules/react-data-grid/packages/react-data-grid/src/index.ts' not found.


Found 2 errors.


lerna ERR! npm run build stderr:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! react-data-grid@7.0.0-alpha.13 build: `tsc`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the react-data-grid@7.0.0-alpha.13 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Leo\AppData\Roaming\npm-cache\_logs\2019-07-17T14_35_42_219Z-debug.log

lerna ERR! npm run build exited 1 in 'react-data-grid'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted "os":"darwin","arch":"any" (current: "os":"win32","arch":"x64")
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\jest-haste-map\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted "os":"darwin","arch":"any" (current: "os":"win32","arch":"x64")

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! react-data-grid@1.0.0 postinstall: `lerna bootstrap --no-ci && lerna run build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the react-data-grid@1.0.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!    

【问题讨论】:

忽略是什么意思,您能否解释一下尝试导入时抛出的错误? 我安装官方包的时候,有一个dist文件夹,里面有react-data-grid.js和react-data-grid.min.js。当我从分叉的 repo 安装时,没有这样的 dist 文件夹。我假设 npm 构建 repo 并以某种方式忽略 dist 文件夹。当我尝试导入它时,它只是说“无法导入 react-data-grid ...” 请分享您的分叉仓库的 url 和您尝试安装的分支。让我在我的电脑上试试。 github.com/piby180/react-data-grid/tree/piby-current 【参考方案1】:

包中的“安装后”脚本运行lerna bootstrap。根据the doc,它将执行以下操作:

运行时,此命令将:

npm 安装每个包的所有外部依赖项。

将所有相互依赖的 Lerna 包符号链接在一起。

npm 在所有引导程序包中运行 prepublish(除非 --ignore-prepublish 已通过)。

npm run prepare 在所有引导程序包中。

/packages 中的包没有准备或预发布脚本。您应该能够通过修改根 package.json 的 postinstall 脚本来正确构建子包:

postinstall": "lerna bootstrap --no-ci && lerna run build",

我认为应该正确构建子包。

【讨论】:

感谢您的回答。这是一些进步,但我仍然无法安装它。 Lerna 成功引导了两个包,但是我从 tsc 'File node_modules/react-data-grid/src/index.ts' not found 得到错误; '文件 node_modules/react-data-grid-addons/src/index.ts' 未找到 hhhm,我刚刚尝试通过 yarn add https://github.com/piby180/react-data-grid#piby-current 安装你的 fork,遇到了一堆 tsc 编译错误——这意味着 tsc 可以看到索引文件。您可以编辑问题以添加有关新错误的更多详细信息吗? @piby180 你安装这个包的项目,它也是在打字稿环境中吗?不过这可能无关紧要,因为 tsc 应该从最近的 node_modules 调用... hhhm

以上是关于无法使用 npm 从分叉的 github 存储库安装的主要内容,如果未能解决你的问题,请参考以下文章

如何从需要构建步骤的 github 安装 npm 包,例如分叉图书馆时?

NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?

从 github 安装 npm:找不到模块:无法解析“react-big-calendar”

如何在不分叉的情况下在 gitlab/github 上复制 git 存储库?

我可以使分叉的 github 存储库从原始版本中保持最新吗? [复制]

从分叉存储库中发布来自 GitHub 操作的评论的解决方法