Aurelia将插件中的组件与外部依赖关系捆绑在一起

时间:2017-02-13 10:14:21

标签: plugins module bundle aurelia

我很难用Aurelia捆绑使用打字稿编写的自定义插件。它似乎总是从node_modules中获取类。我可以忍受,如果它工作但我后来意识到所有使用外部库的组件从未加载过。 例如,我有一个对话框组件,它使用永远不会被加载的aurelia对话框,我在控制台上没有任何错误或任何错误,即使这个组件在我从/ src文件夹移动到外部插件之前运行良好

作为参考,typescript编译生成的index.js如下所示:

    define(["require", "exports", "./ui/dialog-box", "./ui/message-box", "./attributes/active"], function (require, exports, dialog_box_1, message_box_1, active_1) {
    "use strict";
    exports.DialogBox = dialog_box_1.DialogBox;
    exports.MessageBox = message_box_1.MessageBox;
    exports.ActiveCustomAttribute = active_1.ActiveCustomAttribute;
    function configure(config) {
        config.globalResources(['./ui/empty-state', './ui/tool-bar']);
    }
    exports.configure = configure;
});
//# sourceMappingURL=index.js.map

和vendor-bundle下的aurelia.json中的include看起来像这样:

{         "姓名":" sam-aurelia",         "路径":" ../ node_modules / sam-aurelia / src",         "主要":"索引"       }

所以我的问题是: 有没有人知道什么可能导致这些组件来自插件时不加载?

奖金问题:

  • 如何调试这类问题?
  • 为什么我的组件是从node_modules获取的,而不是捆绑在vendor-bundle中?
  • 是否有一种简单的方法可以在开发过程中禁用捆绑,以加快编译速度。时间和轻松调试?

谢谢!

编辑解释我的解决方案

抱歉,我还没有解决捆绑禁用或加载调试的问题。如下面的答案中所述,设置' stub'选项' true'在我的bundle的配置(在aurelia.json中)阻止了html / css文件的捆绑。而且似乎添加了glob来加载这些文件也有帮助。 第二个问题来自于我没有在插件的索引中导出一些组件。当我为这些组件添加导出时,html文件被正确捆绑。 最后,与这些包含外部插件的最后文件相关。我注意到浏览器试图从 node_modules / plugin / src / index.html 加载他们的html模板。我想这是因为它们是通过索引文件公开的,所以aurelia试图让它们的模板与索引相关。将这些文件添加到全局资源可以解决问题(虽然我不确定为什么会这样)。

我现在很高兴,虽然我可能会花一些时间将我的代码放在单独的模块中,看看是否真的有必要将组件添加到globalresource ...

1 个答案:

答案 0 :(得分:1)

需要导出任何全局资源进行跟踪(空状态和工具栏)。 如果您有非js文件,则需要将它们添加到aurelia.json中的资源数组中:

{
    "name": "sam-aurelia",
    "path": "../node_modules/sam-aurelia/src",
    "main": "index",
    "resources": ["**/*.{html,css}"]
}

还有:

"stub": false