如何从 GitHub 为 Meteor 安装 NPM 包?

Posted

技术标签:

【中文标题】如何从 GitHub 为 Meteor 安装 NPM 包?【英文标题】:How to install NPM package from GitHub for Meteor? 【发布时间】:2017-04-13 01:55:00 【问题描述】:

我在 GitHub 上 fork 了一个 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 包?我想不通这个。谢谢!

流星版本:1.4.2.3

【问题讨论】:

从 GitHub fork 获取 npm 包应该没有任何问题。你所描述的是这样做的正确方法。你可能在其他地方有错误,或者在你的 fork 代码中。 我已经放弃了。 Meteor 构建链一定有什么问题吗? npm 安装包,但 Meteor 解析器似乎没有找到它。 :-( 【参考方案1】:

从 git 获取包时无法工作的主要原因是它没有配置为以这种方式工作。这不是 Meteor 特有的问题,而是 JS 开发者有时可能会遇到的问题。

对于这种特殊情况有两个问题:

package.json中的白名单files字段仅包含srcdist文件夹。这意味着当您通过 npm 获取它时,几乎所有构建代码所需的配置文件都消失了。 需要构建此包的代码才能使用您的代码。这是在作者将其发布到 npm 时完成的,但您直接从 github 获取它,因此此步骤被撤消。

因为你已经修改了这个包,所以修改package.json如下(把我加的所有cmets都给你解释一下),push到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"
,
// ...

【讨论】:

【参考方案2】:

包通常不是从 github 安装的,它们是发布的,这意味着一个包有很多版本,你可以选择你得到的。我不确定你正在做的事情是否可行,但这肯定是不可取的。

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

【讨论】:

【参考方案3】:

为什么不用简单的命令?

  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

并且没有错误(-:

【讨论】:

以上是关于如何从 GitHub 为 Meteor 安装 NPM 包?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确安装 Meteor-Up (mup)?

在 Meteor 运行时,如何从另一个客户端访问 Meteor 的 MongoDB?

如何测试 Meteor 应用程序? [关闭]

如何从 Meteor 模板助手返回模板?

如何使用 NPM 和 Meteor 获取 css 文件?

当我们从 Mongo 控制台更新集合时,Meteor Apollo 没有更新 UI