脚手架开发入门

简介: # 引言今天和大家一起学习一下开发一个脚手架工具,作为我们初始化项目使用,因为我们组件库开发已经接近尾声了,接下来我们想除了正常通过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等等的方法,并封装一些方法。

相关文章
|
Java jenkins 持续交付
jenkins部署springboot项目(超详细讲解)
jenkins部署springboot项目(超详细讲解)
543 0
|
消息中间件 Kubernetes Cloud Native
云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator
RocketMQ Operator 现已加入 OperatorHub,正式进入 Operator 社区。本文将从实践出发,结合案例来说明,如何通过 RocketMQ Operator 在 Kubernetes 上快速搭建一个 RocketMQ 集群,并提供一些 RocketMQ 集群管理功能包括 Broker 扩容等。
云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator
|
4月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
|
10月前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
160 1
|
11月前
|
运维 数据可视化 数据处理
实时计算Flink场景实践和核心功能体验 评测
实时计算Flink场景实践和核心功能体验 评测
298 5
|
Cloud Native IDE Java
阿里云spring脚手架如何接入
阿里云spring脚手架如何接入
1108 2
|
机器学习/深度学习 人工智能 编解码
深度学习在图像识别领域的突破与挑战
随着技术的进步,深度学习已经成为推动图像识别发展的核心力量。本文将深入探讨深度学习如何革新了图像识别领域,包括其在提高识别精度和处理复杂视觉任务方面取得的成就,同时也会分析当前面临的主要挑战和未来可能的发展方向。文章旨在提供对深度学习在图像识别应用中全面而深入的理解,以及它如何塑造我们解析和理解视觉世界的方式。
178 25
|
NoSQL 关系型数据库 MySQL
Redis私有云平台-Cachecloud安装和部署手册
Redis私有云平台-Cachecloud安装和部署手册
|
缓存 Java Maven
Google guava工具类库的介绍和使用
Google guava工具类库的介绍和使用
|
XML 监控 druid
SpringBoot整合Druid数据源并配置监控
SpringBoot整合Druid数据源并配置监控
1570 1