NPM устанавливает пакет снаружи текущего каталога

Я пытаюсь установить экспресс-пакет с помощью npm из каталога /home/iwan/my -project:

npm install express

[email protected] ../node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected])

Странная вещь: npm не устанавливает экспресс-пакет в текущем каталоге (/home/iwan/my-project/ node_modules/express), но в /home/iwan/ node_modules/express.

Я что-то пропустил?

Ответы

Ответ 1

Если каталог node_modules не существует в вашем текущем каталоге, NPM будет искать его в более высоких каталогах, пока не найдет его. Итак, если родительский каталог имеет каталог node_modules, NPM будет считать, что он должен устанавливать модули.

Скорее всего, это создать пустой каталог node_modules, где вы хотите разместить модули.

Ответ 2

Я считаю, что лучший способ установить пакеты с помощью 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. Просто добавьте его в зависимости dict. Например:

{
  "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. Вот как выглядит мой каталог приложений:

enter image description here

Ответ 3

Вы также можете создать пустой файл package.json, используя рекомендации веб-страницы https://docs.npmjs.com/files/package.json. Затем поместите это в папку проекта и введите npm install.