UNPKG

czist-create

Version:

通过cit命令快速添加页面/组件/Model/Services

120 lines (110 loc) 4.36 kB
const path = require("path"); const program = require("commander"); const { compiler, writeFile, changeData } = require("../utils/utils"); /** * 创建组件action * @param {String} name 创建的组件名称 * @param {String} dest 创建组件位置 */ const addComponentAction = async (name, dest) => { // result: ejs编译好之后的文件模板 -> 字符串 const result = await compiler("component.jsx.ejs", changeData(name)); // TODO 将对应的模板写入到jsx文件中 const { needFolder } = program._optionValues; const targetPath = needFolder ? path.resolve(dest + `/${name}`, "index.jsx") : path.resolve(dest, `${name}.jsx`); writeFile(targetPath, result); }; /** * 创建页面 包括 model、services * @param {String} name 页面的name */ const addPageAction = async (name, dest) => { // 添加页面的具体位置 let lowerName = String(name).toLowerCase(); let pagePos = path.resolve(dest, `${name}/index.jsx`); let modelPos = path.resolve("src/models", `${lowerName}.js`); let servicesPos = path.resolve("src/services", `${lowerName}.js`); // jsx文件模板 const resultPage = await compiler("component.jsx.ejs", changeData(name)); const resultModel = await compiler("page.model.js.ejs", changeData(name)); const resultServices = await compiler("page.services.js.ejs", changeData(name)); const { notModal, notServices } = program._optionValues; // 写入jsx文件 writeFile(pagePos, resultPage); if (!notModal) { writeFile(modelPos, resultModel); } if (!notServices) { writeFile(servicesPos, resultServices); } }; /** * * @param {String} name 添加的页面名称(包括Model、Services) * @param {String} dest 添加的位置 */ const addGroupPage = async (name, dest) => { // 添加页面的具体位置 let lowerName = String(name).toLowerCase(); let pagePos = path.resolve(dest, `${name}/index.jsx`); let modelPos = path.resolve("src/models", `${lowerName}.js`); let servicesPos = path.resolve("src/services", `${lowerName}.js`); let editPos = path.resolve(dest, `${name}/Edit/index.jsx`); let assetsTablePos = path.resolve(dest, `${name}/Edit/Table/AssetsTable.jsx`); let checkboxModalPos = path.resolve(dest, `${name}/Edit/Table/CheckboxModal.jsx`); let detailPos = path.resolve(dest, `${name}/detail.jsx`); // jsx文件模板 const resultPage = await compiler("component.jsx.ejs", changeData(name)); const resultModel = await compiler("page.model.js.ejs", changeData(name)); const resultServices = await compiler("page.services.js.ejs", changeData(name)); // 编辑Edit页面 const resultEditPage = await compiler("edit.jsx.ejs", changeData(name)); // 子表表格 const resultAssetsTable = await compiler("assetsTable.jsx.ejs", changeData(name)); // 子表表格toolBarRender批量添加Modal框 const resultCheckboxModal = await compiler("checkboxModal.jsx.ejs", changeData); // 详情页 const resultDetail = await compiler("detail.jsx.ejs", changeData(name)); const { notModal, notServices } = program._optionValues; // 写入jsx文件 writeFile(pagePos, resultPage); if (!notModal) { writeFile(modelPos, resultModel); } if (!notServices) { writeFile(servicesPos, resultServices); } writeFile(editPos, resultEditPage); writeFile(assetsTablePos, resultAssetsTable); writeFile(checkboxModalPos, resultCheckboxModal); writeFile(detailPos, resultDetail); }; /** * 快速添加models层 * @param {String} name 添加Modal的名称 * @param {String} dest 添加的位置 默认在/src/models下 */ const addModel = async (name, dest) => { let lowerName = String(name).toLowerCase(); let modelPos = path.resolve(dest, `${lowerName}.js`); const resultModel = await compiler("page.model.js.ejs", changeData(name)); writeFile(modelPos, resultModel); }; /** * 快速添加services层 * @param {String} name 添加Services的名称 * @param {String} dest 添加的位置 默认在/src/services下 */ const addServices = async (name, dest) => { let lowerName = String(name).toLowerCase(); let servicePos = path.resolve(dest, `${lowerName}.js`); const resultService = await compiler("page.services.js.ejs", changeData(name)); writeFile(servicePos, resultService); }; module.exports = { addComponentAction, addPageAction, addGroupPage, addModel, addServices };