2015-11-11 104 views
0

我正在创建流星应用程序,并且我决定将它分离为软件包,以便我可以控制文件加载顺序。然而,许多软件包具有共同的依赖性(其他外部软件包),例如reactmeteorhacks:flow-router。我想创建主要的myapp:app包与所有这些依赖关系,我的应用程序中的其他包将暗示。用于在meteor.js中汇总外部软件包的软件包

这是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

直接回答你的问题,没有imply不公开reactmyapp: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

相关问题