![](/img/trans.png)
[英]npm installs modules into current directory, not only node_modules
[英]NPM Installs Package Outside Current Directory
我嘗試從 /home/iwan/my-project 目錄中使用 npm 安裝 express 包:
npm install express
express@3.3.7 ../node_modules/express
├── methods@0.0.1
├── cookie-signature@1.0.1
├── range-parser@0.0.4
├── fresh@0.2.0
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── send@0.1.4 (mime@1.2.11)
└── commander@1.2.0 (keypress@0.1.0)
奇怪的是 npm 沒有在當前目錄(/home/iwan/my-project/node_modules/express)中安裝 express 包,而是在 /home/iwan/node_modules/express 中。
我錯過了什么?
如果node_modules
目錄中不存在node_modules
目錄,NPM 將在更高的目錄中查找它,直到找到為止。 因此,如果父目錄有一個node_modules
目錄,NPM 將假定這是安裝模塊的位置。
解決此問題的一種快速方法是創建一個空的node_modules
目錄,您希望在其中放置模塊。
我相信使用npm
安裝軟件包的最佳方法是制作一個package.json
文件。 像這樣,只需將其作為您的應用程序放在 smae 目錄中即可。 示例package.json
文件可能如下所示:
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.3.5",
"jade": "*",
"less-middleware": "*",
"ejs": "*",
"mongoose": "3.6.*"
}
}
查看依賴項列表。 只需添加您想要的模塊,例如underscore
。 只需將它添加到依賴項字典。 像這樣:
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.3.5",
"jade": "*",
"less-middleware": "*",
"ejs": "*",
"mongoose": "3.6.*",
"underscore": "*" <-------------- Added
}
}
然后轉到您的目錄並運行npm install
和 bam! 將為您安裝所有軟件包及其依賴項。 它將完成所有工作,這意味着為您制作node_modules
文件夾。 這是我的應用程序目錄的樣子:
您還可以使用https://docs.npmjs.com/files/package.json
網頁中的指南創建一個空白的 package.json 文件。 然后將其放在您的項目文件夾中並鍵入npm install
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.