2017-01-31 33 views
0

我正在尋找最佳方式來安排我的代碼庫與不同項目之間共享的公共資源。我有三個aurelia應用程序。在每一個資源文件夾中添加了一些資源(自定義元素,屬性等)。當我需要一個已經寫在另一個項目中時,我只是貼了它。現在我有時間重新考慮了,我想將所有這些資源移動到專用存儲庫中。然後,我希望能夠在每個項目中只選擇我需要的資源。Aurelia外部資源

我試過把我所有的資源都放在一個repo中,用aurelia框架中的gulp構建任務,它允許我構建所有模塊的AMD模塊。然後,我可以通過在aurelia.json中添加它們來單獨加載一些模塊。對於爲例一個屬性:

{ 
    "name": "aurelia-resources-progress-button", 
    "path": "../node_modules/SHG-aurelia-resources/dist/amd/resources/attributes", 
    "main": "progress-button" 
} 

或自定義元素:

{ 
    "name": "aurelia-resources-avatar-upload", 
    "path": "../node_modules/SHG-aurelia-resources/dist/amd/resources/elements/avatar-upload", 
    "main": "avatar-upload", 
    "resources": [ 
    "avatar-upload.html", 
    "avatar-upload.css" 
    ] 
} 

它像一個風情萬種,但它失敗的值轉換器,它從相對路徑導入模塊。 該文件位於:

"projectRoot/node_modules/SHG-aurelia-resources/dist/amd/resources/value-converters/duration-format.js", it import from '../utils./strings'

我是說我AU運行出現以下錯誤:

"Error: ENOENT: no such file or directory, open '/Users/hadrien/Documents/dev/SportHeroes/united-heroes/src/resources/utils/strings.js'".

奇怪的是,當我需要一個相對模塊從一個模板(就像在我的進度按鈕自定義屬性中)沒有問題。

我不想製作插件,因爲我不想加載我的回購的每個模塊。我想,如果可能的話,將能夠設置.feature ('../node_modules/path/resources')並加載它們就像我加載我的本地資源。

我該怎麼辦?

+0

爲什麼你不希望使用的插件嗎?插件和功能的API幾乎相同。您已經通過NPM包分發資源,因此正確的方法是通過插件API。 –

+0

因爲我不想加載每個模塊。想象一下,我的外部資源中有10個模塊。應用程序A使用10,我可以使用插件。但是App B只使用2個模塊,我只想加載這兩個模塊。 –

+0

使用插件時,您不必「加載每個模塊」。 –

回答

1

我正在回答上述評論中重寫的問題。

如果您有一個npm軟件包,您可以使用require元素簡單地從它請求資源。這個npm包可以將自己打包爲一個插件,你只需選擇不加載它,因爲你只需要一個子集來提供它所提供的東西。

我創建了一個組顯示這一關樣本項目:https://github.com/AshleyGrant/sample-app-so41961759

此應用程序對https://github.com/AshleyGrant/sample-resources-so41961759/

這種依賴性包本身作爲一個插件的依賴,但它也可以作爲零碎消費我在應用程序中只使用插件所具有的兩個資源之一。請注意,其他資源未加載,因爲我沒有使用它。

這是什麼樣子的應用程序,當我在一個資源拉從依賴內:

<template> 
    <require from="sample-resources-so41961759/custom-elements/my-echo"></require> 
    <h1>${message}</h1> 

    <my-echo say="Echo!"></my-echo> 
</template> 
+0

好的,但我必須爲每個模塊創建任何新的存儲庫,所以。我正計劃將它們全部放入一個存儲庫中... –

+0

我發佈的存儲庫中有兩個資源。您可以在回購中放入儘可能多的資源。 –

+0

好了,但如果我的應用程序只需要'MyEcho'我將加載,將在供應商的包事件加上'MyShow'太多,如果我不使用它的插件。 如果我不想讓我的資源全球化?如果我想要從'sample-resources-so41961759/custom-elements/my-echo'這樣的包名稱的相對路徑中輸入/導入它們? –