簡體   English   中英

NPM 在當前目錄外安裝包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM