2016-10-03 14 views
2

我有一個javascript項目,在另一個項目中用作實用程序,我想使用npm將其打包,以便更多項目可以使用它。我創建的項目結構爲:使用npm封裝javascript項目並將其劃分爲節點模塊以創建依賴關係樹

 
Project/ 
|-- src/ 
| |-- main.js 
| |-- index.js 
| 
| |-- extensions/ 
| | |-- core-1.js 
| | |-- ... 
| | |-- core-n.js 
| | |-- other-1.js 
| | |-- ... 
| | |-- other-n.js 
| | 

主文件創建一個對象,其中包含一些擴展使用的實用函數。 index.js文件從擴展名和主文件中獲取所有對象和函數,並將其放入單個名稱空間以導出它。我想要的是當任何人安裝這個節點模塊時,他們應該能夠使用主文件和核心擴展中的實用程序。如果他們想要使用其他擴展,他們應該有能力明確地要求其他擴展。爲其他具有依賴關係的擴展創建單獨的節點項目是一個好主意嗎?還是有沒有其他方式提供的npm或節點來實現這一目標?

回答

1

當您做require("<your-module>")時,默認情況下,node.js會在您的package.jsonindex.js中加載main屬性中提及的文件。有一種方法可以從特定的包中加載單個文件。在您的模塊名稱前加上斜線後,只需附加您的文件路徑即可。

在您的例子擴展可以單獨加載像這樣

var u1 = require("Project/src/extensions/other-1"); 
var u2 = require("Project/src/extensions/other-2"); 
分別

只有other-1other-2擴展將變量加載u1u2

您應確保在index.jsmain.js中加載了相應的文件。

下面是一個例子節點模塊https://github.com/juzerali/require-demo

您應該試着安裝項目爲節點模塊,並嘗試玩它,瞭解它是如何工作的。

+1

謝謝,我試過這種方法,它對我很好。只需要注意我的擴展取決於核心,所以我必須在擴展文件中要求核心。 – Yusufali2205