如何在安裝前在我的npm軟件包中更新非-npm-packagegit-submodules包?在npm軟件包中使用非npm-git子模塊
我正在使用git並且有一個node.js模塊,它依賴於也託管在git存儲庫中的外部項目。我將外部項目添加爲子模塊,現在我試圖製作一個npm包。
由於外部的依賴是不是NPM包(也不是一個節點模塊),我想我不能使用npm submodule
命令,所以我在package.json
文件提出了this前腳本:
"scripts": { "preinstall" : "git submodule update --init"}
當我在包目錄下執行npm install
,它工作正常,但是當我試圖直接從我的遠程git倉庫或npm pack
作出的壓縮包安裝包,我得到以下錯誤:
You need to run this command from the toplevel of the working tree.
我也試過(如錯誤消息說):
"scripts": { "preinstall" : "cd $(git rev-parse --show-toplevel) && git submodule update --init"}
這一個不顯示任何錯誤,但也不會更新包目錄中的子模塊。
任何幫助,將不勝感激。
你確定所提取的包不有'.git'目錄?如果是這樣,我應該能夠在那裏啓動'git'回購,因爲'.gitmodules'已經存在,我可以簡單地更新git'submodules'。 – fardjad 2013-03-08 10:00:53
我確定.git不是'npm pack'生成的檔案文件的一部分。運行'git init'可能會起作用。值得一試。作爲npm消費者,我不確定我想爲給定版本獲得不同的代碼,但是如果這是供您自己使用的,並且您沒有問題,那麼確定。 – 2013-03-08 10:17:37
我試過'git init',它初始化了一個空的git倉庫。但我不得不再次手動添加子模塊;似乎在repository中有'.gitmodules'對於'git'來識別'submodules'是不夠的。最後,我將我的軟件包預安裝腳本更改爲'git clone git:// path/to/remote/repo',並且將遠程倉庫目錄的名稱添加到'.npmignore'中,現在一切正常。 – fardjad 2013-03-08 12:48:16