Использование npm для установки или обновления необходимых пакетов точно так же, как Bundler для rubygems
Автор вопроса: Daniel BeardsleyОтветов: 6
Мне нравится Bundler, он отлично справляется с управлением зависимостями. Мне нравится npm, устанавливать пакеты узлов очень просто! У меня есть приложение nodejs, и я хотел бы иметь возможность указывать зависимости моих приложений и легко устанавливать / обновлять их, где бы я ни развертывал свое приложение. Это не библиотека, которую я выпускаю, это полноценное веб-приложение.
Мне известна команда npm bundle, но она просто переопределяет каталог, в котором установлены пакеты.
Я привык использовать упаковщик таким образом:
# Gemfile
gem "rails", "3.0.3"
Устанавливает рельсы v3.0.3 и любые другие необходимые драгоценные камни на хост-машину, только если они еще не существуют
> bundle install
Как добиться чего-то подобного с помощью npm?
мой ответ не то, что вы хотели знать? Alfred 05.02.2011
Начиная с npm 1.0 (который теперь вы получаете по умолчанию, если следуете инструкциям в файле README), "пакет" больше не является изолированной вещью - это просто "как это работает".
So:
Поместите package.json файл в корень вашего проекта
export.modules = {
express: require('express')
//add more
}
Теперь вы сможете установить свои зависимости с помощью npm. Вы даже можете сделать эту часть процесса развертывания
cd deps
npm install
Затем в коде вашего приложения вы можете получить доступ к вашей конкретной версии Express следующим образом:
var express = require('myapp_dependencies').express;
Ответ 3 · рейтинг 5 · Alfred
Вам следует прочитать эти две статьи из блога Isaacs (автор npm). Я считаю, что они действительно хороши, и я считаю, что они расскажут вам, как достичь своей цели:
Я считаю, что ссылка №1 (пункт №11) объясняет это:
11: объедините все свои зависимости в сам пакет
Когда вы используете команду npm bundle, npm помещает все ваши зависимости в папку node_modules вашего пакета. Но это еще не все.
Если вы хотите зависеть от чего-то, чего нет в реестре, вы можете это сделать. Просто сделай это:
пакет npm установить http://github.com/whoever/whatever/tarball/master Это установит содержимое этого архива в пакет, а затем вы сможете указать его как зависимость, и он не будет пытаться установить его, когда ваш пакет будет установлен.
Это также удобно, если у вас есть собственный форк чего-либо, и вы предпочитаете не менять имя.
Фактически, вы можете запустить практически любую команду npm в пакете. Чтобы увидеть, что внутри, вы можете выполнить команду npm bundle ls. Чтобы что-то удалить, выполните npm bundle rm thing. И, конечно же, вы можете установить несколько версий и активировать ту, которая вам нужна.
Ответ 4 · рейтинг 2 · Colonel Panic
Начиная с версии Npm 1.1.2, есть новая команда npm shrinkwrap, которая создает npm-shrinkwrapped.json файл, аналогичный Gemfile.lock. Его важно создать, чтобы предотвратить гниение программного обеспечения (см. обоснование Bundler). Тем более, что у Nodejs очень быстро развивающееся сообщество.
В то время как bundle install создает Gemfile.lock автоматически, npm install не будет создавать npm-shrinkwrapped.json (но будет использовать его, если он существует). Следовательно, вам нужно не забыть использовать npm shrinkwrap.
Прочтите полное руководство на странице http://blog.nodejs.org/2012/02/27/managing-node-js-dependencies-with-shrinkwrap/
Ответ 5 · рейтинг 2 · Trevor Burnham
Мне кажется, что самое простое решение - использовать файл package.json с флагом private (добавленным в npm только в прошлом месяце), установленным на true. Таким образом, вы можете запустить npm install или npm bundle, чтобы получить зависимости вашего проекта, но вы предотвратите случайную публикацию вашего закрытого проекта кем-либо.
Запуск npm install установит express в локальной системе, если она еще не существует; запуск npm publish дает ошибку из-за "private": true.
Вы и ваша команда можете использовать тег версии для внутреннего использования, чтобы отслеживать изменения зависимостей с течением времени - каждый раз, когда вы меняете зависимость, повышайте версию. Чтобы узнать, какую версию вы установили, используйте npm ls installed.
Ответ 6 · рейтинг 1 · Dan Grossman
Также опубликуйте приложение с npm и укажите его зависимости в файле package.json.
Когда кто-то использует npm для установки вашего пакета, npm позаботится об устранении его зависимостей.