Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
einsqing committed Jul 13, 2016
0 parents commit 2a0fa7b
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 0 deletions.
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
koa文件夹路由加载

## Installation

```sh
$ npm install koa-directory-router
```

## Use with koa

```js
var app = require('koa')();
var directoryRouter = require('koa-directory-router');
var admin = directoryRouter({
root: path.resolve(__dirname, path.normalize('./../app/controller/admin')),
suffix: '.js',
prefix: '/v1'
});
app.use(admin.routes());

忽略路由中的文件名 自定义restful参数
```
作者官网:
http://www.wemallshop.com
48 changes: 48 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
var path = require('path');
var fs = require('fs');
var Router = require('koa-router');

function walk(dir) {
dir = path.resolve(__dirname, dir);
var files = fs.readdirSync(dir);
var list = [];
for (var file of files) {
if (fs.statSync(dir + '/' + file).isDirectory()) {
list = list.concat(walk(dir + '/' + file));
} else {
list.push(dir + '/' + file);
}
}
return list;
}

module.exports = function (options) {
var router = new Router();

if (!options || typeof options.root === 'string') {
if (!path.isAbsolute(options.root)) {
options.root = path.resolve(process.cwd(), options.root);
}
} else {
throw Error('root must be specified');
}

options.suffix = options.suffix || '.js';
options.prefix = options.prefix || '';

var paths = walk(options.root);
paths.forEach(function (value, index) {
var _path = path.relative(options.root, value);

// 忽略路由中的文件名 自定义restful参数
if(_path.indexOf('/') == -1){
_path = '';
} else {
_path = '/' + _path.slice(0, _path.lastIndexOf('/'));
}

router.use(options.prefix + _path, require(value).routes());
});

return router;
};
28 changes: 28 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "koa-directory-router",
"version": "1.0.3",
"description": "koa directory router",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/einsqing/koa-directory-router.git"
},
"keywords": [
"koa",
"koa-router",
"koa-directory-router",
"router"
],
"author": "www.wemallshop.com",
"license": "ISC",
"bugs": {
"url": "https://github.com/einsqing/koa-directory-router/issues"
},
"homepage": "https://github.com/einsqing/koa-directory-router#readme",
"dependencies": {
"koa-router": "^5.4.0"
}
}

0 comments on commit 2a0fa7b

Please sign in to comment.