Установка зависимости с Bower от URL и указание версии


154

Я пытаюсь установить зависимость с Bower, используя URL. По состоянию на документацию Бауэра:

Bower предлагает несколько способов установки пакетов:

    # Using the dependencies listed in the current directory's bower.json 
    bower install
    # Using a local or remote package 
    bower install <package>
    # Using a specific version of a package 
    bower install <package>#<version>
    # Using a different name and a specific version of a package 
    bower install <name>=<package>#<version> 

Где <package>может быть любое из следующего:

  • Имя, которое отображается на пакет, зарегистрированный в Bower, например, jquery.
  • Удаленный Гит конечной точки, например, git://github.com/someone/some-package.git. Может быть публичным или частным.
  • Локальная конечная точка, то есть папка, которая является Git-репозиторием.
  • Сокращенная конечная точка, например, someone/some-package (по умолчанию GitHub).
  • URL-адрес файла, включая файлы zip и tar. Его содержимое будет извлечено.

Однако тогда говорится, что все типы, кроме URL, позволяют указывать версию.

Как указать версию для загруженной зависимости URL?

Ответы:


194

Используйте конечную точку git вместо имени пакета:

bower install https://github.com/jquery/jquery.git#2.0.3

8
Это конечная точка Git, и указание работы с версиями работает. Например, если вы укажете файл Javascript напрямую, это не сработает
— Edmondo1984,

1
URL разрешены в последних версиях Bower.
— lfender6445

Кстати: работает svnтоже, например,bower install crypto-js=svn+http://crypto-js.googlecode.com/svn/#~3.1.2 --save
— Preexo

5
если у вас есть ошибка ENORESTARGET URL sources can't resolve targetsпри попытке установки из git с коммитом, вы должны изменить https://github.com/jquery/jqueryна https://github.com/jquery/jquery.git(добавить .git)
— jakub.g

2
Нормализует ли bower тег версии, чтобы поставить перед ним префикс v? Когда я это делаю, bower install https://github.com/my/repo.git#1.0.0это работает, даже несмотря на то, что был вызван фактический тег, который я нажал v1.0.0.
— spinningarrow

54

Если вы используете файл bower.json, чтобы указать свои зависимости:

{
     "dependencies": {
         ...
         "photo-swipe": "git@github.com:dimsemenov/PhotoSwipe.git#v3.0.x",

#bower 1.4 (tested with that version) can read repositorios with uri format

         "photo-swipe": "git://github.com/dimsemenov/PhotoSwipe.git#v3.0.x",

     }
}

Просто помните, что bower также ищет выпущенные версии и теги, чтобы вы могли указывать практически на все и могли интерпретировать базовые шаблоны запросов, как в предыдущем примере. который получит последнее незначительное обновление версии 3.0 (протестировано с bower 1.3.5)

Обновите , так как в описании вопроса также упоминается использование только URL, а не упоминание о репозитории github.

Другой пример - выполнить эту команду, используя нужный URL, например:

bower install gmap3MarkerWithLabel=http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.0/src/markerwithlabel.js -S

эта команда загружает вашу js-библиотеку, вставляет {ваш путь назначения} /gmap3MarkerWithLabel/index.js и автоматически создает запись в вашем файле bower.json с именем gmap3MarkerWithLabel: "..." После этого вы можете выполнить только bower update gmap3MarkerWithLabelпри необходимости.

Забавно, если вы выполняете процесс backwars (добавьте вручную запись в bower.json, а затем bower install entryName), это не сработает, вы получите

пакет ENOTFOUND bower gmapV3MarkerWithLabel не найден


++ RE предостережение о выполнении процесса в обратном направлении
— Джейкоб

По состоянию на 2018 год. Люди должны уходить из-под контроля, больше не в разработке, и использовать любой другой инструмент управления пакетами, например, Yarn. У нас были проблемы, так как многие сторонние разработчики библиотек прекратили выпуск пакетов bower, чтобы перейти на более стандартизированный путь. Пряжа намного быстрее, чем беседка, и ее очень легко перенести.
— le0diaz


21

Ориентация на конкретный коммит

Удаленный (GitHub)

При использовании github обратите внимание, что вы также можете настроить таргетинг на конкретный коммит (например, на форк, который вы сделали и обновили), добавив его хеш коммита в конец его URL-адреса клона. Например:

"dependencies": {
  "example": "https://github.com/owner_name/repo_name.git#9203e6166b343d7d8b3bb638775b41fe5de3524c"
}

Локально (файловая система)

Или вы можете настроить таргетинг на git commit в вашей локальной файловой системе, если вы используете каталог .git вашего проекта, например, так (в Windows; обратите внимание на косую черту):

"dependencies": {
  "example": "file://C:/Projects/my-project/.git#9203e6166b343d7d8b3bb638775b41fe5de3524c"
}

Это один из способов тестирования библиотечного кода, который вы зафиксировали локально, но еще не отправили в репозиторий.


1
Спасибо! Я использовал компонент раздвоенной бауэра с патчем, и он продолжал устанавливать последние версии в соответствии с основным файлом бауэра для этого репо. Добавление хеша коммита позволило мне загрузить мою самую последнюю версию.
— elliottregan

9

Просто обновление.

Теперь, если это репозиторий GitHub, тогда достаточно использовать только сокращение от GitHub, если вы, конечно, не против версии.

GitHub стенография

$ bower install desandro/masonry

7

Вот удобный сокращенный способ установки определенного тега или фиксации из GitHub через bower.json.

{
  "dependencies": {
    "your-library-name": "<GITHUB-USERNAME>/<REPOSITORY-NAME>#<TAG-OR-COMMIT>"
  }
}

Например:

{
  "dependencies": {
    "custom-jquery": "jquery/jquery#2.0.3"
  }
}

Просто из любопытства, можно ли выбрать целевой каталог из хранилища? git@git-url.git#v0.1.0/directory?
— Рис

7

Просто указание конечной точки uri сработало для меня , bower 1.3.9

  "dependencies": {
    "jquery.cookie": "latest",
    "everestjs": "http://www.everestjs.net/static/st.v2.js"
  }

Запустив bower install, я получил следующий вывод:

bower new           version for http://www.everestjs.net/static/st.v2.js#*
bower resolve       http://www.everestjs.net/static/st.v2.js#*
bower download      http://www.everestjs.net/static/st.v2.js

Вы также можете попробовать обновить беседку

  • npm update -g bower

Согласно документации : поддерживаются следующие типы URL:

http://example.com/script.js
http://example.com/style.css
http://example.com/package.zip (contents will be extracted)
http://example.com/package.tar (contents will be extracted)

3

Я считаю, что указанная версия работает только для git-endpoints. И не для папок / почтовых. Например, когда вы указываете bower на js-файл / папку / zip, вы уже указали пакет и версию (кроме действительно js). Потому что в пакете есть bower.json с версией. Указание версии в 'bower install' имеет смысл, когда вы указываете bower на репозиторий, в котором может быть много версий пакета. Это может быть только мерзавец, я думаю.


3

Попробуйте bower install git://github.com/urin/jquery.balloon.js.git#1.0.3 --saveгде 1.0.3это количество тегов , которые вы можете получить, прочитав тег под выпусками. Также для URL замените, git://чтобы система подключилась.


0

Устанавливает пакет из git и сохраняет его в блок зависимостей bower.json.

  1. bower register package-name git-endpoint#version
  2. install package-name --save

( --saveсохранит версию имени пакета в файле bower.json внутри блока зависимостей).

Ссылка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.