UNPKG

@yeepay/yeepay-cli

Version:

易宝前端脚手架

69 lines (64 loc) 2.31 kB
import fs from 'fs'; import path from 'path'; export default class Utils { constructor() { } /** * 创建一个新的目录 * @param {string} projectName - 要创建的目录名称 * @returns {void} */ mkdir(projectName) { fs.mkdirSync(projectName); } /** * 检查指定文件夹是否存在 * @param {string} folderName - 要检查的文件夹名称 * @returns {boolean} - 如果文件夹存在且是目录,则返回 true,否则返回 false */ checkFolderExists(folderName) { const folderPath = this.getTargetDir(folderName); // 构建目标文件夹的路径 // 先检查路径是否存在,再检查路径是否是文件夹。 return fs.existsSync(folderPath) && fs.lstatSync(folderPath).isDirectory(); } /** * 获取目标目录 * @returns {string} - 目标目录的路径 */ getTargetDir(folderName){ return path.join(process.cwd(),folderName) } /** * 校验项目名是否合法 * @param {string} packageName - 要检查的包名 * @returns {boolean} - 如果包名合法返回 true,否则返回 false */ checkProjectName(packageName) { if (!packageName) return false; // 包名长度不能超过100个字符 if (packageName.length > 100) return false; // 只允许小写字母和连字符,且不能以连字符开头或结尾 const regex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/; return regex.test(packageName); } /** * 检查网络连接状态 * @returns {Promise<boolean>} - 如果网络连接正常返回 true,否则返回 false */ async checkNetworkConnection() { try { // 创建一个超时 Promise const timeout = new Promise((_, reject) => { setTimeout(() => reject(new Error('请求超时')), 5000); }); // 创建实际的网络请求 Promise const networkCheck = fetch('https://www.baidu.com', { mode: 'no-cors' }); // 使用 Promise.race 竞争,谁先完成就用谁的结果 await Promise.race([networkCheck, timeout]); return true; } catch (error) { return false; } } }