nether-swap

0.0.1 • Public • Published

nether swap

一个 express 中间件,劫持静态文件的请求,如文件系统中该存在符合规则的模拟文件,返回模拟文件。

用法

后台

var express = require('express');
var swap = require('nether-swap');
 
var app = express();
app.use(swap());
app.use('/static', express.static('static-dir'))

系统文件

  • /static/doudou-sdk.js (原始文件)
  • /static/doudou-sdk.mock.js (模拟文件)

前端请求

<!-- 响应 /static/doudou-sdk.mock.js -->
<script src='/static/doudou-sdk.js'></script>
<script src='/static/doudou-sdk.js?version=0.0.1'></script>
 
<!-- 配置了 noswap 响应 /static/doudou-sdk.js -->
<script src='/static/doudou-sdk.js?noswap'></script>
 
<!-- 不存在 other-lib.mock.js 响应 /static/other-lib.js -->
<script src='/static/other-lib.js'></script>

API: swap(optsions)

options.redirect (Boolean)

可选参数。

是否通过通过重定向的响应模拟问句。 默认为 false

options.rule (Function)

可选参数。

匹配代理的规则。默认方法如下:

/**
 * 将所有 *.js请求,响应为 *.mock.js
 * @parem reqpath 请求路径
 */
function (reqpath) {
  return reqpath.replace(/\.js($|\?.*)/, ".mock.js$1");
}

option.root (String)

可选参数。

表示静态目录根目录。默认为 .

完整配置实例

// dependencies omitted
app.use(swap({
  redirect: true,
  rule: function () {
    return reqpath.replace(/\.js($|\?.*)/, ".fake.js$1");
  },
  root: path.resolve(__dirname, './static-dir')
}))

开发/测试

# get the code 
git clone <URL>
# install dependencies 
npm i
# start test server 
node test-server.js
# unit test 
npm run test

名字

Nether Swap,移形换位,是 Dota/Dota 2 英雄——复仇之魂 (Vengeful Spirit) 的终极技能

Package Sidebar

Install

npm i nether-swap

Weekly Downloads

0

Version

0.0.1

License

ISC

Last publish

Collaborators

  • unclebill