目前在Meteor中使用NPM包的首选方式是什么?

时间:2014-07-03 00:51:03

标签: meteor

当我在Meteor项目中使用NPM软件包时,一些研究提出了这个方案:

https://github.com/arunoda/meteor-npm/

基本上你只需要将软件包安装到你的meteor项目的根文件夹中,然后包含:

var GithubApi = Meteor.require('github');

这就是我正在做的事情,它在我的本地主机上工作正常。然后我尝试上传到Meteors测试服务器并且它一直崩溃,因为它无法使用这种方法加载我的异步模块,这种方法正在我的本地工作。问题是在根目录中有node_modules文件夹,导致应用程序在流星服务器上崩溃。但是为了使用Meteor.require来包含软件包,这就是他们必须要去的地方。

所以我必须按照此主题中的说明来解决问题:

How can I deploy node modules in a Meteor app on meteor.com?

此方法要求我将包安装到/ public文件夹中。然后我必须使用以下代码来包含该包:

  path = Npm.require("path")
  fs = Npm.require("fs")
  base = path.resolve(".")
  isBundle = fs.existsSync(base + "/bundle")
  modulePath = base + ((if isBundle then "/bundle/static" else "/../client/app")) + "/node_modules/"
  async = Npm.require(modulePath + "async")

该主题来自2012年,所以我想知道目前在服务器上包含NPM模块的最佳做法是什么?

我可以在客户端目录中包含一个bundle.js浏览器文件,在客户端上包含npm模块,这样就解决了我的问题,但是npm使用服务器端的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

您的应用程序中不应包含node_modules文件夹。在大多数情况下,如果这样做,它甚至不能在开发模式下工作。

相反,您应该只在packages.json文件中列出必要的包(如npm package documentation中所述),并让npm将它们作为依赖项进行管理。