tainanle-express
Version:
execl download
80 lines (71 loc) • 2.21 kB
JavaScript
;
// 字体颜色 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);
}
});
}