1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 使用node.js构建命令行工具

使用node.js构建命令行工具

时间:2020-04-23 02:49:21

相关推荐

使用node.js构建命令行工具

web前端|js教程

javascript,node.js,命令行

web前端-js教程

本篇文章给大家分享的内容是使用node.js构建命令行工具 ,有着一定的参考价值,有需要的朋友可以参考一下

闽南微信房卡麻将源码,ubuntu的官方源,手写嵌入式tomcat,爬虫公司管理,php导出表格有代码,閪seolzw

工具说明

共享源码下载,ubuntu F6,爬虫食谱100例,php $array[],新加坡招seolzw

inquirer.js:一个封装了常用命令行交互的node.js模块,通过该模块可以很方便地构建一个新的命令行应用。

暗黑战神 源码泄露,vscode怎么导入svn文件,ubuntu的gcc版本,tomcat免安装版下载,sqlite汉语,ps网页设计步骤,dedecms备份数据库,服务器租用yunadsl,jquery的轮播图插件下载,前端框架和前端ui框架,鹰眼爬虫,php实例化对象,seo 框架,springboot线程休眠,织梦标签调用大全,生鲜网站源码,cc攻击网页版源码,c 资源模板,wordpress进不了后台,404搜索页面模板,新闻管理系统前台模板,模板安装的程序中包括哪些内容lzw

shell.js:跨平台的unix shell命令模块。

Node版本:由于inquirer.js的异步方法默认返回Promise,建议使用node.js>=8。

目标

工作中有大量项目上线前最后一步需要执行测试、编译、更新版本号、提交,甚至执行的命令都是一样,在这里我们通过命令行工具将这些步骤一键自动化,同时进行预检查,防止错漏。

准备

创建一个新的Node.js项目。

创建文件bin/my-cli.js,node.js项目通常会把cli入口放在bin目录下,其他模块放在lib目录下。

在bin/my-cli.js文件头部添加#!/usr/bin/env node

添加"bin": {"my-cli": "./bin/my-cli.js"},到package.json,声明我们要使用的命令。

项目根目录下执行npm link,创建一个全局命令my-cli

稍微修改下my-cli.js,添加代码console.log("I am a cli tool!"),然后打开控制台运行my-cli命令,如果看到控制台输出I am a cli tool!就表示成功。

安装依赖

首先安装主要依赖的两个模块(关于这两个模块的使用请参考官方文档)

npm install inquirer shelljs

构建发布流程自动化

接下来首先实现测试、更新版本号、构建、自动提交发布的自动化

const pkg = JSON.parse(fs.readFileSync(pkgPath, utf8));const { version } = await inquirer.prompt([ { type: list, name: version, message: 版本号更新方式:, choices: [{ name: `v${semver.inc(pkg.version, patch)}: Fix Bugs / Patch`, value: patch},{ name: `v${semver.inc(pkg.version, minor)}: Release New Version`, value: minor}, ] }]);// 拉取最新版本shelljs.exec(git pull);// 运行测试shelljs.exec( pm test);//通过npm version更新版本号,但不自动添加git tag,而是在构建完成后由cli工具添加shelljs.exec(`npm version ${version} --no-git-tag-version`);// 构建shelljs.exec( pm run build);// 提交发布代码const nextVersion = semver.inc(pkg.version, version);shelljs.exec(git add . -A);shelljs.exec(`git commit -m "build: v${nextVersion}"`)shelljs.exec(`git tag -a v${nextVersion} -m "build: ${nextVersion}"`);shelljs.exec("git push")shelljs.exec("git push --tags");

添加新功能:配置检查

接下来给my-cli添加一个功能:

当检查到package.json的my-cli对象的check-baidu-id属性为true时,检查项目的config.json是否存在baidu-id属性

if (pkg[my-cli] && pkg[my-cli][check-baidu-id]) { const configPath = path.join(process.cwd(), config.json); if (!fs.existsSync(configPath)) { shelljs.echo(找不到config.json); shelljs.exit(1); } const config = JSON.parse(fs.readFileSync(configPath, utf8)); if (!config[aidu-id]) { shelljs.echo(config.json缺少属性[baidu-id]); shelljs.exit(1); }

最后一步

这样一个简单的cli程序就实现完毕了,它自动化了构建发布流程,构建发布之前还进行了配置检查。

在实际项目中,为了提高程序的稳定性,还需要添加检查当前项目是否存在package.json,防止json解析出错、执行前确认等功能,具体见示例代码。

示例代码

地址:/Aturan/node-cli-example

结语

虽然上述功能使用shell也可以实现,但代码编写就没那么方便快速,而且一旦碰到更复杂的问题,用shell实现就很麻烦,维护也是一个问题。

PS. 其实也可以用python,对于Ubuntu,系统自带Python是一个优势,在服务器不需要安装环境就可以直接使用,再加上Python也有Inquirer模块。

实例详解node.js如何获取SQL Server数据库

Node.js模块系统

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。