Подтвердить что ты не робот

Модуль установки npm в текущем каталоге

Когда я запускаю:

npm install my-app

Приложение установлено в node_modules/my-app/...

Я также пробовал

npm install -g my-app

Но это тоже не работает.

Как установить модуль прямо в текущий каталог?

4b9b3361

Ответ 1

npm install устанавливает пакеты локально или глобально:

  • Локально: npm ищет существующую папку с именем node_modules в текущем каталоге и создает папку для каждого пакета, который вы устанавливаете в этой папке. Если он не может найти существующую папку node_modules здесь, он просматривает текущих предков каталогов, пока не найдет их. Если он не может найти его, он создает его в текущем каталоге.
  • Глобально: если вы используете -g (глобальная), пакет устанавливается в глобальном местоположении. Это расположение зависит от дистрибутива Linux, но /usr/local/lib/node_modules/packagename является одним из примеров. CentOS7 использует /usr/lib/node_modules/packagename.

Вы должны использовать -g тогда, когда пакет является чем-то, что вы хотите использовать в качестве команды.

Точно так же, как глобальные переменные являются грубыми, но также необходимыми в некоторых случаях, глобальные пакеты важны, но лучше их избегать, если не нужно.

В общем, эмпирическое правило таково:

  1. Если вы устанавливаете что-то, что хотите использовать в своей программе, используя require('whatever'), то устанавливайте это локально, в корне вашего проекта.
  2. Если вы устанавливаете что-то, что хотите использовать в своей оболочке, в командной строке или что-то еще, установите это глобально, чтобы его двоичные файлы попали в PATH среды PATH.

npm не будет устанавливать файлы пакета непосредственно в текущий каталог.

Тем не менее, это на самом деле хорошая вещь. Он хранит файлы зависимостей отдельно от вашего приложения, и Node автоматически ищет папку node_modules когда вам что-то require.

Ответ 2

Как сказал @dalu, если вы хотите иметь локальные пакеты, вам понадобится файл package.json.

Но для создания файла package.json вам нужно инициализировать npm, запустив npm init.

Затем вы можете использовать npm install <module_name> --save[-dev].

Ответ 3

Вот как вы можете установить модуль в ваш текущий каталог:

npm i --prefix ./ my-app

Как говорили другие, правильным способом является настройка вашего проекта с помощью package.json

Ответ 4

У вас должен быть package.json в вашем текущем каталоге.

Затем напишите npm install <module_name> --save-dev или npm install <module_name> --save и он будет установлен в каталог node_modules

Ответ 5

Я думаю, что реальный вопрос, что я и OP захочет, - это установить мое приложение, например, вы должны установить приложение, т.е. Установите приложение верхнего уровня, которое я собираюсь   "использовать" в качестве приложения, а не "требовать" в качестве модуля.

Тот факт, что npm устанавливает один уровень из моего приложения справочник, является чисто эстетичным возражение новых пользователей npm.

Когда я начал использовать npm (не так давно), я решил его с помощью git проект как установщик, клонируйте git, запустите установку script, но теперь я привык к ней и  это не мешает мне иметь приложение в "неправильной" папке.

Просто установите некоторые .sh,.bat или короткие сокращения в нужном месте и ваши пользователи не заметят.

Ответ 6

Используя Windows 7. Я установил nodejs в другую папку (c:\develop\nodejs), в ту, которая была предложена при установке (C:\Program Files\nodejs). Я совершенно новичок в nodejs или npm. возможно, я не говорю на языке nodejs или npm. После установки nodejs. Я должен был сделать несколько команд, как это в главной папке nodejs

npm init

Затем я собирался создать локальный каталог (скажем, c:\develop\nodejs\upload2s3) и создать пакет nodejs для использования в качестве AWS-лямбды. Для этого я пошел в локальный каталог (upload2s3) и попытался

npm install aws-sdk

хотя команда вела себя так, как будто установила что-то, она ничего не делала в моей папке upload2s3, так как она была пустой. тогда я просто попробовал это в моей локальной папке.

npm init 

это создало некоторые package.json, и может быть несколько других файлов, тогда я пытался

npm install aws-sdk

затем он создал папки node-modules внутри моей локальной папки (upload2s3) и установил пакет aws-sdk. Также обновлен файл package.json.

{
  "name": "uploadtos32",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "aws-sdk": "^2.448.0"
  }
}