脚手架开发入门

简介: # 引言今天和大家一起学习一下开发一个脚手架工具,作为我们初始化项目使用,因为我们组件库开发已经接近尾声了,接下来我们想除了正常通过npm下载引入配置之余,能提供一种更方便的模板初始化的途径,现在就让我们一起学习一下如何开发一个脚手架工具吧。# 初始化首先我们初始化一个node项目,创建一个空文件夹,然后我们打开终端控制台,输入如下内容`npm init -y`。初始化一个`package.json`文件,我们默认初始化的文件是这样的:```{ "name": "demo-cli", "version": "1.0.0", "description": "",

引言

今天和大家一起学习一下开发一个脚手架工具,作为我们初始化项目使用,因为我们组件库开发已经接近尾声了,接下来我们想除了正常通过npm下载引入配置之余,能提供一种更方便的模板初始化的途径,现在就让我们一起学习一下如何开发一个脚手架工具吧。

初始化

首先我们初始化一个node项目,创建一个空文件夹,然后我们打开终端控制台,输入如下内容npm init -y。初始化一个package.json文件,我们默认初始化的文件是这样的:

{
  "name": "demo-cli",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
}

接下来我们在根目录下创建一个bin目录,在bin下创建一个文件nb,无需携带扩展名。

我们在文件头部加入如下代码:

#!/usr/bin/env node

接下来我们写一个打印输出的代码,修改后内容如下:

#!/usr/bin/env node

console.log("Hello World!");

接下来我们为了简化使用,我们来配置一下json文件。

{
  "name": "demo-cli",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bin": {
    "nb": "bin/nb"
  },
  "dependencies": {
    "commander": "^10.0.0",
    "inquirer": "^9.1.4"
  }
}

我们加入了bin部分,让我们能快捷启动。

接下来我们执行 npm link将命令挂载到全局,然后再输入 nb 就可以到达刚才node ./bin/nb 的效果了。

Try

我们来试一下。

在任意处打开控制台,输入nb,我们可以看到如下效果:

image.png

接下来我们简单模拟一点指令。

我们修改nb文件如下:

#!/usr/bin/env node
const program = require("commander");
// 定义指令
program
  .version('0.0.1')
  .usage('<command> [options]')
  .command('init', 'A template')
  .action((option) => {
    // 回调函数
      console.log('Hello World')
  })
// 解析命令行参数
program.parse(process.argv);

接下来我们再在bin目录下创建一个nb-init文件,用作init时使用。

文件内容如下:

#!/usr/bin/env node
console.log("This is init");

好了,我们试一试这个雏形。

我们先输入nb,控制台内容如下:

image.png

再看看带参数的:我们输入nb -V,内容如下:

image.png

nb -h:

image.png

接下来我们试试 nb init方法:

image.png

再结合我们的nb-init文件,原来这样是调用我们nb-init文件啊。

我们也可以多准备一下如add等等的方法,并封装一些方法。

相关文章
|
NoSQL 调度 数据中心
|
算法 Java
JAVA 关键字、敏感字 屏蔽过滤功能实现
JAVA 关键字、敏感字 屏蔽过滤功能实现
1613 0
JAVA 关键字、敏感字 屏蔽过滤功能实现
|
7月前
|
人工智能 自然语言处理 API
一个 OpenClaw 跑完整个跨境流程?盘点 10 个必备 Skill
本文精选 10 个跨境电商必备的 Skill,覆盖选品、SEO、广告投放、物流、客服全链路,教你用 OpenClaw 一键打通运营流程,实现自动化增长。
1978 2
|
存储 缓存 人工智能
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
Mooncake 的架构设计兼具高性能和灵活性,为未来的扩展性和生态建设奠定了坚实基础。
|
人工智能 JSON JavaScript
这个开源的「AI + 低代码」开发平台绝了,Gitee上斩获 9.2K Star!
VTJ.PRO 是一款 AI 驱动的低代码开发平台,深度融合 Vue3 技术栈,支持可视化设计与源码级编辑双向自由切换。通过 AI 智能生成、代码修复、跨端输出等能力,大幅提升前端开发效率,实现设计即代码、代码即设计的高效工作流,适用于原型开发、项目重构等多种场景。平台完全开源,提供在线沙盒与本地部署,助力开发者兼顾开发速度与代码自由度。
1260 0
|
Java Spring
【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
4988 1
【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
|
存储 SQL 前端开发
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(二)
接着上回的【若依RuoYi-Vue | 项目实战】基于若依的帝可得后台管理系统(一),本次我们继续完成人员管理、设备管理、策略管理模块的开发。
2935 6
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(二)
|
JSON 前端开发 Java
Validated、Valid 、Validator,他们的区别你知道几个
对于任何基本验证,我们将在方法调用中使用 JSR @Valid注释。另一方面,对于任何组验证,包括组序列,我们需要 在我们的方法调用中使用 Spring 的@Validated注释。
Validated、Valid 、Validator,他们的区别你知道几个
|
JavaScript API 开发工具
记一次后台管理脚手架选型过程
面对大屏支持不足的vue移动端项目,业务部门要求改进。原项目优化困难,决定重构。选型阶段,因业务类似后台管理,选择vue框架。在git和gitee上对比了两款脚手架,最终选定[ pure-admin-thin ](https://github.com/pure-admin/pure-admin-thin)因其频繁更新、先进框架和丰富文档。选型关键在于资料易得性、框架时效性和维护者信誉。欢迎评论区提供反馈和建议。
810 1