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

Npm установка не установлена ​​последняя версия на GitHub

У меня есть модуль под названием "sails-mongo", и я хочу обновить его до последней версии, используя следующую команду:

npm update sails-mongo --save

Я также попытался удалить, а затем снова установить. Я пробовал [email protected] и [email protected].

Проблема: Текущая версия (master) в файле GitHub package.json(https://github.com/balderdashy/sails-mongo/blob/master/package.json) имеет:

"dependencies": {
  "async": "~0.2.9",
  "lodash": "~2.4.1",
  "mongodb": "1.4.2",
  "waterline-errors": "~0.10.0"
},

И в обновляемом

"dependencies": {
  "async": "0.2.10",
  "underscore": "1.5.2",
  "underscore.string": "2.3.3",
  "mongodb": "~1.3.23"
},

Единственный способ получить основную ветку - использовать команду npm install git+https://github.com/balderdashy/sails-mongo

Почему [email protected] не устанавливает основную ветвь?

4b9b3361

Ответ 1

По умолчанию NPM-зависимости вытягиваются из репозитория NPM. Авторы должны вручную загружать новые версии своего программного обеспечения в репозиторий NPM, поэтому версия "@latest", размещенная на NPM, отличается от последней версии кода, который существует где угодно (например, на GitHub).

Согласно странице репозитория NPM на Sails, последняя версия, поддерживаемая NPM, составляет 0.9.16, тогда как Версия GitHub - 0.10.0-rc3.

Если вы хотите, чтобы ваш проект зависел от конкретной ветки или фиксации конкретного репозитория Git (вместо версий, размещенных в репозитории NPM), разработчики NPM включили явный механизм, позволяющий это, подробно описанный в Git URL-адресах в качестве зависимостейpackage.json docs:

Git URL-адреса в качестве зависимостей

Git URL могут иметь следующий вид:

git://github.com/user/project.git#commit-ish
git+ssh://[email protected]:project.git#commit-ish
git+ssh://[email protected]/project.git#commit-ish
git+http://[email protected]/project/blah.git#commit-ish
git+https://[email protected]/project/blah.git#commit-ish

commit-ish может быть любым тегом, ша или ветвью, который может быть предоставлен как аргумент git checkout. По умолчанию используется master.

На самом деле, проще использовать репозиторий Github.com в качестве зависимости:

Начиная с версии 1.1.65, вы можете ссылаться на URL-адреса GitHub как на "foo": "user/foo-project". Например:

{
  "name": "foo",
  "version": "0.0.0",
  "dependencies": {
    "express": "visionmedia/express"
  }
}

Итак, чтобы использовать репозиторий Sails GitHub, просто используйте:

"dependencies": {
  "sails": "balderdashy/sails-mongo",
  ...
}

И чтобы использовать точное состояние Sails, как оно существует в GitHub от 28 апреля 2014 года, используйте:

"dependencies": {
  "sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48",
  ...
}

Ответ 2

У меня была аналогичная проблема. Через реестр NPM я пытался получить последнюю версию проекта, который я видел в GitHub, например:

//package.json
"devDependencies": {
    "foo-package": "^3.3.0",
}

Но код, который я получил от npm install (как наблюдалось в папке node_modules/), не был тем, что я видел в главной ветке репозитория GitHub. Я был смущен; поскольку они не совпадают.

В конце концов я обнаружил: https://docs.npmjs.com/cli/view, в котором раскрывается некоторая информация (версии и даты) того, что знает реестр NPM для конкретный репозиторий.

// Console example
npm view foo-package

После подтверждения того, что то, что я хотел от главной ветки репозитория GitHub, не было в реестре NPM, я в конечном итоге изменил свой подход Git URL-адреса в качестве зависимостей, так же, как ответы @apsillers.