meteor.js 中用于聚合外部包的包
Package for aggregating external packages in meteor.js
我正在创建 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
包吗?这个问题有什么好的解决方案?
直接回答你的问题,没有imply
不会把react
暴露给myapp:tasksList
你需要这样想:
IMPLY passes references OUT
USE takes references IN
myapp:tasksList
中的所有含义是允许使用 myapp:tasksList
的任何人访问 myapp:app
.
为了让您在 myapp:tasksList
中使用 myapp:app
(以及它公开的所有引用),您还需要添加
api.use([
'myapp:app',
]);
到myapp:tasksList
我正在创建 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
包吗?这个问题有什么好的解决方案?
直接回答你的问题,没有imply
不会把react
暴露给myapp:tasksList
你需要这样想:
IMPLY passes references OUT
USE takes references IN
myapp:tasksList
中的所有含义是允许使用 myapp:tasksList
的任何人访问 myapp:app
.
为了让您在 myapp:tasksList
中使用 myapp:app
(以及它公开的所有引用),您还需要添加
api.use([
'myapp:app',
]);
到myapp:tasksList