簡體   English   中英

Aurelia從具有外部依賴關系的插件中捆綁組件

[英]Aurelia bundling components from plugins with external dependencies

我很難捆綁使用Aurelia用打字稿編寫的自定義插件。 似乎總是從node_modules獲取類。 如果可以,我可以忍受,但是后來我意識到使用外部庫的所有組件都根本不會加載。 例如,我有一個對話框組件,該組件使用從未加載的aurelia-dialog,即使在將該組件從/ src文件夾移至外部插件之前,該組件運行良好,也沒有任何錯誤或控制台上的任何內容。

供參考,由打字稿編譯生成的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

和我的aurelia.json中的vendor-bundle下的include看起來像這樣:

{“名稱”:“ sam-aurelia”,“路徑”:“ ../ node_modules / sam-aurelia / src”,“ main”:“索引”}

所以我的問題是:有誰知道當這些組件來自插件時,什么原因導致它們無法加載?

獎勵問題:

  • 我該如何調試這類問題?
  • 為什么我的組件是從node_modules中獲取的,而沒有捆綁在vendor-bundle中?
  • 是否有一種簡單的方法可以在開發過程中禁用捆綁功能,以加快“編譯”時間並簡化調試?

謝謝!

編輯以解釋我的解決方案

抱歉,我還沒有捆綁禁用或加載調試的解決方案。 如下面的答案所述,在我的軟件包的配置中(在aurelia.json中)將'stub'選項設置為'true'可以防止html / css文件的捆綁。 似乎添加全局文件來加載這些文件也有所幫助。 第二個問題是因為我沒有在插件的索引中導出某些組件。 當我為這些組件添加導出文件時,html文件已正確捆綁。 最后,與這些最后的文件有關,這些文件包括一個外部插件。 我注意到瀏覽器嘗試從node_modules / plugin / src / index.html加載其html模板。 我想這是由於它們是通過索引文件公開的,所以aurelia嘗試獲取與索引相關的模板。 將這些文件添加到globalresources可以解決此問題(盡管我不確定為什么會這樣)。

我現在可以走了,盡管我可能會花一些時間將代碼放在單獨的模塊中,看看是否真的有必要將組件添加到globalresources中。

任何全球資源都需要導出以進行跟蹤(空狀態和工具欄)。 如果您有非js文件,則需要將它們添加到aurelia.json中的resources數組中:

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

並且:

"stub": false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM