Npm не будет устанавливать пакеты локально. Что не так?
Я хочу устанавливать пакеты локально, но npm всегда устанавливает пакеты в глобальное местоположение. Я выполняю следующую команду:
npm install serialport
У меня нет команды .npmrc, и я не использую флаг -g, поэтому я не знаю, почему он не устанавливает локально. Здесь фрагмент из конфигурационного дампа, показывающий, что глобальное значение false: $ npm config ls -l | Глобальный глобальный global = false globalconfig = "/usr/local/etc/npmrc" globalignorefile = "/usr/local/etc/npmignore"
И пакеты все еще устанавливаются следующим образом
[email protected] ../../../../node_modules/serialport
Поэтому, если я не ошибаюсь в отношении того, что означает "локальный", это кажется неправильным. У меня создалось впечатление, что "локальный" означает в текущем рабочем каталоге, чтобы я мог "требовать" в своем основном файле кода. См. http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/, как указано в предыдущем вопросе, связанном с npm.
Может кто-нибудь, пожалуйста, дайте мне несколько советов по этому поводу? Большое вам спасибо.
P.S. Это не относится к модулю serialport. Это происходит со всеми из них.
Ответы
Ответ 1
Большая часть моего ответа может быть найдена: http://npmjs.org/doc/folders.html#More-Information
Я понимаю, что npm попытается установить его в разумном месте. Поэтому, если у вас есть каталог project/node_modules
, и вы находитесь в /project и выполняете npm, он будет использовать product/node_modules
.
Теперь, если вы случайно сделали cd project/css
и установили npm, то npm будет проходить до тех пор, пока не найдет ваш каталог node_modules
. Это должно помешать вам случайно установить его в project/css
.
Итак, в вашем случае у вас есть каталог node_module где-то на пути вашего проекта. Поэтому я предполагаю, что вы можете исправить это, удалив этот каталог или вручную создав dir node_modules
в папке проекта.
Ответ 2
Если у вас есть файл package.json в папке, которую вы пытаетесь установить, то он правильно создаст папку node_modules.
Базовый пакет .json
{
"name": "application-name",
"version": "0.0.1"
}