当前位置: 首页 > 后端技术 > Node.js

Node命令行小玩具——高研统计工具的开发全过程

时间:2023-04-04 01:20:17 Node.js

背景命令行工具我们已经非常熟悉了,一些命令行操作大大简化了我们的日常工作。本文基于我编写的一个Node命令行代码计数器。相信熟悉linux系统的人都会喜欢用一些ps、grep、cp、mv……等命令。这也是我开发一个方便的命令行的初衷,二是记录一个完整的开源玩具的全过程。命令行的特点:操作方便,可见性强。我看了一下当前的一些命令行,有以下问题。/cloc统计不是很方便https://github.com/ryanfowler...于是诞生了这个高颜值又方便的统计工具。高研图玩具源码https://github.com/hua1995116...准备第三方库cli-tablecolorscommanderignoredev库(测试用)chaimochacodecovistanbuNode兼容babel静态文件语言映射库颜色库idea通过commanderDefine得到一些用户自己的配置程序.version('0.1.0').option('-i,--ignore[dir]','ignoredir').option('-p,--path[dir]','ignoredir'').parse(process.argv);节点遍历文件,各语言行数functiongetFile(dirPath){constfiles=fs.readdirSync(dirPath);files.forEach((item)=>{...})}忽略过滤器输出到缓存函数handleIgnode(cPath){try{constcurrentPath=path.join(ROOTPATH,'.gitignore');constfileData=fs.readFileSync(currentPath,'utf-8');constignoreList=文件数据。分割('\n');constfilterList=filterData(ignoreList);constig=ignore().add(filterList);返回ig.ignores(cPath);}catch(e){返回错误;}}遍历缓存,统计max-line,执行colorsfunctionhanldeTable(){...if(maxCount{it('canlinecdir',()=>{consturl=path.join(__dirname,'../example');console.log(url);constdirObj=JSON.stringify(getFileData(url));constexpectData='{"CSS":{"file":1,"blankLines":0,"totalLines":4,"color":"#563d7c"},"JavaScript":{"file":1,"blankLines":0,"totalLines":1,"color":"#f1e05a"},"JSON":{"file":1,"blankLines":0"totalLines":3,"color":"#fff"},"Markdown":{"file":1,"blankLines":0,"totalLines":1,"color":"#fff"}}';assert.equal(dirObj,expectData);})})run./node_modules/mocha/bin/mocha这个项目还添加了代码覆盖测试,所以是"test":"./node_modules/.bin/istanbulcovernode_modules/mocha/bin/_mocha&&./node_modules/.bin/codecov",publishStep1打开https://www.npmjs。com/signup注册账号step2有账号直接到这一步npmloginstep3包含version{"name":"linec","version":"1.2.4","description":"linecount"inpackage.json,"main":"index.js",...}step4npmpublishTip:注意每次发布都要修改package.json中的版本,否则会发布失败。命令行package.json"bin":{"linec":"./lib/index.js"},本地项目命令行npmlink可以使用linec命令将linec命令软链接到本地??,名称linec可以自定义。远程命令行默认是包名,但是如果在bin中定义了名称,可以按照上面的方法修改名称。也就是包名可以和命令不一致,但是为了更方便的使用,个人建议统一包名和命令。详情参考http://www.ruanyifeng.com/blo...持续集成测试&覆盖率自动统计https://travis-ci.org/configuration.travis.ymllanguage:node_jsnode_js:-"stable"sudo:falsebefore_script:-npminstall这是我的配置。每次提交,只要包含npmruntest命令,travis就会自动调用,自动检测。travis还有一个好处就是当有人给你提交pr的时候,它可以自动运行测试用例,避免一些低级的错误。以下是效果图。https://codecov.io/gh这是一个计算代码覆盖率的工具。加入npmruntest,可以看到pr安装&使用时的覆盖率统计$npminstall-glinec/cnpminstall-glinec$linec函数输出空行,实际行数,总行数支持400+语言显示遍历速度显示多色工具源码(欢迎star)https://github.com/hua1995116...以上就是效果图的全部内容,我可能还在初出茅庐的阶段Node工具开发,操作更加规范。欢迎指正。