node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

x-server

x-server

前端开发辅助工具

安装

npm install x-server

启动

x-server start

修改配置文件命令

> x-server -fe 你的fe目录路径     // 设置fe目录
> x-server -p  默认端 如 c.h5     // 设置默认端
> x-server -b  分支名|分支编号    // 切换到分支
> x-server -t  保存配置文件       // 保存
分支编号可以使用x-server -b命令查看
必须有-t命令才可以会更新配置文件; 没有-t命令 -fe -p 只会被缓存, -b命令没有效果
>x-server -p c.h5 -fe c:/work/fe -b 1 -t
该命令会将fe目录更新为c:/work/fe
将c.h5指向branches目录下的第一个分支
并更新配置文件

查询配置信息的命令

> x-server -fe   //查看fe目录
> x-server -p    //查看业务端
> x-server -b    //查看可配置的分支
> x-server -h    //查看帮助

路由规则配置文件

./lib/router/router.json

格式

  • pattern: 通用规则 ; 所有的url都会应用此规则转换 url.replace(regExp, replace) url包含域名
    • regExp : 正则表达式
    • replace: 替换规则
  • list: 其他规则配置(可以根据不同的域名配置不同的根目录)
    • 支持(*)通配符,但是优先完整域名配置
    • directory 域名指向的根目录
    • regExp 正则
    • replace 替换规则
    • 也可以直接配置根目录

如下面的配置:

    {
        "pattern": {
        "regExp": "^([^\\/]*)(?:\\/revs){1}(.+)(?:_[a-z0-9]{8}){1}(.*)",
        "replace": "$1$2$3"
    },
    "list": {
        "*static.com": {
          "directory": "d:/work/fe",
          "regExp": "(?:http[s]?:\/\/)?(\\w+)\\.(\\w+)\\.static\\.com(.*)",
          "replace": "/dev/$1/$2/trunk$3"
        },
        "core.pc.static.com": "D:/work/fe"
      }
    }

若请求的url为http://c.pc.lietou-static.com/revs/v1/js/resume_12319023.js

    //c.pc.static.com 与*.static.com匹配
    //先进行通用规则转换
    url = "c.pc.static.com/revs/v1/js/resume_12319023.js".replace(/^([^\/]*)(?:\/revs){1}(.+)(?:_[a-z0-9]{8}){1}(.*)/, '$1$2$3');

    //url=c.pc.static.com/v1/js/resume.js
    //再执行*static.com的规则转换
    url.replace(/(?:http[s]?:\/\/)?(\w+)\.(\w+)\.static\.com(.*)"/,'/dev/$1/$2/trunk/$3');

    //最终生成相对于根目录的文件的绝对路径
    url=/dev/c/pc/trunk/v1/js/resume.js

    //文件在本地的真实路径
    d:/work/fe/dev/c/pc/trunk/v1/js/resume.js

若请求的url为http://core.pc.static.com/revs/v1/js/resume_12319023.js

    //core.pc.static.com 优先匹配 "core.pc.static.com"
    //忽略*static.com 仅执行通用规则转换
    //最终生成的文件路径为:
    /v1/js/resume.js

自定义服务

  • 如果有需要也可以自定义请求处理,如:

      //引入x-server
      var app = require('x-server');
      var fs = require('fs');
      var handler = app.handler;
      handler.add('/index', function (req, res) {
       //自定义处理/index请求
      });
      handler.add('/hello', function (req, res) {
        //自定义处理 /hello请求
        //通过app.query获取传入的参数
        app.query(req, function (err, data) {
          //回调函数参数第一个为异常对象, 没有异常则为null
          //第二个参数为解析后的请求参数, 是一个json格式的数据
          res.writeHead(200, {
            'Content-Type': 'text/plain'
          });
          res.end(JSON.stringify(data));
        });
      });
      //启动服务
      app.start();