mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-19 05:48:17 +00:00
feat: add template create tool
This commit is contained in:
parent
abc602b4a1
commit
e906683a1a
@ -9,10 +9,12 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rimraf lib && tsc",
|
"build": "rimraf lib && tsc",
|
||||||
"demo": "ts-node -r tsconfig-paths/register ./src/demo/main.ts",
|
"demo": "ts-node -r tsconfig-paths/register ./src/demo/main.ts",
|
||||||
"test": "ava"
|
"test": "ava",
|
||||||
|
"template": "node ./tools/createTemplate.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ali/am-eslint-config": "*",
|
"@ali/am-eslint-config": "*",
|
||||||
|
"@babel/parser": "^7.9.4",
|
||||||
"@types/prettier": "^1.19.1",
|
"@types/prettier": "^1.19.1",
|
||||||
"change-case": "^3.1.0",
|
"change-case": "^3.1.0",
|
||||||
"prettier": "^2.0.2",
|
"prettier": "^2.0.2",
|
||||||
|
|||||||
85
packages/code-generator/tools/createTemplate.js
Normal file
85
packages/code-generator/tools/createTemplate.js
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
const fs = require("fs");
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
console.log(process.argv);
|
||||||
|
let root = '';
|
||||||
|
const pathArgIndex = process.argv.indexOf('--path');
|
||||||
|
if (pathArgIndex >= 0) {
|
||||||
|
root = process.argv[pathArgIndex + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!root) {
|
||||||
|
throw new Error('Can\'t find path argument');
|
||||||
|
}
|
||||||
|
|
||||||
|
function cloneStr(str, times) {
|
||||||
|
let count = times;
|
||||||
|
const arr = [];
|
||||||
|
while(count > 0) {
|
||||||
|
arr.push(str);
|
||||||
|
count -= 1;
|
||||||
|
}
|
||||||
|
return arr.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
function createTemplateFile(root, internalPath, fileName) {
|
||||||
|
//不是文件夹,则添加type属性为文件后缀名
|
||||||
|
const fileTypeSrc = path.extname(fileName);
|
||||||
|
const fileType = fileTypeSrc.substring(1);
|
||||||
|
const baseName = path.basename(fileName, fileTypeSrc);
|
||||||
|
|
||||||
|
const filePath = path.join(root, internalPath);
|
||||||
|
const pieces = filePath.split(path.sep);
|
||||||
|
const depPrefix = cloneStr('../', pieces.length - 1);
|
||||||
|
const content = fs.readFileSync(path.join(filePath, fileName), {
|
||||||
|
encoding: 'utf8',
|
||||||
|
});
|
||||||
|
const pathList = (internalPath.split(path.sep) || []).filter(p => !!p);
|
||||||
|
const modulePathStr = JSON.stringify(pathList).replace(/\"/g, '\'');
|
||||||
|
|
||||||
|
const templateContent = `
|
||||||
|
import ResultFile from '${depPrefix}model/ResultFile';
|
||||||
|
import { IResultFile } from '${depPrefix}types';
|
||||||
|
|
||||||
|
export default function getFile(): [string[], IResultFile] {
|
||||||
|
const file = new ResultFile(
|
||||||
|
'${baseName}',
|
||||||
|
'${fileType || ''}',
|
||||||
|
\`
|
||||||
|
${content}
|
||||||
|
\`,
|
||||||
|
);
|
||||||
|
|
||||||
|
return [${modulePathStr}, file];
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const targetFile = path.join(filePath, `${fileName}.ts`);
|
||||||
|
console.log(`=== Create File: ${targetFile}`);
|
||||||
|
fs.writeFileSync(targetFile, templateContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fileDisplay(root, internalPath) {
|
||||||
|
const dirPath = path.join(root, internalPath);
|
||||||
|
const filesList = fs.readdirSync(dirPath);
|
||||||
|
for(let i = 0; i < filesList.length; i++){
|
||||||
|
//描述此文件/文件夹的对象
|
||||||
|
const fileName = filesList[i];
|
||||||
|
//拼接当前文件的路径(上一层路径+当前file的名字)
|
||||||
|
const filePath = path.join(dirPath, fileName);
|
||||||
|
//根据文件路径获取文件信息,返回一个fs.Stats对象
|
||||||
|
const stats = fs.statSync(filePath);
|
||||||
|
if(stats.isDirectory()){
|
||||||
|
//递归调用
|
||||||
|
fileDisplay(root, path.join(internalPath, fileName));
|
||||||
|
}else{
|
||||||
|
createTemplateFile(root, internalPath, fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//调用函数遍历根目录,同时传递 文件夹路径和对应的数组
|
||||||
|
//请使用同步读取
|
||||||
|
fileDisplay(root, '');
|
||||||
|
//读取完毕则写入到txt文件中
|
||||||
|
// fs.writeFileSync('./data.txt', JSON.stringify(arr));
|
||||||
Loading…
x
Reference in New Issue
Block a user