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

Can I add a meteor package for a single platform

我想将单个包 (ground:db) 添加到我的 meteor 项目中,但它只会在 cordova 构建中使用。因此,如果它不会弄乱 Web 构建上的资产,那就太好了。

这可能吗?

我已经检查了 meteor add 的文档,但没有任何乐趣。

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) 如果您的项目中没有 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 add mobile

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

您还可以使用 api.add_filesweb.cordova 作为体系结构在 Package.on_use 方法中将文件添加到包中,这样只有您在此处列出的文件才会包含在 cordova 构建中但不是 Web 应用程序构建。

与使用 if(Meteor.isCordova) 相比,这样做的好处是您不会在 Web 构建中包含任何不必要的源代码,这有时可以使您的 Web 应用