我正在创建meteor应用程序,我决定将其分成包,因此我可以控制文件加载顺序。
但是,许多包具有公共依赖关系(其他外部包),如react
或meteorhacks: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()
分享react
到myapp:tasksList
个套餐吗?这个问题有什么好的解决方案?
答案 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