2013流星NPM包(2013 Meteor NPM Packages)

2019-07-22 20:03发布

更新 该解决方案介绍了如何有效地使用新的NPM系统流星。


什么是流星使用NPM包电流的方法?

截至2013年3月22日,有没有这方面的正式文件。

大约有这几个问题,特别是这一个 ,但是解决方案似乎已经过时:发动机分公司不再存在,我一直没能找到任何东西Npm.require流星。

另一种解决方案, 贴在这里 ,指示安装到.meteor/建立文件夹。 正如我安装到Heroku的,这似乎并不像一个有效的解决方案,因为buildpack使用meteor bundle运行前捆绑程序。 因此,临时文件夹的建立似乎并不像一个有效选项。

发生了什么事NPM的流星? 什么是使用NPM包的最新方法是什么?

在一个相关的说明,我试图使用Amazon SDK(对于S3) -它会更好,只是打包为一个陨石包呢?

Answer 1:

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');



Answer 2:

流星使用的NPM的当前方式

  1. 替换下面的NPM名称X的
  2. 将文件放在下面勾勒出/流星项目根/包/ X /
  3. 流星新增X
  4. 要使用它只需调用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"]);
});

注意:有些包只能在客户端或服务器的工作,如果您有问题,请尝试只包括你要使用它的侧面。



Answer 3:

我一直在使用神奇的“ browserify ”,它就像一个魅力。 这是使用一种替代Arunda的NPM气氛包 ,或使用与Npm.require package.js ,即可以说是具有一些优点:

  1. 我的代码可以使用普通的旧“规定”的,而不是Npm.require或Meteor.require。 显然,这不是一个大问题,但如果我想使用此代码外流星这是很好的感觉它不依赖于流星。
  2. 我不担心流星是否会再一次改变它再想着NPM整合的方式。
  3. 它允许我使用的使用NPM链接我自己的NPM模块本地开发的版本。

下面是它如何工作的:

  1. 我在一个隐藏文件夹.npm创建NPM依赖一个单独的项目
  2. 我用browserify创建将被流星加载的bundle.js
  3. 我用咕噜手表,以确保每次我安装一个新的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...


Answer 4:

您可以使用https://atmospherejs.com/meteorhacks/npm

meteor add meteorhacks:npm

然后你可以设置你的package.json文件:

{
  "redis": "0.8.2",
  "github": "0.1.8"
}

而使用这些包:

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


Answer 5:

因为使用的是陨石,当你安装一个节点模块.meteor/local/build/server/在实际安装到

~/.meteorite/meteors/meteor/meteor/f07715dc70de16a7aab84e56ab0c6cbd9c1f9dc6/dev_bundle/lib/node_modules

当您使用mrt bundle来创建部署捆绑,附加软件包捆绑获得,以及。

我还没有尝试过在Heroku,但我检查了节点模块被使用地铁束时包装。



文章来源: 2013 Meteor NPM Packages