UNPKG

tainanle-express

Version:

execl download

80 lines (71 loc) 2.21 kB
#!/usr/bin/env node "use strict"; // 字体颜色 https://bj.96weixin.com/emoji/ const styles = { bold: "\x1B[1m%s\x1B[22m", italic: "\x1B[3m%s\x1B[23m", underline: "\x1B[4m%s\x1B[24m", inverse: "\x1B[7m%s\x1B[27m", strikethrough: "\x1B[9m%s\x1B[29m", white: "\x1B[37m%s\x1B[39m", grey: "\x1B[90m%s\x1B[39m", black: "\x1B[30m%s\x1B[39m", blue: "\x1B[34m%s\x1B[39m", cyan: "\x1B[36m%s\x1B[39m", green: "\x1B[32m%s\x1B[39m", magenta: "\x1B[35m%s\x1B[39m", red: "\x1B[31m%s\x1B[39m", yellow: "\x1B[33m%s\x1B[39m", whiteBG: "\x1B[47m%s\x1B[49m", greyBG: "\x1B[49;5;8m%s\x1B[49m", blackBG: "\x1B[40m%s\x1B[49m", blueBG: "\x1B[44m%s\x1B[49m", cyanBG: "\x1B[46m%s\x1B[49m", greenBG: "\x1B[42m%s\x1B[49m", magentaBG: "\x1B[45m%s\x1B[49m", redBG: "\x1B[41m%s\x1B[49m", yellowBG: "\x1B[43m%s\x1B[49m", }; // 导入模块 const fs = require("fs"); const path = require("path"); // 获取控制台参数 let argv = process.argv; let dirname = argv[2]; // 拷贝文件 if (dirname) { copyFile(path.dirname(__dirname) + `/example`, `${process.cwd()}/${dirname}`); console.log(styles["green"], `\n😎😎😎 $ cd ${dirname}`); console.log(styles["green"], `😎😎😎 $ cnpm i`); console.log(styles["green"], `😎😎😎 $ cnpm run dev \n`); } else { console.log(styles["red"], "\n❌语法错误,请输入项目名 👀👀👀 \n"); } /** * 检查文件是否存在 * @param {string} path 路径 */ function isExist(path) { if (!fs.existsSync(path)) { fs.mkdirSync(path); } } /** * 拷贝文件 * @param {string} sourcePath 路径 * @param {string} targetPath 路径 */ function copyFile(sourcePath, targetPath) { isExist(targetPath); const sourceFile = fs.readdirSync(sourcePath, { withFileTypes: true }); sourceFile.forEach((file) => { const newSourcePath = path.resolve(sourcePath, file.name); const newTargetPath = path.resolve(targetPath, file.name); if (file.isDirectory()) { isExist(newTargetPath); copyFile(newSourcePath, newTargetPath); } else { fs.copyFileSync(newSourcePath, newTargetPath); } }); }