59naga/express-npmcdn

View on GitHub
README.md

Summary

Maintainability
Test Coverage
Express NpmCDN
---

<p align="right">
  <a href="https://npmjs.org/package/express-npmcdn">
    <img src="https://img.shields.io/npm/v/express-npmcdn.svg?style=flat-square">
  </a>
  <a href="https://travis-ci.org/59naga/express-npmcdn">
    <img src="http://img.shields.io/travis/59naga/express-npmcdn.svg?style=flat-square">
  </a>
  <a href="https://codeclimate.com/github/59naga/express-npmcdn/coverage">
    <img src="https://img.shields.io/codeclimate/github/59naga/express-npmcdn.svg?style=flat-square">
  </a>
  <a href="https://codeclimate.com/github/59naga/express-npmcdn">
    <img src="https://img.shields.io/codeclimate/coverage/github/59naga/express-npmcdn.svg?style=flat-square">
  </a>
  <a href="https://gemnasium.com/59naga/express-npmcdn">
    <img src="https://img.shields.io/gemnasium/mathiasbynens/he.svg?style=flat-square">
  </a>
</p>

> Hosting npm package files

[API Reference](https://npmcdn.com/express-npmcdn/docs/index.html)

Usage
---

```bash
npm install express --save
npm install cors --save
npm install compression --save
npm install express-npmcdn --save
```

```js
const express = require('express');
const cors = require('cors');
const compression = require('compression');
const npmcdn = require('express-npmcdn');

const port = process.env.PORT || 59798;
const app = express();
app.disable('x-powered-by');
app.use(cors());
app.use(compression());
app.use(npmcdn(`${__dirname}/public/packages/`, {
  api: 'http://registry.npmjs.org', // tarbal source
  maxAge: 60 * 60 * 24 * 365, // one year
  extensions: ['', '.js', '.json', '.html'], // resolve extensions
}));
app.listen(port, () => {
  console.log(`npmcdn is available on http://localhost:${port}!`);
});
```

becomes:

```bash
curl -I http://localhost:59798/jquery
# HTTP/1.1 302 Found
# Access-Control-Allow-Origin: *
# Location: /jquery@2.2.1/

curl -I http://localhost:59798/jquery@2.2.1/
# HTTP/1.1 200 OK
# Access-Control-Allow-Origin: *
# Content-Type: application/javascript
# Content-Length: 258549
#...
```

URL Format
---
* `/package-name` -> `latest version` / `main file`
* `/package-name/README.md` -> `latest version` / `README.md`
* `/package-name@version` -> `version` / `main file`
* `/package-name@version/lib/` -> `version` / `lib/index.js`
* `/package-name@version/docs/` -> `version` / `docs/index.html`

[DEMO](https://cdn.berabou.me/jquery/)

Test
---
```bash
git clone https://github.com/59naga/express-npmcdn.git
cd express-npmcdn

npm install
npm test
```

License
---
[MIT](http://59naga.mit-license.org/)