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

Где node.js помещает свои файлы?

Недавно я начал играть с node.js, но я потерялся в большом беспорядке из разных версий node, npm, nvm и других пакетов. Я не знаю, что установлено глобально и что установлено локально (и если локально, как пакеты знают, какие версии node они могут использовать?).

Я хотел бы получить некоторое резюме о том, что делают другие варианты установки. В частности:

  • Где node установлен, когда я использую nvm, apt-get, make install или при использовании других способов?
  • Не рекомендуется ли локально устанавливать node?
  • Почему nvm меняет мой ~/.profile вместо того, чтобы устанавливать его в какую-то системно-узнаваемую папку bin?
  • Я видел, что nvm может устанавливать разные версии node рядом друг с другом - зачем мне это делать? Я могу установить их локально, не так ли?
  • Где npm установить пакеты? Я видел, что он проверяет версию аганиста пакетов node, что происходит с этими пакетами при обновлении node?
  • В каких случаях лучше использовать глобальную или локальную установку? Где я должен поместить мои пакеты тогда (и где они по умолчанию по умолчанию?)
  • В чем разница между npm, nvm и nave?

EDIT: здесь есть много способов установить node , это еще больше запутывает меня...

4b9b3361

Ответ 1

Где node установлен, когда я использую nvm, apt-get, устанавливаю или когда используя другие способы?

apt-get устанавливает все программное обеспечение, а не только node, в файловую систему, следующую за соглашением Ubuntu, где хранятся двоичные файлы, файлы с людьми, общие файлы, журналы и т.д. Однако, используя apt-get, вы будете иметь только определенная версия node, которая определяется циклом распространения дистрибутива. Если будут доступны обновления, они будут установлены с помощью apt-get update; apt-get upgrade Однако самая новая версия какого-либо приложения будет недоступна до тех пор, пока она не войдет в дистрибутив. Например, node v0.x.y может быть недоступен до тех пор, пока Ubuntu 13.10 не сможет получить его только вручную. Хорошая сторона apt-get или другого менеджера системных пакетов заключается в том, что она управляет обновлениями и удалением пакетов для вас. Он хранит все данные о пакете программного обеспечения в своей собственной базе данных. Вы всегда можете удалить node с помощью apt-get remove node и его.

make install установите пакет вручную, но он считается вредным. Никогда не используйте make install в основном потому, что вы не сможете легко удалить пакет, вам придется прочитать Makefile и вручную удалить все установленные им файлы. В ситуации, когда вы хотите использовать make install, всегда есть checkinstall. Это программное обеспечение, которое создает собственный пакет и регистрирует его с помощью системы. Когда вы решите удалить пакет, вы можете сделать это с помощью одной команды вместо многих. ссылка wiki; Руководство по Ubuntu в checkinstall

Теперь nvm script является node version manager. Это очень полезно и легко использовать. Это позволяет вам устанавливать несколько версий node для параллельного использования на вашем компьютере. Он не компилирует node из источника, такого как make install, поэтому он очень быстрый. это не зависит от вашего цикла распространения, так что у вас есть доступ ко всем версиям node, доступным на данный момент. nvm загружает предварительно скомпилированные двоичные файлы и идеально подходит для общего использования. Он сохраняет файлы node в своей локальной папке локально, поэтому, если вы хотите сравнить что-то между различными версиями node, это легко сделать.

Можно ли установить локальную локальную локацию node?

Если локально вы имеете в виду использование nvm, то это очень хорошо для разработки и тестирования. Не уверены в производительности и преимуществах производительности между установкой из источника или использованием предварительно скомпилированных двоичных файлов nvm. Я использую nvm для разработки и установки из источника в процессе производства. Однако, если кто-то еще сможет объяснить эту проблему, я буду рад узнать больше.

Почему nvm меняет свой файл ~/.profile вместо того, чтобы устанавливать его в какую-то системную папку bin?

Потому что nvm не является исполняемым. Это набор функций bash, которые получены оболочкой и могут использоваться отдельно. Вы можете вызывать nvm_ls и nvm_ls_remote, а другие без основного script после этого отправляются в вашу оболочку. В главном script он анализирует аргументы командной строки и довольно печатает вывод в случае, например, `nvm_ls_remote '.

в ~/.profile добавляется следующая строка

[[ -s /home/USERNAME/.nvm/nvm.sh ]] && . /home/USERANME/.nvm/nvm.sh # This loads NVM 

загружает все функции в вашу оболочку

Я видел, что nvm может устанавливать разные версии node рядом друг с другом - зачем мне это делать? Я могу установить их локально, не так ли?

Вы можете установить их локально с помощью make install или checkinstall, но вам придется создавать псевдонимы для них, например node_0.8.1, node_0.8.2, node_0.10.1 и т.д. И вам придется управлять новыми псевдонимами, устанавливая все пакеты, удаляя их, если они вам не нужны СЕБЯ. Это утомительные и скучные задачи, которые иногда могут быть подвержены ошибкам. nvm выполняет все эти задачи для вас бесплатно.

Вы хотите сделать это, чтобы протестировать свое приложение в разных версиях node. Например, вы хорошо разбираетесь в v0.8, но хотите использовать новые функции v0.10.3, как вы это делаете? Вы должны загрузить исходный код, скомпилировать, создать псевдоним и запустить приложение. вы можете сделать это только с помощью nvm install 0.10.3 и запустить приложение. Иногда вам приходится поддерживать более одной версии node. Например, некоторые размещенные среды не поддерживают связь с последней версией и имеют только v0.6. Ваши клиенты, которые используют ваше серверное приложение, могут столкнуться с ошибкой, характерной для этой версии. Когда вы исправляете ошибку, вы должны сначала ее воспроизвести. Используя nvm установка v0.6 - это одна строка и полминуты. И вы можете легко проверить все версии, которые вы хотите таким образом. Проверьте свой код под разными версиями и убедитесь, что вам хорошо идти.

Где npm устанавливает пакеты? Я видел, что он проверяет версию аганиста пакетов node, что происходит с этими пакетами при обновлении node?

Если вы используете nvm, пакеты, установленные глобально с опцией -g, привязаны к соответствующей версии node. При переключении между версиями с помощью nvm use 0.x вам нужно либо снова установить пакеты, либо использовать nvm copy-packages <version> для использования пакетов из текущей версии. Если пакеты установлены локально, это зависит от них. package.json должен содержать информацию об зависимостях приложения. Если он говорит node: '0,8', и вы только что обновили до 0,9, вы можете столкнуться с проблемами. Например, поведение process.nextTick было изменено в последних выпусках по сравнению с 0,6. Поэтому будьте осторожны.

В каких случаях лучше использовать глобальную или локальную установку? Где я должен поместить мои пакеты тогда (и где они по умолчанию по умолчанию?)

Это зависит. Для развития nvm является превосходным, на мой взгляд. Для меня это удобно и просто. Для производства могут быть некоторые последствия для производительности при использовании предварительно скомпилированных двоичных файлов, не оптимизированных для вашей системы. Было бы лучше спросить об этом как отдельный вопрос, чтобы люди с соответствующим опытом могли ответить.

Какая разница между npm, nvm и nave?

npm - это ссылка node package manager. Она содержит пакеты пользовательских программ, разработанные другими людьми. Эти пакеты не являются частью ядра node. npm используется для публикации вашего кода и управления зависимостями. Если вашему приложению требуется другое приложение, разработанное другими людьми, его удобно публиковать через npm.

nvm есть node version manager, он делает совершенно отдельную вещь. Это дает вам возможность очень легко переключаться между версиями node на одном компьютере и управляет всеми изменениями в вашей переменной среды $PATH.

Рассмотрим nvm как диспетчер обновлений для операционной системы и npm в качестве менеджера приложений для этой системы. Ну, это сравнение неточно, но просто наступил на меня.

nave в основном совпадает с nvm, но он является исполняемым, тогда как nvm является script, который поступает в оболочку. У каждой системы есть свои преимущества. Вы можете задать отдельный вопрос относительно использования случаев и различий.

Мой ответ не выполнен на 100% и содержит много субъективных личных мнений. Тем не менее, я надеюсь, что, по крайней мере, сделаю некоторые моменты более ясными, чтобы вы могли перейти к другим более конкретным вопросам. Кстати, этот список вопросов можно задать как отдельные вопросы. Я считаю, что stackoverflow дает наилучшие результаты, когда конкретные вопросы задаются отдельно, и больше людей с соответствующим опытом могут внести свой вклад.

Ответ 2

Если вы бежите

npm install

в папке с package.json он устанавливает все пакеты локально (в текущей папке).

Также npm по умолчанию устанавливает локальные пакеты. Чтобы установить его глобально - используйте флаг -g:

npm install -g <package>

Выполните следующую команду:

npm config list

Вы видите все описание конфигурации npm.

Ответ 3

Вы можете установить модули в локальном контексте вашего приложения с помощью

npm install modulename

В этом случае модуль будет установлен в вашу папку node_modules вашего приложения.

В противном случае вы можете установить модуль в глобальном контексте с помощью

npm install -g modulename

В этом случае модуль будет установлен для среды системы отверстий, обычно в /usr/local/bin/modulename.

Глобальная установка имеет смысл для модулей, которые вам нужны в нескольких приложениях, таких как express или node-inspector.