我可以为单个平台添加流星包吗?

时间:2015-01-27 14:07:47

标签: javascript cordova meteor

我想在我的meteor项目中添加一个包(ground:db),但它只会用在cordova版本中。如果它不会使Web构建中的资产混乱,那就太好了。

这可能吗?

我已经检查了流星添加的文档但没有那里的欢乐。

2 个答案:

答案 0 :(得分:1)

Here是来自地面数据库的package.js.

尝试将api.addFiles替换为此。

api.addFiles([
    'groundDB.client.js',
    'wrap.collection.js',
    'wrap.eventemitter.js',
    'wrap.proto.eventemitter.js',
    ], 'web.cordova');
  api.addFiles('groundDB.server.js', 'web.cordova');
});

从此Github Question检查此额外信息。

Inside a package today you can do:

api.addFiles('foo.js', 'web.cordova'): includes foo.js in only Cordova/Phonegap builds.
api.addFiles('bar.js', 'web.browser'): includes bar.js in only browser builds.
api.addFiles('baz.js', 'web'): includes baz.js in all client builds.
and also:

api.use('foo:bar', 'web.cordova'): using the package API in only Cordova/Phonegap builds.
api.use('foo:bar', 'web.browser'): using the package API in only browser builds.
api.use('foo:bar', 'web'): using the package API in all client builds.

检查它是否有效。

答案 1 :(得分:1)

你必须制作一个新的包来做这件事,继续快速一步一步地做你想做的事:

1)如果项目中没有packages文件夹,请创建一个

2)创建一个目录,以便packages/mobileapp

3)在mobileapp目录中创建一个包含以下内容的package.js

Package.describe({
   summary: "For cordova use only",
});

Package.on_use(function (api) {
    if(api.versionsFrom) api.versionsFrom("METEOR@1.0");

    api.use(['ground:db'], ['web.cordova']);
});

然后在meteor的根目录中运行

meteor add mobile

这将确保ground:db包只添加到您的cordova版本中。 Web构建中不会包含任何源代码。

您还可以使用api.add_files Package.on_use作为架构,使用web.cordova方法将文件添加到包中,这样只有您在此处列出的文件才会包含在cordova版本中,但不会网络应用程序构建。

使用if(Meteor.isCordova)执行此操作的好处是,您不会在Web构建中包含任何不必要的源代码,这有时会使您的Web应用程序