Когда я запускаю:
npm install my-app
Приложение установлено в node_modules/my-app/...
Я также пробовал
npm install -g my-app
Но это тоже не работает.
Как установить модуль прямо в текущий каталог?
Когда я запускаю:
npm install my-app
Приложение установлено в node_modules/my-app/...
Я также пробовал
npm install -g my-app
Но это тоже не работает.
Как установить модуль прямо в текущий каталог?
npm install
устанавливает пакеты локально или глобально:
npm
ищет существующую папку с именем node_modules
в текущем каталоге и создает папку для каждого пакета, который вы устанавливаете в этой папке. Если он не может найти существующую папку node_modules
здесь, он просматривает текущих предков каталогов, пока не найдет их. Если он не может найти его, он создает его в текущем каталоге.-g
(глобальная), пакет устанавливается в глобальном местоположении. Это расположение зависит от дистрибутива Linux, но /usr/local/lib/node_modules/packagename
является одним из примеров. CentOS7 использует /usr/lib/node_modules/packagename
. Вы должны использовать -g
тогда, когда пакет является чем-то, что вы хотите использовать в качестве команды.
Точно так же, как глобальные переменные являются грубыми, но также необходимыми в некоторых случаях, глобальные пакеты важны, но лучше их избегать, если не нужно.
В общем, эмпирическое правило таково:
- Если вы устанавливаете что-то, что хотите использовать в своей программе, используя
require('whatever')
, то устанавливайте это локально, в корне вашего проекта.- Если вы устанавливаете что-то, что хотите использовать в своей оболочке, в командной строке или что-то еще, установите это глобально, чтобы его двоичные файлы попали в
PATH
средыPATH
.
npm не будет устанавливать файлы пакета непосредственно в текущий каталог.
Тем не менее, это на самом деле хорошая вещь. Он хранит файлы зависимостей отдельно от вашего приложения, и Node автоматически ищет папку node_modules
когда вам что-то require
.
Как сказал @dalu, если вы хотите иметь локальные пакеты, вам понадобится файл package.json
.
Но для создания файла package.json
вам нужно инициализировать npm, запустив npm init
.
Затем вы можете использовать npm install <module_name> --save[-dev]
.
Вот как вы можете установить модуль в ваш текущий каталог:
npm i --prefix ./ my-app
Как говорили другие, правильным способом является настройка вашего проекта с помощью package.json
У вас должен быть package.json
в вашем текущем каталоге.
Затем напишите npm install <module_name> --save-dev
или npm install <module_name> --save
и он будет установлен в каталог node_modules
Я думаю, что реальный вопрос, что я и OP захочет, - это установить мое приложение, например, вы должны установить приложение, т.е. Установите приложение верхнего уровня, которое я собираюсь "использовать" в качестве приложения, а не "требовать" в качестве модуля.
Тот факт, что npm устанавливает один уровень из моего приложения справочник, является чисто эстетичным возражение новых пользователей npm.
Когда я начал использовать npm (не так давно), я решил его с помощью git проект как установщик, клонируйте git, запустите установку script, но теперь я привык к ней и это не мешает мне иметь приложение в "неправильной" папке.
Просто установите некоторые .sh,.bat или короткие сокращения в нужном месте и ваши пользователи не заметят.
Используя 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"
}
}