更新 该解决方案介绍了如何有效地使用新的NPM系统流星。
什么是流星使用NPM包电流的方法?
截至2013年3月22日,有没有这方面的正式文件。
大约有这几个问题,特别是这一个 ,但是解决方案似乎已经过时:发动机分公司不再存在,我一直没能找到任何东西Npm.require
流星。
另一种解决方案, 贴在这里 ,指示安装到.meteor/
建立文件夹。 正如我安装到Heroku的,这似乎并不像一个有效的解决方案,因为buildpack使用meteor bundle
运行前捆绑程序。 因此,临时文件夹的建立似乎并不像一个有效选项。
发生了什么事NPM的流星? 什么是使用NPM包的最新方法是什么?
在一个相关的说明,我试图使用Amazon SDK(对于S3) -它会更好,只是打包为一个陨石包呢?
Arunoda已经创建了一个NPM大气包 ,允许你使用任何NPM模块就像你已经习惯了。 这是非常简单的。
首先, mrt add npm
。
您也可以通过使用安装程序包meteor-npm
命令从npm install -g meteor-npm
。
接下来,使packages.json
在你的项目根目录的文件,与包名和版本:
{
"foobar": "0.3.5",
"loremipsum": "2.1.4"
}
最后,使用将它们与Meteor.require
,像这样: var FooBar = Meteor.require('foobar');
流星使用的NPM的当前方式
- 替换下面的NPM名称X的
- 将文件放在下面勾勒出/流星项目根/包/ X /
- 流星新增X
- 要使用它只需调用X在你的代码(X.function())
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气氛包 ,或使用与Npm.require package.js ,即可以说是具有一些优点:
- 我的代码可以使用普通的旧“规定”的,而不是Npm.require或Meteor.require。 显然,这不是一个大问题,但如果我想使用此代码外流星这是很好的感觉它不依赖于流星。
- 我不担心流星是否会再一次改变它再想着NPM整合的方式。
- 它允许我使用的使用NPM链接我自己的NPM模块本地开发的版本。
下面是它如何工作的:
- 我在一个隐藏文件夹.npm创建NPM依赖一个单独的项目
- 我用browserify创建将被流星加载的bundle.js
- 我用咕噜手表,以确保每次我安装一个新的NPM包,bundle.js更新
这里是我的目录结构:
my_meteor_project/
lib/
bundle.js
.npm/
node_modules
README.md
Gruntfile.js
entrypoint.js
package.json
下面是entrypoint.js的例子(不幸的是我必须使用全局变量,这样断言,URL和_流星代码可用)
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']);
};
然后我用咕噜手表要监视更改到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,但我检查了节点模块被使用地铁束时包装。