我们如何或可以通过 npm 和 Meteor 使用节点module?
Meteor 1.3于 2016 年 3 月 28 日发布,为应用程序提供完整的 ES6 (ES2015) module支持和开箱即用的 NPM 支持。应用程序和包现在可以直接轻松地在客户端和服务器上加载 NPM module。
如果您可以使用 1.3,请检查http://guide.meteor.com/using-packages.html#installing-npm。
例如,使用moment.js:
meteor npm install --save moment
然后在你的代码中:
import moment from 'moment';
// this is equivalent to the standard node require:
const moment = require('moment');
如果您需要使用旧版本的 Meteor,请阅读下面的其余答案。
Pre-Meteor 1.3:
从 v0.6.0 开始,Meteor在 3rd 方包的帮助下直接与 NPM module集成。例如,要使用像这样的modulews
,
- 运行
sudo npm install -g ws
(或对于本地安装,请参阅此) 在您的服务器 JavaScript 文件中,
var Websocket = Npm.require('ws'); var myws = new Websocket('url');
要使用核心节点module,只需进行相应的Npm.require()
调用,例如var Readable = Npm.require('stream').Readable
.
借助 Arnoda 开发的NPM 包,您可以将超过230,000 个 NPM module中的任何一个直接与 Meteor一起使用。
您还可以从智能包中定义对 Npm 包的依赖——从npm 支持的最初声明开始:
您的智能包现在可以通过添加对Npm.depends
in的调用来直接定义依赖项package.js
:
Npm.depends({
"awssum": "0.12.2",
"underscore.string": "2.3.1"
});
所有这些都适用于热代码重新加载,就像 Meteor 的其余部分一样。当您进行更改时,捆绑程序将自动下载缺少的 npm 包并重新固定其依赖项。
要在服务器代码中使用 NPM module,请Npm.require
像通常使用普通require
. 值得注意的是,__meteor_bootstrap__.require
已被淘汰,其所有用途均已转换为Npm.require
.
请注意,此答案适用于 0.6.0 之前的 Meteor 版本,该版本于 2013 年 4 月发布并添加了直接
npm
集成
像往常一样安装modulenpm
,然后使用
var require = __meteor_bootstrap__.require,
pd = require("pd"),
after = require("after") // etc
加载任何你想要的module
我在 Meteorpedia 上写了一篇完整的文章:
http://www.meteorpedia.com/read/npm
本文介绍了如何在您的应用程序和/或包中使用 npm,以及用于包装常规回调和事件发射器回调以在 Meteor 和 Fibers 中正常工作的常见模式,并包括对 Arunoda 的异步实用程序和其他资源的引用。
您可以使用Meteor Npm包
meteor add meteorhacks:npm
然后packages.json
在项目的根目录中创建一个包含 NPM module信息的文件。
{
"redis": "0.8.2",
"github": "0.1.8"
}
然后就像(服务器端)一样简单
var github = Meteor.npmRequire("github");
var redis = Meteor.npmRequire("redis");
所以你只需使用Meteor.npmRequire
代替require
我写了一篇关于如何从 Meteor 0.6.5 开始执行此操作的要点,如何将 Node.js npms 添加到您的 Meteor.js 项目。