cyb-cli
Version:
塞伯坦CYB-CLI是面向前端模块化工程的构建工具。主要目的是帮助开发者统一前端开发模式和项目开发结构,提高功能扩展和降低维护成本,自动化前端工作流,提高开发效率和开发质量。
79 lines (66 loc) • 1.72 kB
JavaScript
/**
* =================================
* @2018 塞伯坦-CYB前端模块化工程构建工具
* https://github.com/jd-cyb/cyb-cli
* =================================
*/
require('babel-register')({
babelrc: false,
presets: ['env']
})
const path = require('path')
const fs = require('fs')
const configFile = path.join(process.cwd(), 'cyb.config.mock.js')
function getConfig() {
if (fs.existsSync(configFile)) {
return require(configFile).default || require(configFile)
} else {
return {}
}
}
function parseKey(key) {
let method = 'get'
let path = key
if (key.indexOf(' ') > -1) {
const splited = key.split(' ')
method = splited[0].toLowerCase()
path = splited[1]
}
return { method, path }
}
function mockHandler(method, path, value) {
return function mockHandler(...args) {
const res = args[1]
if (typeof value === 'function') {
value(...args)
} else {
res.writeHead(200, { 'Content-Type': 'application/json' })
res.write(JSON.stringify(value))
res.end()
}
}
}
let mockMiddleware = []
function mockMiddle(devServer) {
const config = getConfig()
Object.keys(config).forEach(key => {
const keyParsed = parseKey(key)
if (typeof config[key] === 'string') {
mockMiddleware.push({
route: keyParsed.path,
handle: function(req, res, next) {
res.writeHeader(200, { 'Content-Type': 'text/html' })
res.write(config[key])
res.end()
}
})
} else {
mockMiddleware.push({
route: keyParsed.path,
handle: mockHandler(keyParsed.method, keyParsed.path, config[key])
})
}
})
return mockMiddleware
}
module.exports = mockMiddle