{"id":21703289,"url":"https://github.com/hacklone/private-bower","last_synced_at":"2025-04-12T03:51:53.201Z","repository":{"id":16666784,"uuid":"19422460","full_name":"Hacklone/private-bower","owner":"Hacklone","description":"A simple private bower registry","archived":false,"fork":false,"pushed_at":"2018-06-20T19:55:38.000Z","size":1937,"stargazers_count":665,"open_issues_count":50,"forks_count":130,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-12T03:51:50.896Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hacklone.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-04T08:45:07.000Z","updated_at":"2025-01-23T23:56:19.000Z","dependencies_parsed_at":"2022-09-15T21:10:42.217Z","dependency_job_id":null,"html_url":"https://github.com/Hacklone/private-bower","commit_stats":null,"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hacklone%2Fprivate-bower","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hacklone%2Fprivate-bower/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hacklone%2Fprivate-bower/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hacklone%2Fprivate-bower/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hacklone","download_url":"https://codeload.github.com/Hacklone/private-bower/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248514209,"owners_count":21116899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T21:30:18.689Z","updated_at":"2025-04-12T03:51:53.181Z","avatar_url":"https://github.com/Hacklone.png","language":"JavaScript","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=XD9FKUJYSPP74"],"categories":[],"sub_categories":[],"readme":"[npm-url]: https://npmjs.org/package/private-bower\n[npm-image]: https://img.shields.io/npm/v/private-bower.svg\n[downloads-image]: https://img.shields.io/npm/dm/private-bower.svg\n[total-downloads-image]:\nhttps://img.shields.io/npm/dt/private-bower.svg\n[codeship-url]: https://codeship.com/projects/54990\n[codeship-image]: https://img.shields.io/codeship/662b04e0-7427-0132-ff21-2aca0eeadc1e/master.svg\n\nprivate-bower [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]  [![Total Downloads][total-downloads-image]][npm-url]\n============\n\u003cimg src=\"https://raw.githubusercontent.com/Hacklone/private-bower/master/site/logo.png\" alt=\"private-bower\" width=\"250\" height=\"250\" /\u003e\n\nThe ultimate private bower server.\n\n\u003ca href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=XD9FKUJYSPP74\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif\" /\u003e\n\u003c/a\u003e \n\nTwitter: \u003ca href=\"https://twitter.com/private_bower\"\u003e@private_bower\u003c/a\u003e, \u003ca href=\"https://twitter.com/hashtag/private_bower?src=hash\"\u003e#private_bower\u003c/a\u003e\n\n- [Features](#features)\n- [Features to come](#features-to-come)\n- [Installation](#installation)\n- [Parameters](#parameters)\n- [Config file](#config-file)\n- [Usage](#usage)\n  - [Web interface](#web-interface)\n  - [Project](#project)\n  - [List packages](#list-packages)\n  - [Search packages](#search-packages)\n  - [Register package](#register-package)\n  - [Register packages](#register-packages)\n  - [Remove package](#remove-package)\n  - [Remove packages](#remove-packages)\n  - [Restart server](#restart-server)\n  - [Refresh caches](#refresh-caches)\n  - [Authentication](#authentication)\n  - [Log4js configuration examples](#log4js-configuration-examples)\n- [License](#license)\n- [Tips for usage](#tips-for-usage)\n- [Contributing](#contributing)\n\n# Features\n\n*   Register private packages\n*   Fallback to public packages\n*   Cache public registry\n*   Cache public git repositories\n*   Cache public svn repositories\n*   Web UI with package details\n*   Web UI package management\n*   Blacklist public packages\n*   Whitelist public packages\n\n# Installation\n\nInstall\n\u003e npm install -g private-bower\n\nRun\n\u003e private-bower\n\nRun with config file specified\n\u003e private-bower --config ./myBowerConfig.json\n\nIf there's no private package with requested package name the servers calls through to the public bower registry.\n\n# Parameters\n\n| name       | description                                    |\n|------------|------------------------------------------------|\n| --help     | print out help                                 |\n| --config   | path to config file (Must be a valid json)     |\n\n# Config file\n\nMust be a valid JSON\n```javascript\n{\n    \"registryFile\": \"./bowerRepository.json\",\n    \"timeout\": 144000,\n    \"server\": {\n        \"port\": 5678,\n        \"hostName\": null,\n        \"siteBaseUrl\": null\n    },\n    \"public\": {\n        \"disabled\": false,\n        \"registry\": \"http://bower.herokuapp.com/packages\",\n        \"registryFile\": \"./bowerRepositoryPublic.json\",\n        \"whitelist\": [],\n        \"blacklist\": []\n    },\n    \"authentication\": {\n        \"enabled\": false,\n        \"key\": \"password\"\n    },\n    \"repositoryCache\": {\n        \"cachePrivate\": false,\n        \"git\": {\n            \"enabled\": false,\n            \"cacheDirectory\": \"./gitRepoCache\",\n            \"host\": \"localhost\",\n            \"port\": 6789,\n            \"protocol\": \"git\",\n            \"publicAccessURL\": null,\n            \"refreshTimeout\": 10,\n            \"refreshDisabled\": false\n        },\n        \"svn\": {\n            \"enabled\": false,\n            \"cacheDirectory\": \"./svnRepoCache\",\n            \"host\": \"localhost\",\n            \"port\": 7891,\n            \"protocol\": \"svn\",\n            \"publicAccessURL\": null,\n            \"refreshTimeout\": 10,\n            \"refreshDisabled\": false\n        }\n    },\n    \"proxySettings\" : {\n        \"enabled\": false,\n        \"host\": \"proxy\",\n        \"username\": \"name\",\n        \"password\": \"pass\",\n        \"port\": 8080,\n        \"tunnel\": false\n    },\n    \"log4js\" : {\n        \"enabled\": false,\n        \"configPath\": \"log4js.conf.json\"\n    }\n}\n```\n\n| name                                       | description                                                                          | default                               |\n|--------------------------------------------|--------------------------------------------------------------------------------------|---------------------------------------|\n| server.port                                | Port on which the private bower server will listen                                   | 5678 (process.env.PORT if set)        |\n| server.hostName                            | Host name on which the private bower server will listen                              | null (process.env.IP if set)          |\n| server.siteBaseUrl                         | Load private bower server on a specific path, useful for using a reverse proxy       | null                                  |\n| registryFile                               | File for persisting private packages (must be a valid json)                          | ./bowerRepository.json                |\n| timeout                                    | Server package timeout                                                               | 144 000                               |\n| public.disabled                            | Disable fallback feature for public packages                                         | false                                 |\n| public.registry                            | Public bower registry's url                                                          | https://registry.bower.io  |\n| public.registryFile                        | File for persisting public packages (must be a valid json)                           | ./bowerRepositoryPublic.json          |\n| public.whitelist                           | Define public packages that are allowed to be installed                              | \\[\\]                                  |\n| public.blacklist                           | Define public packages that are not allowed to be installed                          | \\[\\]                                  |\n| authentication.enabled                     | Authentication enabled for registering packages                                      | false                                 |\n| authentication.key                         | Authentication key (Auth-Key header)                                                 | password                              |\n| repositoryCache.(svn, git).enabled         | Public repository caching enabled                                                    | false                                 |\n| repositoryCache.cachePrivate               | Also cache privately registered packages                                             | false                                 |\n| repositoryCache.(svn, git).host            | Server's host name for repository access                                             | localhost                             |\n| repositoryCache.(svn, git).port            | Port to open repository server on                                                    | 7891, 6789                            |\n| repositoryCache.(svn, git).protocol        | Protocol the mirrored repositories will use                                          | git, svn, https, http                 |\n| repositoryCache.(svn, git).publicAccessURL | Public address to access repository cache (useful if repository is behind an apache) | null                                  |\n| repositoryCache.(svn, git).cacheDirectory  | Directory where the public repository cache will save repositories                   | ./svnRepoCache, ./gitRepoCache        |\n| repositoryCache.(svn, git).refreshTimeout  | Time to wait between repository cache refresh (minutes)                              | 10 minutes                            |\n| repositoryCache.(svn, git).refreshDisabled | Disable automatic updates of the cached repository source code                       | false                                 |\n| repositoryCache.(svn, git).parameters.X    | Custom parameters for git-daemon and svnserve                                        | undefined                             |\n| proxySettings.enabled                      | Enable the proxy, use the proxy to call the bower remote repo                        | false                                 |\n| proxySettings.host                         | Proxy host                                                                           | proxy                                 |\n| proxySettings.username                     | Proxy username                                                                       | name                                  |\n| proxySettings.password                     | Proxy password                                                                       | pass                                  |\n| proxySettings.port                         | Proxy port                                                                           | 8080                                  |\n| proxySettings.tunnel                       | Use tunnel?                                                                          | false                                 |\n| log4js.enabled                             | Use log4js ?                                                                         | false                                 |\n| log4js.configPath                          | Log4js configuration file. See: log4js-node for configuration options                | none                                  |\n\n\n\n\n# Usage\n\n## Web interface\nConvenient way for viewing your packages in a browser.  The web interface will only list your private packages, it will \nnot list the public packages if you have a public registry enabled.  However, when searching for packages in bower, the \npublic ones will show up just fine.\n   \n\u003e http://localhost:5678/\n\n## Project\nWithin your project, you will need to create a .bowerrc file containing the URL of your private bower server:\n```json\n{\n  \"registry\": \"http://yourPrivateBowerRepo:5678\",\n  \"timeout\": 300000\n}\n```\n\nIf you are using private bower with `server.siteBaseURL` option, you need to add the same path the registry url in your .bowerrc file:\n\nConfig\n```json\n{\n  \"server\": {\n    \"port\": 6789,\n    \"hostName\": \"yourPrivateBowerRepo\",\n    \"setBaseURL\": \"/my-private-bower\"\n  }\n}\n```\n\n.bowerrc\n```json\n{\n  \"registry\": \"http://yourPrivateBowerRepo:6789/my-private-bower\",\n  \"timeout\": 300000\n}\n```\n\n## List packages\nGET\n\u003e bower-server:5678/packages\n\n## Search packages\n\u003e bower search \\[packageName\\]\n\n## Register package\n\u003e bower register \\[packageName\\] \\[gitRepo\\]\n\nor\nPOST\n\u003e bower-server:5678/packages\n\n\u003e { \"name\": \"package-name\", \"url\": \"git://repoPath\" }\n\nor\nPOST\n\u003e bower-server:5678/packages/\\\u003cpackage name\\\u003e\n\n\u003e { \"url\": \"git://repoPath\" }\n\n## Register packages\nPOST\n\u003e bower-server:5678/packages\n\n\u003e [ { \"name\": \"package-name\", \"url\": \"git://repoPath\" } ]\n\n## Remove package\nDELETE\n\u003e bower-server:5678/packages/\\\u003cpackage name\\\u003e\n\n## Remove packages\nDELETE\n\u003e bower-server:5678/packages\n\n\u003e [\"package-name\"]\n\n## Restart server\nPOST\n\u003e bower-server:5678/restart\n\n## Refresh caches\nPOST\n\u003e bower-server:5678/refresh\n\n## Authentication\n\nAuthentication can be enabled for the following features:\n*   Register package\n*   Register packages\n*   Remove package\n*   Remove packages\n*   Restart server\n\nAdd ```Auth-Key``` header to request.\n\u003e Auth-Key = password\n\n\n## Log4js configuration\n\u003eThere are two appenders set in the example configuration.\n\u003eYou need to remove one of the two if you want to use it.\n\u003efileDate appender will write the log to a file which will be rotated daily.\n\u003eConsole will write the logging to the console in the log4js format.\n\u003eYou need to set the replaceConsole to true if you want to write the logging to the log4j appenders.\n\u003eSee github.com/nomiddlename/log4js-node for more information\n\n# Tips for usage\n## Server as a service\n- [Installing on Ubuntu](https://github.com/Hacklone/private-bower/wiki/Installing%20on%20Ubuntu)\n- [Install as a Windows service](https://github.com/Hacklone/private-bower/wiki/Install%20as%20a%20Windows%20service)\n\n## Use behind proxy\n\u003e git config --global url.\"https://\".insteadOf git://\n\n## Calling the API\n- do not forget to set the ```Content-Type``` header to ```application/json```\n\n# Contributing\nPlease read the rules of contributing on the [contribution page](https://github.com/Hacklone/private-bower/blob/master/CONTRIBUTING.md).\n\n# License\n\u003e The MIT License (MIT)\n\n\u003e Copyright (c) 2014 Hacklone\n\u003e https://github.com/Hacklone\n\n\u003e Permission is hereby granted, free of charge, to any person obtaining a copy\n\u003e of this software and associated documentation files (the \"Software\"), to deal\n\u003e in the Software without restriction, including without limitation the rights\n\u003e to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\u003e copies of the Software, and to permit persons to whom the Software is\n\u003e furnished to do so, subject to the following conditions:\n\n\u003e The above copyright notice and this permission notice shall be included in all\n\u003e copies or substantial portions of the Software.\n\n\u003e THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\u003e IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\u003e FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\u003e AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\u003e LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\u003e OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\u003e SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacklone%2Fprivate-bower","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhacklone%2Fprivate-bower","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacklone%2Fprivate-bower/lists"}