{"action":"created","comment":{"url":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments/53177235","id":53177235,"diff_hunk":"@@ -38,57 +39,106 @@ Minimal configuration steps are:\n - Define URL for 'Remote storage' e.g. http://bower.herokuapp.com/[http://bower.herokuapp.com]\n - Select a 'Blob store' for 'Storage'\n \n-////\n+\n [[bower-hosted]]\n === Hosting Bower Repositories\n \n-A hosted Bower repository can be used to deploy your own as well as third-party components.\n+Creating a Bower hosted repository allows you to register packages and store components in the repository \n+manager. The hosted repository acts as an authoritative location for these components. This effectively creates \n+an asset that becomes a pointer to an external URL (such as a git repository).\n \n-To create another hosted Bower repository, add a new repository with the recipe 'bower (hosted)' as \n+To add another hosted Bower repository, start a new repository with the recipe 'bower (hosted)' as \n documented in <<admin-repositories>>.\n \n Minimal configuration steps are:\n \n - Define 'Name'\n - Select 'Blob store' for 'Storage'\n-////\n \n-////\n+\n [[bower-group]]\n === Grouping Bower Repositories\n \n-tbd\n+A repository group is the recommended way to expose all your Bower repositories from the repository manager to \n+your users, with minimal additional client side configuration. A repository group allows you to expose the \n+aggregated content of multiple proxy and hosted repositories as well as other repository groups with one URL in \n+tool configuration. This is possible for Bower repositories by creating a new repository with the 'bower (group)' \n+recipe as documented in <<admin-repositories>>.\n \n-////\n+Minimal configuration steps are:\n+\n+- Define 'Name'\n+- Select 'Blob store' for 'Storage'\n+- Add Bower repositories to the 'Members' list in the desired order\n \n-[[bower-installation]]\n-=== Installing the Bower Resolver\n+Bower groups operate by order of selection. In other words, the first member in a given group is accessed; and \n+each subsequent group is accessed, accordingly. If there are two components of the same name, the first will be \n+grabbed, and so on.\n \n-The Bower resolver keeps track of these packages in a manifest file, +bower.json+. Bower provides hooks to \n-facilitate using packages in your tools and workflows.\n \n-Before installing resolver, make sure you have npm installed. Also, be sure to upgrade your Bower \n-package to version 1.5 or higher before you proceed to the resolver installation.\n+[[bower-browse-search]]\n+=== Browsing Bower Repositories and Searching Packages\n+\n+You can browse Bower repositories in the user interface inspecting the components and assets and their details, \n+as described in <<search-components>>.\n+\n+Searching for Bower installed packages can be performed in the user interface, too. This search will find all \n+Bower modules that are currently stored in the repository manager, either because they have been pushed to a \n+hosted repository or they have been proxied from an upstream repository and cached in the repository manager.\n+\n+\n+[[bower-config]]\n+=== Configuring Bower\n+\n+Installing Bower is done via npm. So, if you install npm first, your can run Bower. But to do a complete \n+npm configuration for Nexus, review <<_introduction>> to set up and configure the package manager. Also, be sure \n+your Bower package to version 1.5 or higher.\n \n-You can install the downloaded Bower resolver package using npm globally with the command:\n+In order to proxy downloads through Nexus, install the Bower resolver with this command:\n ----\n npm install -g bower-nexus3-resolver\n ----\n \n-[[bower-resolver-config]]\n-=== Configuring the Bower Resolver\n+The Bower resolver keeps track of packages in a manifest file, +bower.json+. Bower provides hooks to \n+facilitate using packages in your tools and workflows.\n+\n+You need a +.bowerrc+ JSON file to access the registry URLs. You can create a global file or modify the existing \n+one. Include the registry URL in the file. If, for example, you ever deploy a package to a single Bower \n+hosted repo, set up your +.bowerrc+ like the example, below. \n+----\n+\"registry\": {\n+       \"search\": [\"http://localhost:8081/repository/bower-group\"],\n+       \"register\": [\"http://admin:admin123@localhost:8081/repository/bower-hosted\"]\n+\t   \"resolvers\": [\"bower-nexus3-resolver\"]\n+    }\n+---- \n+\n+The URL you configure for the resolver should be in the group. Since you cannot register to a group nor search a \n+hosted repository this configuration is necessary. Also, duplicating the resolver value is not necessary. \n+Once configured it becomes executable in the +.bowerrc+ located in your home directory.\n+\n+You have the option to configure multiple search places, but you will only be able to use one register URL. In \n+other words you can only use one hosted repository at a time. \n \n-You need a +.bowerrc+ JSON file to use the Bower resolver. You can create a global file or modify your existing global file. Include the registry URL in the file.\n+For example, you might have two hosted repositories (e.g. Hosted1 and Hosted2) and want to push to Hosted1, then \n+later to Hosted2. You would need to manually adjust the register line in the +bowerrc+ example, above.\n+\n+If you wish to maintain a private registry, change the value in the file as shown:","path":"chapter-bower.asciidoc","position":113,"original_position":113,"commit_id":"be6dcaea58acbe67148a2a8a2cbc19e96fb8223e","original_commit_id":"be6dcaea58acbe67148a2a8a2cbc19e96fb8223e","user":{"login":"fjmilens3","id":3869125,"avatar_url":"https://avatars.githubusercontent.com/u/3869125?v=3","gravatar_id":"","url":"https://api.github.com/users/fjmilens3","html_url":"https://github.com/fjmilens3","followers_url":"https://api.github.com/users/fjmilens3/followers","following_url":"https://api.github.com/users/fjmilens3/following{/other_user}","gists_url":"https://api.github.com/users/fjmilens3/gists{/gist_id}","starred_url":"https://api.github.com/users/fjmilens3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fjmilens3/subscriptions","organizations_url":"https://api.github.com/users/fjmilens3/orgs","repos_url":"https://api.github.com/users/fjmilens3/repos","events_url":"https://api.github.com/users/fjmilens3/events{/privacy}","received_events_url":"https://api.github.com/users/fjmilens3/received_events","type":"User","site_admin":false},"body":"Hosted is always in some sense a private registry, so I'm not sure this makes a lot of sense. The difference is that if you have more than one that you're using, you may want to go the per-project .bowerrc instead of editing your main one.","created_at":"2016-02-17T15:14:03Z","updated_at":"2016-02-17T15:14:03Z","html_url":"https://github.com/sonatype/nexus-book/pull/133#discussion_r53177235","pull_request_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/133","_links":{"self":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments/53177235"},"html":{"href":"https://github.com/sonatype/nexus-book/pull/133#discussion_r53177235"},"pull_request":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/133"}}},"pull_request":{"url":"https://api.github.com/repos/sonatype/nexus-book/pulls/133","id":58851121,"html_url":"https://github.com/sonatype/nexus-book/pull/133","diff_url":"https://github.com/sonatype/nexus-book/pull/133.diff","patch_url":"https://github.com/sonatype/nexus-book/pull/133.patch","issue_url":"https://api.github.com/repos/sonatype/nexus-book/issues/133","number":133,"state":"open","locked":false,"title":"Add Hosted and Group Repo entries to bower doc","user":{"login":"dulanism","id":5214266,"avatar_url":"https://avatars.githubusercontent.com/u/5214266?v=3","gravatar_id":"","url":"https://api.github.com/users/dulanism","html_url":"https://github.com/dulanism","followers_url":"https://api.github.com/users/dulanism/followers","following_url":"https://api.github.com/users/dulanism/following{/other_user}","gists_url":"https://api.github.com/users/dulanism/gists{/gist_id}","starred_url":"https://api.github.com/users/dulanism/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dulanism/subscriptions","organizations_url":"https://api.github.com/users/dulanism/orgs","repos_url":"https://api.github.com/users/dulanism/repos","events_url":"https://api.github.com/users/dulanism/events{/privacy}","received_events_url":"https://api.github.com/users/dulanism/received_events","type":"User","site_admin":false},"body":"Add Hosted and Group Repo entries to bower doc\r\n\r\nCI: http://bamboo.s/browse/BOOK-NEXUS94\r\nJIRA: https://issues.sonatype.org/browse/NEXUS-9579\r\nhttps://issues.sonatype.org/browse/NEXUS-9581","created_at":"2016-02-10T06:03:28Z","updated_at":"2016-02-17T15:14:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5ee4681073009e3c0b2f9f410a40f6feb9ab242d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/133/commits","review_comments_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/133/comments","review_comment_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/issues/133/comments","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/be6dcaea58acbe67148a2a8a2cbc19e96fb8223e","head":{"label":"sonatype:NEXUS-9581-bower","ref":"NEXUS-9581-bower","sha":"be6dcaea58acbe67148a2a8a2cbc19e96fb8223e","user":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"repo":{"id":188759,"name":"nexus-book","full_name":"sonatype/nexus-book","owner":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sonatype/nexus-book","description":"Repository Management with Nexus","fork":false,"url":"https://api.github.com/repos/sonatype/nexus-book","forks_url":"https://api.github.com/repos/sonatype/nexus-book/forks","keys_url":"https://api.github.com/repos/sonatype/nexus-book/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sonatype/nexus-book/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sonatype/nexus-book/teams","hooks_url":"https://api.github.com/repos/sonatype/nexus-book/hooks","issue_events_url":"https://api.github.com/repos/sonatype/nexus-book/issues/events{/number}","events_url":"https://api.github.com/repos/sonatype/nexus-book/events","assignees_url":"https://api.github.com/repos/sonatype/nexus-book/assignees{/user}","branches_url":"https://api.github.com/repos/sonatype/nexus-book/branches{/branch}","tags_url":"https://api.github.com/repos/sonatype/nexus-book/tags","blobs_url":"https://api.github.com/repos/sonatype/nexus-book/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sonatype/nexus-book/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sonatype/nexus-book/git/refs{/sha}","trees_url":"https://api.github.com/repos/sonatype/nexus-book/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/{sha}","languages_url":"https://api.github.com/repos/sonatype/nexus-book/languages","stargazers_url":"https://api.github.com/repos/sonatype/nexus-book/stargazers","contributors_url":"https://api.github.com/repos/sonatype/nexus-book/contributors","subscribers_url":"https://api.github.com/repos/sonatype/nexus-book/subscribers","subscription_url":"https://api.github.com/repos/sonatype/nexus-book/subscription","commits_url":"https://api.github.com/repos/sonatype/nexus-book/commits{/sha}","git_commits_url":"https://api.github.com/repos/sonatype/nexus-book/git/commits{/sha}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/comments{/number}","issue_comment_url":"https://api.github.com/repos/sonatype/nexus-book/issues/comments{/number}","contents_url":"https://api.github.com/repos/sonatype/nexus-book/contents/{+path}","compare_url":"https://api.github.com/repos/sonatype/nexus-book/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sonatype/nexus-book/merges","archive_url":"https://api.github.com/repos/sonatype/nexus-book/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sonatype/nexus-book/downloads","issues_url":"https://api.github.com/repos/sonatype/nexus-book/issues{/number}","pulls_url":"https://api.github.com/repos/sonatype/nexus-book/pulls{/number}","milestones_url":"https://api.github.com/repos/sonatype/nexus-book/milestones{/number}","notifications_url":"https://api.github.com/repos/sonatype/nexus-book/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sonatype/nexus-book/labels{/name}","releases_url":"https://api.github.com/repos/sonatype/nexus-book/releases{/id}","deployments_url":"https://api.github.com/repos/sonatype/nexus-book/deployments","created_at":"2009-04-29T20:25:10Z","updated_at":"2016-02-10T11:45:33Z","pushed_at":"2016-02-17T06:30:52Z","git_url":"git://github.com/sonatype/nexus-book.git","ssh_url":"git@github.com:sonatype/nexus-book.git","clone_url":"https://github.com/sonatype/nexus-book.git","svn_url":"https://github.com/sonatype/nexus-book","homepage":"http://books.sonatype.com/nexus-book/reference/index.html","size":697204,"stargazers_count":44,"watchers_count":44,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":20,"mirror_url":null,"open_issues_count":5,"forks":20,"open_issues":5,"watchers":44,"default_branch":"master"}},"base":{"label":"sonatype:nexus-3.0.x","ref":"nexus-3.0.x","sha":"5ec1267ca708a07c7960e7f5de65638e43c84e81","user":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"repo":{"id":188759,"name":"nexus-book","full_name":"sonatype/nexus-book","owner":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sonatype/nexus-book","description":"Repository Management with Nexus","fork":false,"url":"https://api.github.com/repos/sonatype/nexus-book","forks_url":"https://api.github.com/repos/sonatype/nexus-book/forks","keys_url":"https://api.github.com/repos/sonatype/nexus-book/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sonatype/nexus-book/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sonatype/nexus-book/teams","hooks_url":"https://api.github.com/repos/sonatype/nexus-book/hooks","issue_events_url":"https://api.github.com/repos/sonatype/nexus-book/issues/events{/number}","events_url":"https://api.github.com/repos/sonatype/nexus-book/events","assignees_url":"https://api.github.com/repos/sonatype/nexus-book/assignees{/user}","branches_url":"https://api.github.com/repos/sonatype/nexus-book/branches{/branch}","tags_url":"https://api.github.com/repos/sonatype/nexus-book/tags","blobs_url":"https://api.github.com/repos/sonatype/nexus-book/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sonatype/nexus-book/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sonatype/nexus-book/git/refs{/sha}","trees_url":"https://api.github.com/repos/sonatype/nexus-book/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/{sha}","languages_url":"https://api.github.com/repos/sonatype/nexus-book/languages","stargazers_url":"https://api.github.com/repos/sonatype/nexus-book/stargazers","contributors_url":"https://api.github.com/repos/sonatype/nexus-book/contributors","subscribers_url":"https://api.github.com/repos/sonatype/nexus-book/subscribers","subscription_url":"https://api.github.com/repos/sonatype/nexus-book/subscription","commits_url":"https://api.github.com/repos/sonatype/nexus-book/commits{/sha}","git_commits_url":"https://api.github.com/repos/sonatype/nexus-book/git/commits{/sha}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/comments{/number}","issue_comment_url":"https://api.github.com/repos/sonatype/nexus-book/issues/comments{/number}","contents_url":"https://api.github.com/repos/sonatype/nexus-book/contents/{+path}","compare_url":"https://api.github.com/repos/sonatype/nexus-book/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sonatype/nexus-book/merges","archive_url":"https://api.github.com/repos/sonatype/nexus-book/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sonatype/nexus-book/downloads","issues_url":"https://api.github.com/repos/sonatype/nexus-book/issues{/number}","pulls_url":"https://api.github.com/repos/sonatype/nexus-book/pulls{/number}","milestones_url":"https://api.github.com/repos/sonatype/nexus-book/milestones{/number}","notifications_url":"https://api.github.com/repos/sonatype/nexus-book/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sonatype/nexus-book/labels{/name}","releases_url":"https://api.github.com/repos/sonatype/nexus-book/releases{/id}","deployments_url":"https://api.github.com/repos/sonatype/nexus-book/deployments","created_at":"2009-04-29T20:25:10Z","updated_at":"2016-02-10T11:45:33Z","pushed_at":"2016-02-17T06:30:52Z","git_url":"git://github.com/sonatype/nexus-book.git","ssh_url":"git@github.com:sonatype/nexus-book.git","clone_url":"https://github.com/sonatype/nexus-book.git","svn_url":"https://github.com/sonatype/nexus-book","homepage":"http://books.sonatype.com/nexus-book/reference/index.html","size":697204,"stargazers_count":44,"watchers_count":44,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":20,"mirror_url":null,"open_issues_count":5,"forks":20,"open_issues":5,"watchers":44,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/133"},"html":{"href":"https://github.com/sonatype/nexus-book/pull/133"},"issue":{"href":"https://api.github.com/repos/sonatype/nexus-book/issues/133"},"comments":{"href":"https://api.github.com/repos/sonatype/nexus-book/issues/133/comments"},"review_comments":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/133/comments"},"review_comment":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/133/commits"},"statuses":{"href":"https://api.github.com/repos/sonatype/nexus-book/statuses/be6dcaea58acbe67148a2a8a2cbc19e96fb8223e"}}}}