2012-06-11 159 views
17

我想在本地安裝軟件包,但是npm總是將軟件包安裝到全局位置。我運行下面的命令:npm不會在本地安裝軟件包。怎麼了?

npm install serialport 

我沒有.npmrc命令,我沒有使用-g標誌,所以我不知道爲什麼它沒有在本地安裝。以下是配置轉儲中的一個片段,顯示global爲false: $ npm config ls -l |用grep全球 全球=假 globalconfig = 「在/ usr/local/etc中/ npmrc」 globalignorefile = 「在/ usr/local/etc中/ npmignore」

而且包仍然被安裝這樣

[email protected] ../../../../node_modules/serialport 

所以除非我對「本地」的含義完全錯誤,否則這似乎是錯誤的。我的印象是「當地」在當前工作目錄中,以便我可以在我的主代碼文件中執行「要求」。請參閱:前面的npm相關問題中引用的http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

有人可以給我一些提示嗎?非常感謝你。

P.S.它不是特定於串口模塊。它們都在發生。

回答

29

大多數我的回答可以發現:http://npmjs.org/doc/folders.html#More-Information

我的理解是,故宮將嘗試在一個合理的位置進行安裝。因此,如果您有一個project/node_modules目錄,並且您在/項目中並執行npm安裝,它將使用product/node_modules

現在,如果您不小心做了cd project/css並執行npm install,那麼npm將遍歷直到找到您的node_modules目錄。這是爲了防止您不小心將其安裝在您的project/css中。

所以在你的情況下,你的項目路徑中有一個node_module目錄。所以我的猜測是,您可以通過刪除該目錄或在項目文件夾中手動創建一個node_modules目錄來修復它。

+0

啊,我只是發現自己,並試圖回答我的問題,但新用戶不能這樣做,直到8小時後。這是我發現的解釋。 http://stackoverflow.com/questions/6514621/npm-install-locally – user1449536

+0

不用擔心,直到我找到文檔頁面,我實際上並不是100%確定。 – Pickels

+0

你的回答幾乎是正確的,但是這個文件夾被稱爲node_module ** s ** – idmean

5

如果您試圖安裝軟件包的文件夾上有一個package.json文件,那麼它將正確創建node_modules文件夾。

基本的package.json

{ 
    "name": "application-name", 
    "version": "0.0.1" 
}