Photo by Yulia Khlebnikova on Unsplash
原文:https://www.freecodecamp.org/news/how-to-build-a-cli-tool-in-nodejs-bc4f67d898ec/
作者:Al-amin Nowshad
译者:blackcai
提示:
作为开发者,CLI 工具似乎陪伴我们每一天的工作,从 git 到 cloud shell —— 我们随时都在使用 CLI。所以,是时候搭建你自己的 CLI 工具了。在这篇文章中我们将使用 Heroku 构建的非常棒的框架 oclif。
什么是 oclif?
它是一款由知名平台 Heroku 提供的可以快速构建 CLI 工具的开源框架。
我们将要构建什么?
我们将要制作一个有四个功能的待办清单列表
添加一个新的任务
查看所有的任务
更新任务
删除任务
初始化我们的项目
Oclif 可以创建两个类型的项目
1、含有一个命令的项目
2、包含嵌套命令在内的多个命令
在这篇文章中,我们需要一个多命令的项目,开始创建它:
npx oclif multi todocli
运行这个命令并跟着说明操作将在当前目录初始化一个名为 todocli 的新项目。
现在,让我们进入目录并运行帮助命令:
cd todocli && ./bin/run --help
这个命令会打印出以下结果:
> USAGE $ todocli [COMMAND] COMMANDS hello help display help for todocli
这个文件夹显示了可用的命令及其文档。
项目结构
我们可以在 src 目录下面找到一个名为 commands 的目录。这个目录包含所有命令及其相对文件名。例如,如果我们有一个命令 hello,我们将在这个目录中找到一个名为 hello.js 的文件,该命令无需更多设置即可运行。当我们不需要它的时候可以删除它。
设置数据库
我们需要一个存储系统来存出任务。为简单起见,我们将使用 lowdb 这个非常简单的 json 文件存储系统。用在这个项目上很不错吧?
我们开始安装吧:
npm install lowdb --save
我们在项目根目录中创建一个 db.json 文件,该文件将保存我们的数据。然后我们需要安装 lowdb。现在,我们将在 src 目录中创建一个名为 db.js 的文件。这个文件将会保存我们的数据库资料。
在这里,我们首先简单地加载所需的库和文件,然后将定义一个空的 todos 数组作为我们的基本集合(如果你把它想像成 SQL 数据库那这就像一个表)。
添加任务
oclif 为我们提供了平滑的命令生成功能。让我们跟着运行以下命令:
npx oclif command add(原文为:oclif command add,译者实际使用中会报出错误 oclif: command not found)
这个命令将在 src/commands 目录中创建一个名为 add.js 的文件。让我们用下面的代码替换该文件的内容:
该文件有几个关键组件:
一个执行此命令主要功能的运行函数,
一个描述,这是命令的说明文档
和一个标志,描述传递给命令的标志。
这里,我们有一个名为 task 的标志,它有一个字符串类型。我们可以运行命令:
./bin/run add --task="welcome task"
此命令将向数据库添加任务并打印该操作的响应内容。
显示任务
npx oclif command show
在 show.js 中,我们以升序显示所有任务。我们用 chalkjs 添加了一点颜色,使我们的命令结果更好看。
更新任务
npx oclif command update
为简单起见,我们现在只为我们的更新部分设置任务。我们只是将任务的 id 作为标志传递。
./bin/run update --id=1
这将为 id = 1 的任务设置 done = true。
移除任务
npx oclif command remove
删除非常简单:我们将 id 作为标志传递,然后从数据库中删除相关任务。
差不多完成了!就这样,我们搭建了一个非常简单的 todocli。现在,如果我们想像任何其他普通的 CLI 工具一样使用它,或让朋友们使用它,我们需要把他做成一个 npm 包。所以我们在 npm 上发布它。
构建并发布到 npm
首先,确保你有一个 npm 帐户。然后,你需要登录运行该命令:
npm login
然后在项目目录内运行:
npm run prepack
这个命令将会打包项目,并将描述和标志生成 readme 文件,准备发布到 npm。
现在,在 npm 上发布:
npm publish
如果一切顺利,那么该模块已成功发布在 npm 上。如果它没有发布成功,请检查项目名称和版本。
通过全局安装,我们可以像使用其他 npm 工具一样使用它了。
npm install -g todocli
然后任何人都可以随时随地使用这些命令。
> todocli add --task="Great task!!!"> todocli show> todocli update --id=1> todocli remove --id=1
如果你跟着整篇文章走到这一步,恭喜你,你太棒了。Happy coding!
非营利组织 freeCodeCamp.org 自 2014 年成立以来,以“帮助人们免费学习编程”为使命,创建了大量免费的编程教程,包括交互式课程、视频课程、文章等。线下开发者社区遍布 160 多个国家、2000 多个城市。我们正在帮助全球数百万人学习编程,希望让世界上每个人都有机会获得免费的优质的编程教育资源,成为开发者或者运用编程去解决问题。
你也想成为 freeCodeCamp 社区的贡献者吗?欢迎了解 招募丨freeCodeCamp 翻译计划。