Node.js原生开发脚手架工具(下)

前言

在现代软件开发中,脚手架工具成为提高开发效率和一致性的关键利器。使用Node.js原生开发自己的脚手架工具不仅能帮助自动化常见任务,还能根据具体需求进行高度定制。Node.js的异步非阻塞特性和丰富的模块系统使其成为构建这种工具的理想选择。本篇文章将深入探讨如何利用Node.js的核心功能,逐步构建一个功能强大且灵活的脚手架工具,从基础知识到实际实现,帮助开发者提升工作效率和项目管理能力。补充上一章的Node.js原生开发脚手架及原理

一、命令行等待提示

1、代码提示信息

  1. 下载安装ora的包

由于ora在再6.0版本后是用的import引入,6.0版本前是用的require引入,所以需要安装6.0版本之前的包

bash 复制代码
npm i ora@5
  1. 新建test/ora.js
js 复制代码
const ora = require("ora");
const spinner = ora().start();
spinner.text = "loading......";
  1. 打开终端
bash 复制代码
cd test/
node ora.js
  1. 提示信息
js 复制代码
const ora = require("ora");
const spinner = ora().start();
spinner.text = "loading......";
setTimeout(() => {
  console.log("下载完成");
  spinner.succeed("succeed");
  spinner.fail("fail");
  spinner.info("info");
}, 2000);

2、下载提示信息交互

  1. 修改lib/core/download.js
js 复制代码
const download = require("download-git-repo");
const ora = require("ora");
const downloadFun = function (url, project) {
  const spinner = ora().start();
  spinner.text = "代码正在下载......";
  download("direct:" + url, project, { clone: true }, function (err) {
    if (!err) {
      spinner.succeed("代码下载成功");
    } else {
      spinner.fail("代码下载失败");
    }
  });
};
module.exports = downloadFun;
  1. 打开终端
bash 复制代码
bincli create test_03

二、命令行样式渲染

1、chalk包的使用

  1. 打开终端
bash 复制代码
npm i chalk@4
  1. 新建test/chalk.js
js 复制代码
const chalk = require("chalk");
console.log(chalk.blue("蓝色样式"));
  1. 终端运行
bash 复制代码
cd test/
node chalk.js

2、模块中引用chalk样式提示

  1. 修改lib/core/download.js
js 复制代码
const download = require("download-git-repo");
const ora = require("ora");
const chalk = require("chalk");
const downloadFun = function (url, project) {
  const spinner = ora().start();
  spinner.text = "代码正在下载......";
  download("direct:" + url, project, { clone: true }, function (err) {
    if (!err) {
      spinner.succeed("代码下载成功");
      console.log(chalk.blue("Done! you run:"));
      console.log(chalk.blue.bold("cd"), chalk.blue("+ project"));
      console.log(chalk.rgb(100, 100, 100)("npm install"));
      console.log("npm run dev");
      console.log("npm run build");
    } else {
      spinner.fail("代码下载失败");
    }
  });
};
module.exports = downloadFun;
相关推荐
熊的猫38 分钟前
JS 中的类型 & 类型判断 & 类型转换
前端·javascript·vue.js·chrome·react.js·前端框架·node.js
瑶琴AI前端1 小时前
uniapp组件实现省市区三级联动选择
java·前端·uni-app
会发光的猪。1 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
我要洋人死2 小时前
导航栏及下拉菜单的实现
前端·css·css3
科技探秘人3 小时前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人3 小时前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR3 小时前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香3 小时前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q2498596933 小时前
前端预览word、excel、ppt
前端·word·excel
小华同学ai3 小时前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书