An open API service indexing awesome lists of open source software.

https://github.com/hacklone/private-bower

A simple private bower registry
https://github.com/hacklone/private-bower

Last synced: about 1 year ago
JSON representation

A simple private bower registry

Awesome Lists containing this project

README

          

[npm-url]: https://npmjs.org/package/private-bower
[npm-image]: https://img.shields.io/npm/v/private-bower.svg
[downloads-image]: https://img.shields.io/npm/dm/private-bower.svg
[total-downloads-image]:
https://img.shields.io/npm/dt/private-bower.svg
[codeship-url]: https://codeship.com/projects/54990
[codeship-image]: https://img.shields.io/codeship/662b04e0-7427-0132-ff21-2aca0eeadc1e/master.svg

private-bower [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Total Downloads][total-downloads-image]][npm-url]
============
private-bower

The ultimate private bower server.



Twitter: @private_bower, #private_bower

- [Features](#features)
- [Features to come](#features-to-come)
- [Installation](#installation)
- [Parameters](#parameters)
- [Config file](#config-file)
- [Usage](#usage)
- [Web interface](#web-interface)
- [Project](#project)
- [List packages](#list-packages)
- [Search packages](#search-packages)
- [Register package](#register-package)
- [Register packages](#register-packages)
- [Remove package](#remove-package)
- [Remove packages](#remove-packages)
- [Restart server](#restart-server)
- [Refresh caches](#refresh-caches)
- [Authentication](#authentication)
- [Log4js configuration examples](#log4js-configuration-examples)
- [License](#license)
- [Tips for usage](#tips-for-usage)
- [Contributing](#contributing)

# Features

* Register private packages
* Fallback to public packages
* Cache public registry
* Cache public git repositories
* Cache public svn repositories
* Web UI with package details
* Web UI package management
* Blacklist public packages
* Whitelist public packages

# Installation

Install
> npm install -g private-bower

Run
> private-bower

Run with config file specified
> private-bower --config ./myBowerConfig.json

If there's no private package with requested package name the servers calls through to the public bower registry.

# Parameters

| name | description |
|------------|------------------------------------------------|
| --help | print out help |
| --config | path to config file (Must be a valid json) |

# Config file

Must be a valid JSON
```javascript
{
"registryFile": "./bowerRepository.json",
"timeout": 144000,
"server": {
"port": 5678,
"hostName": null,
"siteBaseUrl": null
},
"public": {
"disabled": false,
"registry": "http://bower.herokuapp.com/packages",
"registryFile": "./bowerRepositoryPublic.json",
"whitelist": [],
"blacklist": []
},
"authentication": {
"enabled": false,
"key": "password"
},
"repositoryCache": {
"cachePrivate": false,
"git": {
"enabled": false,
"cacheDirectory": "./gitRepoCache",
"host": "localhost",
"port": 6789,
"protocol": "git",
"publicAccessURL": null,
"refreshTimeout": 10,
"refreshDisabled": false
},
"svn": {
"enabled": false,
"cacheDirectory": "./svnRepoCache",
"host": "localhost",
"port": 7891,
"protocol": "svn",
"publicAccessURL": null,
"refreshTimeout": 10,
"refreshDisabled": false
}
},
"proxySettings" : {
"enabled": false,
"host": "proxy",
"username": "name",
"password": "pass",
"port": 8080,
"tunnel": false
},
"log4js" : {
"enabled": false,
"configPath": "log4js.conf.json"
}
}
```

| name | description | default |
|--------------------------------------------|--------------------------------------------------------------------------------------|---------------------------------------|
| server.port | Port on which the private bower server will listen | 5678 (process.env.PORT if set) |
| server.hostName | Host name on which the private bower server will listen | null (process.env.IP if set) |
| server.siteBaseUrl | Load private bower server on a specific path, useful for using a reverse proxy | null |
| registryFile | File for persisting private packages (must be a valid json) | ./bowerRepository.json |
| timeout | Server package timeout | 144 000 |
| public.disabled | Disable fallback feature for public packages | false |
| public.registry | Public bower registry's url | https://registry.bower.io |
| public.registryFile | File for persisting public packages (must be a valid json) | ./bowerRepositoryPublic.json |
| public.whitelist | Define public packages that are allowed to be installed | \[\] |
| public.blacklist | Define public packages that are not allowed to be installed | \[\] |
| authentication.enabled | Authentication enabled for registering packages | false |
| authentication.key | Authentication key (Auth-Key header) | password |
| repositoryCache.(svn, git).enabled | Public repository caching enabled | false |
| repositoryCache.cachePrivate | Also cache privately registered packages | false |
| repositoryCache.(svn, git).host | Server's host name for repository access | localhost |
| repositoryCache.(svn, git).port | Port to open repository server on | 7891, 6789 |
| repositoryCache.(svn, git).protocol | Protocol the mirrored repositories will use | git, svn, https, http |
| repositoryCache.(svn, git).publicAccessURL | Public address to access repository cache (useful if repository is behind an apache) | null |
| repositoryCache.(svn, git).cacheDirectory | Directory where the public repository cache will save repositories | ./svnRepoCache, ./gitRepoCache |
| repositoryCache.(svn, git).refreshTimeout | Time to wait between repository cache refresh (minutes) | 10 minutes |
| repositoryCache.(svn, git).refreshDisabled | Disable automatic updates of the cached repository source code | false |
| repositoryCache.(svn, git).parameters.X | Custom parameters for git-daemon and svnserve | undefined |
| proxySettings.enabled | Enable the proxy, use the proxy to call the bower remote repo | false |
| proxySettings.host | Proxy host | proxy |
| proxySettings.username | Proxy username | name |
| proxySettings.password | Proxy password | pass |
| proxySettings.port | Proxy port | 8080 |
| proxySettings.tunnel | Use tunnel? | false |
| log4js.enabled | Use log4js ? | false |
| log4js.configPath | Log4js configuration file. See: log4js-node for configuration options | none |

# Usage

## Web interface
Convenient way for viewing your packages in a browser. The web interface will only list your private packages, it will
not list the public packages if you have a public registry enabled. However, when searching for packages in bower, the
public ones will show up just fine.

> http://localhost:5678/

## Project
Within your project, you will need to create a .bowerrc file containing the URL of your private bower server:
```json
{
"registry": "http://yourPrivateBowerRepo:5678",
"timeout": 300000
}
```

If you are using private bower with `server.siteBaseURL` option, you need to add the same path the registry url in your .bowerrc file:

Config
```json
{
"server": {
"port": 6789,
"hostName": "yourPrivateBowerRepo",
"setBaseURL": "/my-private-bower"
}
}
```

.bowerrc
```json
{
"registry": "http://yourPrivateBowerRepo:6789/my-private-bower",
"timeout": 300000
}
```

## List packages
GET
> bower-server:5678/packages

## Search packages
> bower search \[packageName\]

## Register package
> bower register \[packageName\] \[gitRepo\]

or
POST
> bower-server:5678/packages

> { "name": "package-name", "url": "git://repoPath" }

or
POST
> bower-server:5678/packages/\

> { "url": "git://repoPath" }

## Register packages
POST
> bower-server:5678/packages

> [ { "name": "package-name", "url": "git://repoPath" } ]

## Remove package
DELETE
> bower-server:5678/packages/\

## Remove packages
DELETE
> bower-server:5678/packages

> ["package-name"]

## Restart server
POST
> bower-server:5678/restart

## Refresh caches
POST
> bower-server:5678/refresh

## Authentication

Authentication can be enabled for the following features:
* Register package
* Register packages
* Remove package
* Remove packages
* Restart server

Add ```Auth-Key``` header to request.
> Auth-Key = password

## Log4js configuration
>There are two appenders set in the example configuration.
>You need to remove one of the two if you want to use it.
>fileDate appender will write the log to a file which will be rotated daily.
>Console will write the logging to the console in the log4js format.
>You need to set the replaceConsole to true if you want to write the logging to the log4j appenders.
>See github.com/nomiddlename/log4js-node for more information

# Tips for usage
## Server as a service
- [Installing on Ubuntu](https://github.com/Hacklone/private-bower/wiki/Installing%20on%20Ubuntu)
- [Install as a Windows service](https://github.com/Hacklone/private-bower/wiki/Install%20as%20a%20Windows%20service)

## Use behind proxy
> git config --global url."https://".insteadOf git://

## Calling the API
- do not forget to set the ```Content-Type``` header to ```application/json```

# Contributing
Please read the rules of contributing on the [contribution page](https://github.com/Hacklone/private-bower/blob/master/CONTRIBUTING.md).

# License
> The MIT License (MIT)

> Copyright (c) 2014 Hacklone
> https://github.com/Hacklone

> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:

> The above copyright notice and this permission notice shall be included in all
> copies or substantial portions of the Software.

> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> SOFTWARE.