如何开发一个扩展包(脚手架)
写在前面
人们都爱用脚手架,因为脚手架可以快速搭建项目,减少重复工作。
1. 创建一个扩展包
bash
mkdir my-cli
2. 初始化项目
bash
cd my-cli
npm init -y
3. 安装依赖
bash
npm i npm install chalk figlet inquirer nanospinner obtain-git-repo
简述
- chalk 命令行颜色
- figlet 显示文本图像
- inquirer 接收用户输入
- nanospinner 显示进度
- obtain-git-repo 下载 git 代码
- terminal-link 文本链接
4. 修改 package.json
json
....
"type":"models"
"bin":{
"yhx-cli":"index.js"
}
...
5. 创建入口文件
bash
touch index.js
index.js
javascript
#!/usr/bin/env node
import chalk from "chalk";
import inquirer from "inquirer";
import fs from "fs";
import { download } from "obtain-git-repo";
import { createSpinner } from "nanospinner";
import figlet from "figlet";
import terminalLink from "terminal-link";
figlet("yanghaixin", async function (err, data) {
//打印文字图案
console.log(data);
//可点击链接
const github = terminalLink("github", "https://github.com/yhx-yhx/ ");
const gitee = terminalLink("gitee", "https://gitee.com/yhx825/ ");
console.log(
chalk.green(
`欢迎使用ndoecli,有任何问题欢迎前往${github},或者${gitee},提出你的issuses`
)
);
//询问用户
const message = await inquirer.prompt({
name: "dirname",
type: "input",
message: "请输入目录名",
default() {
return "yhx_cli";
},
});
//目录是否已经存在
const dirIsExists = fs.existsSync(message.dirname);
if (dirIsExists) {
console.log(chalk.redBright("目录已经存在"));
} else {
//显示下载动画
const spinner = createSpinner("开始下载...").start();
//下载git代码
download("direct:xxxx", message.dirname, { clone: true }, function (err) {
if (err) {
spinner.error({ text: "下载失败" });
} else {
spinner.success({
text: "项目创建成功,请依次执行以下命令",
});
console.log(chalk.white(`cd ${message.dirname}`));
console.log(chalk.white("npm install"));
console.log(chalk.white("npm run dev"));
return;
}
});
}
});
测试执行
在项目中执行如下命令进行测试
bash
node .
发布项目
在 github 上创建一个仓库,将项目发布到 github 上,然后将项目发布到 npm 上 首先注册一个npm账号 然后在命令号中进行登录 ,需要的注意要使用 npm 官方源进行登录
bash
npm login
然后执行发布命令
bash
npm publish
登录npm 在个人页面就可以看到发布的项目了
更新版本
在发布项目后,如果需要更新版本,只需要修改 package.json 中的版本号,然后执行发布命令即可
bash
npm publish
用户安装
在用户安装脚手架时,需要使用 npm 进行安装
bash
npm install -g yhx-cli
然后就可以执行 yhx-cli 了
bash
yhx-cli