Установка зависимости с 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?

Edmondo1984
источник

Ответы:

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 не найден

le0diaz
источник
++ 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"
}

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

JCT
источник
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)
lfender6445
источник
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://чтобы система подключилась.

SACn
источник
0

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

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

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

Ссылка

Shafeeq Diaz
источник