如何在 Meteor 中从 GitHub 安装 NPM 包?

5

我在GitHub上分叉了一个npm包,对其进行了更改,现在想直接从GitHub在我的Meteor应用程序中安装该软件包。

我的package.json文件如下:

{
  "dependencies": {    
    "semantic-ui-react": "git+https://git@github.com/nolandg/Semantic-UI-React.git",
  }
}

我接着运行。
meteor npm install

看起来一切正常,系统提示已经成功安装了该软件包:

semantic-ui-react@0.61.6  (git+https://git@github.com/nolandg/Semantic-UI-React.git#f27d5c736e5de1eed0acf7769f18caee57578526)

确实,该包出现在node_modules文件夹中。但是当我尝试启动我的Meteor应用程序时,我会收到以下错误:

Cannot set property '/my-website/node_modules/semantic-ui-react/package.json' of undefined

at Resolver._resolvePkgJsonMain (/tools/isobuild/resolver.js:320:9)

有人成功地从GitHub直接在Meteor应用程序中安装npm包吗?我无法解决这个问题。谢谢!
Meteor版本:1.4.2.3

从您的GitHub分支获取npm包不应该有任何问题。您所描述的是正确的方法。您可能在其他地方或分支代码中存在错误。 - ghybs
我已经放弃了。Meteor的构建链可能有些问题?npm安装了该软件包,但Meteor解析器似乎找不到它。 :-( - Noland
3个回答

3

这个包无法从git中获取的主要原因是没有配置以这种方式工作。这不是Meteor特定的问题,而是JS开发人员有时会遇到的问题。

对于这个特定的案例,存在两个问题:

  • package.json中白名单files字段只包含srcdist文件夹。这意味着当您通过npm获取它时,几乎所有构建所需的配置文件都已经丢失了。
  • 该包的代码需要构建才能与您的代码一起工作。当作者将其发布到npm时,会执行此操作,但是您直接从github获取,因此此步骤未完成。

由于您已经fork并修改了该包,因此请按照以下方式修改package.json(删除我添加的所有注释,以便为您提供一些说明),将其推送到github,并通过npm再次获取它:

// remove the "files" field
// ...
"scripts": {
  // this script is used to build the package
  "postinstall": "postinstall-build dist \"npm run build:commonjs\""
  // ...
},
"dependencies": {
  // this helps build the package
  "postinstall-build": "^2.1.3"
},
// ...

0

通常不会从github安装软件包,而是发布软件包,这意味着有许多版本的软件包可供选择,您可以选择要获取哪个版本。我不确定您正在做的是否可能,但肯定是不可取的。

如果您想对github软件包进行更改,可以将其下载到本地计算机并执行npm link,以便它使用您的本地软件包而不是npm上的软件包。请阅读https://docs.npmjs.com/cli/link了解更多信息。


0
为什么不使用简单的命令?
  meteor npm install https://github.com/nolandg/Semantic-UI-React.git

我做了:

  meteor create test
  cd test
  meteor npm install
  meteor add react react-dom
  meteor npm install https://github.com/nolandg/Semantic-UI-React.git
  meteor

没有错误 (-:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接