Skip to content

Commit

Permalink
支持*通配符操作 test9*.js
Browse files Browse the repository at this point in the history
wei.ma1 committed Aug 9, 2021
1 parent 68a6084 commit 1faa7e4
Showing 6 changed files with 117 additions and 37 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -141,3 +141,23 @@ export default {
params: getRequest().query
};
```



```angular2html
// 支持*通配符操作 test9*.js
// url地址:http://localhost:port/api/test9/xxxx
import { sleep, validate } from 'es6-mock';
sleep(500);
validate({
method: 'get'
});
export default {
code: '01',
desc: 'xxx'
};
```
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "es6-mock",
"version": "2.1.2",
"version": "2.2.0",
"description": "es6-mock",
"main": "src/index.js",
"scripts": {
79 changes: 79 additions & 0 deletions src/getFileContent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
const fs = require('fs');
const path = require('path');

const tails = ['.js', '.ts', '.jsx', '.vue'];

/**
* 获取存在的文件路径
* @param moduleName
* @returns {{filename, content: string}|*}
*/
function getFilePath(moduleName, dir, originFilename) {
let filePath = '';
let isExist = false;
if (moduleName.match(/\.\w+$/)) {
isExist = fs.existsSync(moduleName);
filePath = moduleName;
}

if (!isExist) {
isExist = tails.some(tail => {
const filename = `${moduleName}${tail}`;
if (fs.existsSync(filename)) {
filePath = filename;
return true;
}
return false;
});
}

if (!isExist) {
if(fs.existsSync(moduleName) && originFilename){
const files = fs.readdirSync(moduleName);
if (!originFilename.match(/\.\w+$/)) {
originFilename += '.js';
}
for (const file of files){
if (file.match(/\.\w+$/) && originFilename.match(new RegExp(file.replace(/\*/g, '.*')))) {
isExist = true;
filePath = path.join(moduleName, file);
break;
}
}
}
}

if (!isExist && moduleName.indexOf(dir) === 0) {
const parentPath = moduleName.replace(/\/[^\/]+\/?$/, '');
// 更新当前父目录 用于require路径
global.__parentPath = parentPath;
return getFilePath(parentPath, dir, originFilename || moduleName);
}

return {
isExist,
filename: filePath
};

}


/**
* 获取模块内容
* @param moduleName
* @returns {{filename, content: string}|*}
*/
function getFileContent(moduleName, dir) {
const { isExist, filename } = getFilePath(moduleName, dir);
if (isExist) {
return {
content: fs.readFileSync(filename, 'utf8'),
filename
}
}

throw Error(`the file not exists: ${moduleName}`);
}


module.exports = getFileContent;
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ module.exports = function ({ dir, path: urlPath, bodyParserApp }) {
try {
global.__request = request;
global.__response = response;
const content = miniRequire(file);
const content = miniRequire(file, path.join(process.cwd(), dir));
if (request.validated) {
sleep(0);
}
38 changes: 3 additions & 35 deletions src/mini-require.js
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ const fs = require('fs');
const path = require('path');
const sleep = require('./sleep');
const validate = require('./validate');
const getFileContent = require('./getFileContent');

const tails = ['.js', '.ts', '.jsx', '.vue'];

@@ -10,7 +11,7 @@ const tails = ['.js', '.ts', '.jsx', '.vue'];
* @param moduleName
* @returns {*}
*/
function miniRequire(moduleName) {
function miniRequire(moduleName, dir) {
// 加载公共库
if (moduleName && moduleName.match(/^[^.\/]/)) {
return require(moduleName);
@@ -22,7 +23,7 @@ function miniRequire(moduleName) {

global.__parentPath = filePath.replace(/\/[^/]+$/, '');

const { content, filename } = getContent(filePath) || {};
const { content, filename } = getFileContent(filePath, dir) || {};
const param = [
'exports', 'module', 'require',
'__dirname', '__filename',
@@ -56,39 +57,6 @@ function miniRequire(moduleName) {
return result;
}

/**
* 获取模块内容
* @param moduleName
* @returns {{filename, content: string}|*}
*/
function getContent(moduleName) {
if (moduleName.match(/\.\w+$/)) {
return {
content: fs.readFileSync(moduleName, 'utf8'),
filename: moduleName
};
}
let result;

tails.some(tail => {
const filename = `${moduleName}${tail}`;

if (fs.existsSync(filename)) {
result = {
content: fs.readFileSync(filename, 'utf8'),
filename: filename,
};
return true;
}
return false;
});

if (result) {
return result;
}
throw Error(`the file not exists: ${moduleName}`);
}

/**
* 获取模块全路径
* @param moduleName
13 changes: 13 additions & 0 deletions test/test9*.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { sleep, validate } from '../src/index';

sleep(500);

validate({
param: {},
method: 'get'
});

export default {
code: '01',
desc: 'xxx'
};

0 comments on commit 1faa7e4

Please sign in to comment.