Правильная установка NodeJs и EmberJs

В продолжении темы EmberJs хочу уделить немного внимания его установке, так как столкнулся с небольшими трудностями при этом. Хочу описать способы установки NodeJs и EmberJs которые считаю более удобными.

Первая проблема такова, что, например, в Ubuntu (и я думаю, что этот дистрибутив далеко не одинок в этом) без прав суперпользователя не возможно выполнение команды npm install. Если установить ember используя sudo, то часть установленных файлов будет иметь такие права, что выполнение дальнейших команд ember cli будет требовать снова обращаться через sudo.

Вторая проблема заключается в том, что на, имеющейся у вас в дистрибутиве, версии nodejs не будет работать все, что вам нужно в процессе работы с  ember cli.

Но решение есть и имя ему – nvm (Node Version Manager). Работает nvm очень похоже на rvm (Ruby Version Manager), если вы сталкивались.

Чтобы установить данное ПО, необходимо сначала удалить установленный nodejs. Нужно чтобы следующие команды не находили ничего:

which node
which npm

Далее устанавливаем nvm через curl:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

Или через wget:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

Скрипт склонирует репозиторий в ~/.nvm и добавит строку source в файл вашего профиля  (~/.bash_profile, ~/.zshrc или ~/.profile).

Например, на моей системе в результате я получил в ~/.zshrc такие строки:

# NVM install
[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

export NVM_DIR="/home/igor/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

# NVM install end.

Теперь вам должна быть доступна  nvm ls-remote, которая показывает список доступных к установке версий. Если команда nvm недоступна, то попробуйте перезагрузить терминал.

Далее вы можете устанавливать любые версии из списка. Например, так nvm install 4.2.3 . Делать активными в текущей сессии консоли любую установленную вами версию можно, например, вот так nvm use 5.1.0 .

Смотреть какие текущие версии софта у вас используются можно через следующие команды:

nvm current
node -v
npm -v
which node

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

nvm alias default 0.12.8

где вместо 0.12.8 надо поставить нужную вам версию.

Помимо того, что у нас будет версия по-умолчанию, у нас появится так же и алиас, которым можно пользоваться так:

nvm use default

Теперь, чтобы установить emberjs нам нужно использовать версию nodejs не ниже 0.12 и npm 2.7+. И затем смело (так же без sudo)

npm install -g ember-cli

Затем можно посмотреть информацию о версии emberjs:

ember -v 
                                                                  
version: 1.13.13
Could not find watchman, falling back to NodeWatcher for file system events.
Visit http://www.ember-cli.com/user-guide/#watchman for more info.
node: 5.1.0
npm: 2.14.10
os: linux x64

По-умолчанию ставится версия 1.13 emberjs. К сожалению, на момент написания статьи, версии выше не поддерживаются со стороны ember cli. Однако, создав проект через ember new project_name, вы можете подкорректировать файл bower.json и прописать в нем нужные версии пакетов. Запустим после этого команду bower install и следую инструкциям в консоли вы получите проект на нужной версии emberjs.

Если по какой-то причину у вас не установлен bower, то ставим его командой

npm install -g bower

После обновления версии вы можете запустить тестовый сервер через ember s и убедиться при помощи расширения Ember Instector (pаздел Info), что используются требуемые версии ember и ember-data.

Хотя, как можно узнать из документации, в Ember 2.x просто стали недоступны вещи, которые в версии 1.13 были помечены как устаревшие. Это заявлено как основное изменение. Поэтому, скорее всего, сильной необходимости в обновлении версии вы не ощутите.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *