2013-05-18 95 views
1

我想我的第一個模塊發佈到NPM,它呈現降價與EJS模板,它使用標誌着其他兩個NPM模塊和EJS,我有這些在我的package.json文件相關。我有一個.gitignore文件,其中包含我的node_modules目錄以及一個.npmignore文件,該文件爲空。如何在發佈到NPM時包含其他NPM模塊?

我已成功發佈到npm。

然而,當我嘗試把它變成一個測試應用程序的package.json,做npm install -d它安裝到安裝我的模塊,但它不安裝它的依賴,如果我進入測試程序根node_modules目錄,然後進入我的新發布的模塊的安裝目錄,它沒有安裝任何它的依賴項,它沒有自己的嵌套的node_modules目錄。

應該有辦法讓我的模塊的依賴關係安裝正確,當我將express作爲依賴包時,它會安裝自己的node_modules文件夾,並且安裝了connect和其他模塊,我想和其他兩個模塊一樣npm模塊。

我知道它是否會安裝其嵌套node_modules依賴它的工作,我這樣做時,它的工作原理。

$ npm install -d 
$ cd node_modules/my_module 
$ npm install -d 
$ cd ../.. 
$ node app 

編輯:這裏是對GitHub repo一個鏈接,我的模塊,而這裏是package.json

編輯:注意,這僅僅發生在我有我的依賴標記EJS已經安裝在我的測試應用程序。當我然後安裝我的模塊時,它沒有在其自己的node_modules目錄中安裝標記和ejs。但是,如果我從測試應用程序中刪除所有模塊並只安裝我的模塊,它將安裝它們。無論如何,無論我的依賴項是否已經事先安裝,它都能正常工作。

+0

你可以發佈'package.json'內容嗎? –

+0

@AlbertoZaccagni添加鏈接 –

+2

我剛安裝了你的包,結果被安裝了所有DEPS ... NPM 1.2.18和節點v0.10.6 –

回答

1

它應該都是「正常工作」。

NPM不安裝任何新的模塊,因爲它認爲目前已經處於較高的水平在node_modules目錄中相應的模塊。由於節點的require將查找樹中,嘗試爲每個目錄的node_modules subdir,您的模塊的require語句將工作,沒有它自己的node_modules目錄。

如果要安裝在不已經安裝了正確的依賴任何地方的模塊,他們將模塊自身node_modules目錄下安裝。阿爾貝託證實了這一點。

你可能想,雖然指定的package.json依賴的一個更具體的版本。這將確保您的模塊可以使用您測試過的依賴項的版本。

+0

閱讀完本文後,我再對它進行了搗亂,再次卸載了所有的依賴關係,安裝了它們,它按照您的說法工作。不知道之前有什麼錯。它無法要求模塊。 –

相關問題