如何开发一个项目脚手架cli

目录

  • 背景
    • 正文
      • unbuild
      • prompts
      • progress
      • kolorist
    • 设置打包命令
      • npm exec
      • npx
      • npm init/ npm create/ npm innit
    • 使用
    • 最后

背景

随着团队项目类型越来越多,方便后续快速去开发项目,会出现各种类型的项目模版项目。

在这里插入图片描述
这样开发只需要通过脚手架选择自己需要的项目类型,不需要去记住各个项目的代码仓库地址。

代码地址:https://github.com/duKD/create-editor-cli

正文

需要用到以下几个第三方库:

unbuild

一款轻量打包工具 默认支持ts , 可以输出 esModule commonjs 类型代码

prompts

用于终端命令行交互

progress

进度条

kolorist

优化字体显示样式

设置打包命令

{
  "name": "create-editor-cli",
  "private": false,
  "version": "1.1.0",
  "description": "",
  // 在packjosn 文件中 设置打包命令 最终会被打包到 node_module 的 bin 目录下 
  "bin": {
    "create-editor-cli": "dist/index.cjs",
    "cec": "dist/index.cjs"
  },
  ...
 }

在这里插入图片描述
复习下 : 如何去使用 .bin 目录下的命令

  1. 全局安装的话 可以直接使用 cec 和 create-editor-cli
  2. 局部安装 的话 需要 在 packjson 的 script 中使用 或者 npx cec ,npx create-editor-cli

设计 更简单的使用方式

npm exec

npm exec 的执行流程

  • 在本地查找是否有对应的npm包
    • 若找到,则运行这个包的package.json中bin字段对应的可执行文件
    • 若未找到,在远程npm仓库查找是否有对应的npm包 若找到,加载完成后,再运行这个包package.json中bin字段对应的可执行文件

npx

直接 npx exec 和上面是一个效果

npm init/ npm create/ npm innit

npm init xxx | npm create xxx 等价于 npx exec create-xxx

得出结论 当我们的包发到远程仓库时 可以直接 使用

npm create editor-cli 来创建项目

使用

pnpm create editor-cli 来初始化

 ~ % pnpm create editor-cli
Library/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-59954      |   +1 +
Library/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downloaded 1, added 1, done
✔ 选择编辑器版本? › vue
✔ 输入项目名称 … my-editor
开始下载模版...
========================================================================== 100%

下载完成,开始解压...

解压完成...

最后

由于私密安全问题 只提供了一个简单的实现思路 ,可以按照这个思路 ,去定制化开发属于自己公司的脚手架。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据采集之二主一从,485总线共享器

产品概述 485总线共享器示意图 功能示意图 DAQ-GP-485HUB是上海数采物联网推出的一款 RS485总线多路复用共享数据处理器,是一款高性能的通讯设备,专门针对两台主机和 一台从机通讯时导致的数据冲突而设计。在实际工业控制和监控场景中,多个主…

Java宝藏实验资源库(3)类

一、实验目的 理解面向对象程序的基本概念。掌握类的继承的实现机制。熟悉类中成员的访问控制方法。熟悉ArrayList类的使用。 二、实验内容、过程及结果 *9.5Programming Exerc ise the GregorianCal endar class) Java API has the GregorianCalendar class in the java. uti…

算法008:四数之合

四数之和. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/4sum/description/ 在前面的两个题中,我们已经完成了两数之和和三数之和,到本题四…

基于51单片机的函数信号发生器

基于51单片机函数信号发生器 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.LCD1602液晶显示波形种类和频率值(10-100HZ); 2.按键设置波形种类和设定频率步进值…

Notepad++插件 Hex-Edit

Nptepad有个Hex文件查看器,苦于每次打开文件需要手动开插件显示Hex,配置一下插件便可实现打开即调用 关联多个二进制文件,一打开就使用插件的方法,原来是使用空格分割!!!

螺蛳粉店外卖配送小程序商城的效果为何

螺蛳粉是广西地区的特色美食,在当地有着大量实体餐饮店或品牌商,其单品消费率非常高,在外地也不乏自创品牌或加盟店等,其特殊的味道及吸引力也同样复购率高,客户除了线下到店外,也会购买袋/桶装螺蛳粉到家自…

【无线感知】【P4】无线感知手势识别- WIFI 感知边界

前言: 这篇是北大2022 在Ubicomp 上面的论文 《placement Matters: understanding the Effects of Device placements for WiFi Sensing》 放置很重要:了解设备放置对WiFi传感的影响 目录: 简介 感知质量定义(SSNR…

Bayanay:一款基于Python开发的无线网络安全研究工具

关于Bayanay Bayanay是一款基于纯Python开发的无线网络安全研究工具,在该工具的帮助下,无论你身处何地,都可以轻松地对周围地区的无线网络安全状况进行研究与分析。 该工具可以通过使用HTML5的地理位置定位功能并结合Scapy获取到的SSID信息…

Flutter ffi Failed to lookup symbol

iOS release版本,解决方式参考官方文档:在 iOS 中使用 dart:ffi 调用本地代码 如果debug版本也报这个错误,很可能是有多个.c文件,编译的时候没带上! 假设你的ffi模块名字是 c_lib 对于Android端,需要修改…

Node.js中基于node-schedule实现定时任务之详解

文章目录 一、定时任务二、node-schedule、1、安装2、引入3、基于Cron表达式的规则4、基于Date的规则5、基于RecurrenceRule的规则6、API7、状态监听 一、定时任务 实际工作中,可能会遇到定时清除某个文件夹内容,定时发送消息或发送邮件给指定用户&…

Codepen Three.js环境依赖配置

Codepen Three.js环境依赖配置 前言 如果想在CodePen环境写Three.js依赖的项目,环境搭建可以参考该Codepen项目: Chill the lion 详细 打开设置可以看到以下配置 更多项目参考 1. Chill the Lion Chill the Lion 是一个基于 ThreeJS 制作的 WebGL 示例。它由…

FreeRTOS学习 -- 时间管理

在使用 FreeRTOS 的过程中通常会在一个任务函数中使用延时函数对这个任务延时,当执行延时函数的时候会进行任务切换,并且此任务就会进入阻塞态,直到延时完成,任务重新进入就绪态。 FreeRTOS 延时函数 1、函数 vTaskDelay() 在F…

【全开源】沃德会务会议管理系统(FastAdmin+ThinkPHP+Uniapp)

沃德会务会议管理系统一款基于FastAdminThinkPHPUniapp开发的会议管理系统,对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约,风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会…

简单了解MyBatis

MyBatis 1、快速入门 MyBatis中文手册官网MyBatis中文网 1.1、创建数据表添加数据 create table user(id int auto_increment primary key comment 主键id,name varchar(20) comment 姓名,age int comment 年龄,gender char(1) comment 性别(1:男, 2…

为什么我在 PostgreSQL 中 Commit 很慢?

有时,我们的一位客户会查看数据库中最耗时的语句(使用pg_stat_statements或pgBadger),并发现COMMIT排名靠前。通常,COMMIT这是 PostgreSQL 中非常快的语句,因此值得研究。在本文中,我将探讨速度…

四川赤橙宏海商务信息咨询有限公司可信吗?

在数字化浪潮席卷全球的今天,电商行业正以前所未有的速度蓬勃发展。作为这一领域的佼佼者,四川赤橙宏海商务信息咨询有限公司凭借其在抖音电商服务领域的深厚积累和卓越表现,成为了引领行业创新发展的重要力量。 四川赤橙宏海商务信息咨询有…

华为设备telnet 远程访问配置实验简述

一、实验需求: 1、AR1模拟电脑telnet 访问AR2路由器。 二、实验步骤: 1、AR1和AR2接口配置IP,实现链路通信。 2、AR2配置AAA模式 配置用户及密码 配置用户访问级别 配置用户telnet 访问服务 AR2配置远程服务数量 配置用户远程访问模式为AAA 配置允许登录…

如何使用DeadFinder寻找失效链接

关于DeadFinder DeadFinder是一款功能强大的链接分析工具,该工具可以帮助广大研究人员快速地寻找目标页面中的无效链接(死链)。所谓死链,即一个页面中存在的无法被连接的一条链接。这些链接如果一直保留在页面中的话,…

【2024.6.21】今日科技时事:科技前沿大事件

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

[STM32]万年历

[STM32]万年历 需要资料的请在文章末尾获取~ ​​ 01描述 使用原件:stm32f103c8t6最小系统板x1,0.96寸OLED显示屏四角x1,4x4矩阵按键x1; 键位对应图: 1, 2, 3, 4------------- 切换页面 设置…