[英]2013 Meteor NPM Packages
更新 此解决方案描述了如何在Meteor中有效使用新的Npm系统。
目前在Meteor中使用NPM包的方法是什么?
截至2013年3月22日,没有关于此的官方文档。
关于这一点有几个问题,特别是这个问题,但解决方案似乎已经过时了:引擎分支已不复存在,而且我无法在Meteor的Npm.require
上找到任何内容。
此处发布的另一个解决方案是指示安装到.meteor/
build文件夹中。 当我安装到Heroku时,这似乎不是一个有效的解决方案,因为buildpack使用meteor bundle
捆绑程序,然后再运行它。 因此,临时构建文件夹似乎不是一个有效的选项。
流星中的Npm发生了什么? 使用Npm包的最新方法是什么?
在相关的说明中,我正在尝试使用亚马逊SDK(针对s3) - 将它打包为陨石包更好吗?
Arunoda 创建了一个NPM Atmosphere软件包 ,允许您像以前一样使用任何NPM模块。 这很简单。
首先, mrt add npm
。
您也可以使用npm install -g meteor-npm
meteor-npm
命令安装软件包。
接下来,使用包名称和版本在根项目目录中创建packages.json
文件:
{
"foobar": "0.3.5",
"loremipsum": "2.1.4"
}
最后,将它们与Meteor.require
一起使用,如下所示: var FooBar = Meteor.require('foobar');
目前在流星中使用NPM的方法
x.js --------
X = Npm.require('x');
package.js --------
Package.describe({
summary: "Meteor smart package for x node.js package"
});
Npm.depends({
"x": "0.1.1"
});
Package.on_use(function (api) {
api.add_files("x.js", ["client", "server"]);
});
注意:某些软件包只能在客户端或服务器上运行,如果遇到问题,请尝试仅包含您要使用它的一方。
我一直在使用梦幻般的“ browserify ”,它就像一个魅力。 这是使用Arunda 的NPM Atmosphere包 ,或者使用带有package.js的Npm.require的替代方案,可以说有一些优点:
以下是它的工作原理:
这是我的目录结构:
my_meteor_project/
lib/
bundle.js
.npm/
node_modules
README.md
Gruntfile.js
entrypoint.js
package.json
这是一个entrypoint.js的例子(遗憾的是我必须使用全局变量,以便断言,url和_在Meteor代码中可用)
assert = require('assert');
url = require("url");
_ = require('underscore');
这是gruntfile:
module.exports = function(grunt) {
grunt.initConfig({
watch: {
build: {
files: ['./entrypoint.js', './package.json'],
tasks: ['browserify2'],
options: {
}
}
},
browserify2: {
compile: {
entry: './entrypoint.js',
compile: '../lib/bundle.js'
}
},
});
grunt.loadNpmTasks('grunt-browserify2');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('build', ['browserify2']);
};
然后我使用grunt watch来监视entry.js或新NPM安装的更改
$ cd .npm
$ grunt watch:build &
[2] 44617
$ Running "watch:build" (watch) task
Waiting...
然后如果我安装了一个npm模块,或者修改了entrypoint.js,就会更新bundle.js:
$ npm install url -save
npm http GET https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/querystring
npm http 304 https://registry.npmjs.org/punycode
npm http 304 https://registry.npmjs.org/querystring
url@0.7.9 node_modules/url
├── querystring@0.1.0
└── punycode@1.0.0
$ OK
>> File "package.json" changed.
Running "browserify2:compile" (browserify2) task
File written to: ../lib/bundle.js
Done, without errors.
Completed in 1.256s at Thu Jul 11 2013 11:36:22 GMT-0600 (MDT) - Waiting...
您可以使用https://atmospherejs.com/meteorhacks/npm
meteor add meteorhacks:npm
然后你可以设置你的package.json文件:
{
"redis": "0.8.2",
"github": "0.1.8"
}
并使用这些包:
var GithubApi = Meteor.npmRequire('github');
当您使用陨石时,将节点模块安装到.meteor/local/build/server/
实际安装到
~/.meteorite/meteors/meteor/meteor/f07715dc70de16a7aab84e56ab0c6cbd9c1f9dc6/dev_bundle/lib/node_modules
当您使用mrt bundle
创建部署包时,其他包也会捆绑在一起。
我没有在Heroku上尝试过,但我检查了节点模块在使用mrt bundle时被打包了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.