用于在meteor.js中聚合外部包的包

时间:2015-11-11 12:06:41

标签: meteor meteor-packages meteor-react

我正在创建meteor应用程序,我决定将其分成包,因此我可以控制文件加载顺序。 但是,许多包具有公共依赖关系(其他外部包),如reactmeteorhacks:flow-router。我想创建包含所有这些依赖项的主myapp:app包,我的应用程序中的其他包将暗示。

这是app package.js:

Package.describe({
    name: 'myapp:app',
    version: '0.0.1'
});


Package.onUse(function(api) {
    api.versionsFrom('1.2.1');

    // All external packages that will be used by other local packages
      api.use([
          'twbs:bootstrap',
      ], 'client');

      api.use([
          'ecmascript',
          'react',
          'meteorhacks:flow-router'
      ], ['client', 'server']);
});

我的包myapp:taskslist暗示myapp:app

Package.describe({
    name: 'myapp:taskslist',
    version: '0.0.1'
});

Package.onUse(function(api) {
    api.versionsFrom('1.2.1');

    api.imply(['myapp:app']);

    api.addFiles([
        'client/tasksList.jsx',
        'client/task.jsx',
        'main.jsx'
    ], ['client']);
});

然而它并不起作用。我有一个错误No plugin known to handle file 'client/taskList.jsx',因为myapp:tasksList没有安装react插件。我不应该api.imply()分享reactmyapp:tasksList个套餐吗?这个问题有什么好的解决方案?

1 个答案:

答案 0 :(得分:1)

要直接回答您的问题,imply不会将react公开给myapp:tasksList

你需要这样想:

IMPLY passes references OUT
USE takes references IN

myapp:tasksList所做的所有暗示都是允许myapp:tasksList使用myapp:app的任何用途。

为了让您在myapp:app中使用myapp:tasksList(及其公开的所有引用),您还需要添加

  api.use([
      'myapp:app',
  ]);

myapp:tasksList