# expressjs-git

> Serve and receive git repositories with express.

Latest version **0.0.1** (published 2016-03-31) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install expressjs-git
pnpm add expressjs-git
yarn add expressjs-git
bun add expressjs-git
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.0.1 |
| Published | 2016-03-31 |
| First published | 2016-03-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Christian Kernstock |
| Maintainers | prc322 |
| Keywords | git, express |

## Links

- npm: https://www.npmjs.com/package/expressjs-git
- Repository: https://github.com/prc322/node-expressjs-git
- Homepage: https://github.com/prc322/node-expressjs-git#readme
- Issues: https://github.com/prc322/node-expressjs-git/issues
- npm.io page: https://npm.io/package/expressjs-git

## Dependencies (2)

- [extend](https://npm.io/package/extend.md) ^3.0.0
- [through](https://npm.io/package/through.md) ^2.3.8

## Recent versions

- 0.0.1 (latest) — 2016-03-31

## README

# expressjs-git
Serve and receive git repositories with express.

## Installation
`npm i expressjs-git`

## Work in progress
* Callbacks
* Authentification

## Simple usage
```js
var express = require('express');
var expressGit = require('express-git');

var app = express();

var reposMiddle = expressGit({
    folder: path.join(__dirname, 'repos')
});

app.use('/repos/:repository', reposMiddle);

app.listen(8080, function()
{
    console.log('App and running on port 8080.');
});
```

The middleware created here looks for repositories in the folder, provided via the `folder` option. It's done by [`path.join`](https://nodejs.org/api/path.html#path_path_join_path1_path2)ing the `folder` with the parameter `repository` within the url (meaning, you must provide it). This is not working recursive. However, you can replace the "resolve repository path"-logic with your own. See the next section.

## Advanced usage

`npm i glob`

```js
var path = require('path');

var express = require('express');
var expressGit = require('express-git');

var glob = require('glob');

var app = express();

var reposMiddle = expressGit({
    folder: path.join(__dirname, 'repos'),
    resolve: function(request, done)
    {
        if(request.params.repo == null)
        {
            done(new Error('"Repo" not defined.'), null);
            return;
        }

        glob(path.join(this.folder, '**', request.params.repo), function(error, files)
        {
            if(error != null || files.length === 0)
            {
                done(error == null ? new Error(request.params.repo + ' not found.') : error);
                return;
            }

            done(null, files[0]);
        });
    }
});

app.use('/repos/:repo', reposMiddle);

app.listen(8080, function()
{
    console.log('App and running on port 8080.');
});
```

The middleware created here uses [`glob`](https://github.com/isaacs/node-glob) to search recursively within `folder` (yes, `this` is the complete options-object). The repository is identified by the `repo` url parameter.

---
_Source: https://npm.io/package/expressjs-git · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
