打造属于自己的脚手架工具并发布到npm仓库

一、创建项目

  1. 使用 npm init -y 创建项目
  2. 创建项目入口文件 index.js
  3. package.json 中添加 bin 字段
  4. 使用 npm link 命令将文件映射至全局,使可以在本地测试 zp 命令
// "zp" 为用于全局执行脚手架的命令,vue-cli中使用的是vue命令
"bin": {"zp": "index.js",
},

image.png

image.png

image.png

二、入口文件编码

index.js文件头部需要加上#!/usr/bin/env node(用于指定这个脚本的解释程序是node)

1.使用commander加上命令行参数
npm i commander
#!/usr/bin/env node
const { program } = require("commander");program.version("0.1.0");program.command("create <project>").description("初始化项目模板").action(function (project) {console.log("创建项目:" + project);});program.command("help").description("查看所有可用的模板帮助").action(function () {console.log(`这是关于项目帮助信息`);});program.parse(process.argv);

image.png

2.准备一个GitHub模板,使用download-git-repo下载模板
npm i download-git-repo
program.command("create <project>").description("初始化项目模板").action(function (project) {const downloadURL ="direct:https://github.com/MangoIsGreat/vue_project_templete.git#main";download(downloadURL, project, { clone: true }, (err) => {if (err) {console.log("下载失败");} else {console.log("下载成功");}});});
3.用ora增加下载中的loading效果
npm i ora@3.4.0
const ora = require("ora");
program.command("create <project>").description("初始化项目模板").action(function (project) {// 下载前提示const spinner = ora("正在下载模板中").start();const downloadURL ="direct:https://github.com/MangoIsGreat/vue_project_templete.git#main";download(downloadURL, project, { clone: true }, (err) => {if (err) {spinner.fail();} else {spinner.succeed();}});});
4.使用chalk 和 logSymbols增加文本样式
npm i chalk@2.4.2 log-symbols@4.0.0
const chalk = require("chalk");
const logSymbols = require("log-symbols");
program.command("create <project>").description("初始化项目模板").action(function (project) {// 下载前提示const spinner = ora("正在下载模板中").start();const downloadURL ="direct:https://github.com/MangoIsGreat/vue_project_templete.git#main";download(downloadURL, project, { clone: true }, (err) => {if (err) {spinner.fail();return console.log(logSymbols.error,chalk.red("下载失败,失败原因:" + err));} else {spinner.succeed();return console.log(logSymbols.success, chalk.yellow("下载成功"));}});});

index.js文件完整代码为:

#!/usr/bin/env node
const { program } = require("commander");
const download = require("download-git-repo");
const ora = require("ora");
const chalk = require("chalk");
const logSymbols = require("log-symbols");program.version("0.1.0");program.command("create <project>").description("初始化项目模板").action(function (project) {// 下载前提示const spinner = ora("正在下载模板中").start();const downloadURL ="direct:https://github.com/MangoIsGreat/vue_project_templete.git#main";download(downloadURL, project, { clone: true }, (err) => {if (err) {spinner.fail();return console.log(logSymbols.error,chalk.red("下载失败,失败原因:" + err));} else {spinner.succeed();return console.log(logSymbols.success, chalk.yellow("下载成功"));}});});program.command("help").description("查看所有可用的模板帮助").action(function () {console.log(`这是关于项目帮助信息`);});program.parse(process.argv);

使用zp create 项目名即可下载项目模板代码创建项目

5.将项目发布至npm仓库
  1. 打开npm官网
  2. 注册一个npm账号
  3. 在npm中检索是否有重复的包名
  4. 将package.json中的name改为发布到npm上的包名
  5. 打开控制台,执行npm login
  6. 登陆成功后,在项目下执行npm publish 发布
  7. 发布成功后即可通过npm i命令下载

image.png

image.png

注意事项:因为网络问题可能导致download-git-repo插件下载时报128错误,可通过科学上网方式解决

写在最后:欢迎关注扫码作者微信公众号fever code,获取一手技术分享⛽️
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyecharts可视化案例大全(11~20)

pyecharts可视化案例大全(11~20) 十一、设置动画效果十二、直方图带视觉组件十三、设置渐变色(线性渐变)十四、设置渐变色(径向渐变)十五、设置分割线十六、设置分隔区域十七、面积图十八、堆叠面积图十九、自定义线样式二十、折线图平滑处理十一、设置动画效果 在图表加载前…

【AI原理解析】—主成分分析(PCA)原理

目录 一、PCA的思想 二、PCA的步骤 三、关键概念 四、PCA的优势与应用 PCA&#xff08;主成分分析&#xff0c;Principal Component Analysis&#xff09;是一种广泛使用的数据降维算法&#xff0c;它通过线性变换将原始数据转换为一组各维度线性无关的表示&#xff0c;从而…

iOS应用的内存优化

对一个 iOS 项目进行内存优化&#xff0c;可以从多个方面入手&#xff0c;确保应用在不同场景下都能高效稳定地运行。以下是一些具体的内存优化措施和详细说明&#xff1a; 1. 自动引用计数&#xff08;ARC&#xff09;管理 1.1 避免循环引用 循环引用会导致内存泄漏。使用 …

低代码平台的设计模式介绍

低代码平台是一种快速交付应用程序的开发工具&#xff0c;主要通过图形拖拽用户界面、应用配置界面&#xff0c;使开发者能够以最少的手动编码&#xff0c;或者不需要代码快速交付应用。这种平台的核心优势在于提高开发速度和降低技术门槛&#xff0c;使得非技术背景的用户也能…

基于java+springboot+vue实现的旅游管理系统(文末源码+lw+ppt)23-402

研究的内容 当下流行的WPS、Word等办公软件成为了人们耳熟能详的系统&#xff0c;但一些更加专业性、性能更加强大的网络信息工具被人们“埋没”在互联网的大海中。甘肃旅游管理系统是一个便于用户查看热门景点、酒店信息、推荐线路、旅游攻略、景点资讯等&#xff0c;管理员进…

【Python基础篇】你了解python中运算符吗

文章目录 1. 算数运算符1.1 //整除1.2 %取模1.3 **幂 2. 赋值运算符3. 位运算符3.1 &&#xff08;按位与&#xff09;3.2 |&#xff08;按位或&#xff09;3.3 ^&#xff08;按位异或&#xff09;3.4 ~&#xff08;按位取反&#xff09;3.5 <<&#xff08;左移&#…

HTML 【实用教程】(2024最新版)

核心思想 —— 语义化 【面试题】如何理解 HTML 语义化 ?仅通过标签便能判断内容的类型&#xff0c;特别是区分标题、段落、图片和表格 增加代码可读性&#xff0c;让人更容易读懂对SEO更加友好&#xff0c;让搜索引擎更容易读懂 html 文件的基本结构 html 文件的文件后缀为 …

【高录用、快检索、过往5届均已检索、SPIE 出版】第六届无线通信与智能电网国际会议(ICWCSG 2024)

随着科技的飞速发展和能源需求的日益增长&#xff0c;智能电网技术逐渐成为电力行业的重要发展方向。与此同时&#xff0c;无线通信技术在近年来也取得了显著的进步&#xff0c;为智能电网的发展提供了强有力的支持。为了进一步推动无线通信与智能电网的结合与发展&#xff0c;…

Vue3 对于内嵌Iframe组件进行缓存

1&#xff1a;应用场景 对于系统内所有内嵌iframe 的页面均通过同一个路由/iframe, 在router.query内传入不同src 参数&#xff0c;在同一组件内显示iframe 内嵌页面&#xff0c;对这些页面分别进行缓存。主要是通过v-show 控制显示隐藏从而达到iframe 缓存逻辑 2&#xff1a…

Github 2024-07-03 C开源项目日报 Top9

根据Github Trendings的统计,今日(2024-07-03统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目9Java项目1Python项目1显示和控制你的 Android 设备 创建周期:2416 天开发语言:C, Java协议类型:Apache License 2.0Star数量:105222 个…

学IT上培训班真的有用吗?

在学习IT技术的过程中&#xff0c;你是否也被安利过各种五花八门的技术培训班&#xff1f;这些培训班都是怎样向你宣传的&#xff0c;你又对此抱有着怎样的态度呢&#xff1f;在培训班里学技术&#xff0c;真的有用吗&#xff1f; 一、引入话题 IT行业是一个快速发展和不断变化…

C++初学者指南-4.诊断---未定义行为检测器

C初学者指南-4.诊断—未定义行为检测器 未定义行为检测器(UBSAN) 适用编译器&#xff1a;clang,g在运行时检测许多类型的未定义行为 解引用空指针从未对齐的指针读取整数溢出被0除 … 在代码中加入额外的指令:在调试构建中增加运行时约25% 示例&#xff1a;有符号整形溢出 …

Git在多人开发中的常见用例

前言 作为从一个 svn 转过来的 git 前端开发&#xff0c;在经历过git的各种便捷好处后&#xff0c;想起当时懵懂使用git的胆颤心惊&#xff1a;总是害怕用错指令&#xff0c;又或者遇到报错就慌的场景&#xff0c;想起当时查资料一看git指令这么多&#xff0c;看的头晕眼花&am…

深度学习原理与Pytorch实战

深度学习原理与Pytorch实战 第2版 强化学习人工智能神经网络书籍 python动手学深度学习框架书 TransformerBERT图神经网络&#xff1a; 技术讲解 编辑推荐 1.基于PyTorch新版本&#xff0c;涵盖深度学习基础知识和前沿技术&#xff0c;由浅入深&#xff0c;通俗易懂&#xf…

家里老人能操作的电视直播软件,目前能用的免费看直播的电视软件app,适合电视和手机使用!

2024年许多能看电视直播的软件都不能用了&#xff0c;家里的老人也不会手机投屏&#xff0c;平时什么娱乐都没有了&#xff0c;这真的太不方便了。 很多老人并不喜欢去买一个广电的机顶盒&#xff0c;或者花钱拉有线电视。 现在的电视大多数都是智能电视&#xff0c;所以许多电…

Redis基本命令源码解析-字符串命令

1. set 用于将kv设置到数据库中 2. mset 批量设置kv mset (msetnx) key1 value1 key2 value2 ... mset:msetCommand msetnx:msetnxCommand msetCommand和msetnxCommand都调用msetGenericCommand 2.1 msetGenericCommand 如果参数个数为偶数,则响应参数错误并返回 如果…

【项目日记(一)】梦幻笔耕-数据层实现

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.后端模块3数据库设计4.mapper实现4.1UserInfoMapper4.2BlogMapper 5.总结 1.…

硬件开发笔记(二十四):贴片电容的类别、封装介绍,AD21导入贴片电容、原理图和封装库3D模型

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140241817 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

存储结构与管理磁盘

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、一切从“/”开始 二、物理设备的命名规则 三、文件系统与数据资料 四、挂载硬件设备 五、添加硬盘设备 六、添加交换分区 七、磁盘容…

如何在 PostgreSQL 中实现数据的增量备份和恢复?

文章目录 一、增量备份的原理二、准备工作&#xff08;一&#xff09;环境配置&#xff08;二&#xff09;创建测试数据库和表&#xff08;三&#xff09;插入初始数据 三、全量备份四、基于时间点的增量备份&#xff08;一&#xff09;开启 WAL 归档&#xff08;二&#xff09…