如何从GitHub为Meteor安装NPM包?

时间:2016-11-29 07:02:02

标签: meteor npm

我在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软件包?我无法想出这个。谢谢!

流星版:1.4.2.3

3 个答案:

答案 0 :(得分:3)

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

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

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

因为你已经在民间并修改了包,所以让我们修改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"
},
// ...

答案 1 :(得分:0)

通常不会从github安装软件包,它们是已发布的,这意味着可以使用许多版本的软件包,您可以选择所获得的软件包。我不确定你所做的事情是否可行,但这肯定是不可取的。

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

了解详情

答案 2 :(得分: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

没有错误( - :