开发自己的nodejs命令行工具并使用工具(node.js 开发工具)

需求来源于生活。

在日常开发中,经常会频繁地做一些重复性的操作,作为一名程序员,解放双手的时刻到了。

比如说:批量修改某些文件的后缀,我对于一些shell或者win下的命令不是很熟悉,稍微了解的就是自己的开发语言,所以用熟悉的工具做事还是可以带来一些成就感的。

下面我准备针对这个小小的需求开发一个自己的命令行,当然如果能帮助到其他人,那就更加地满足了。闲话不多说,下面直接开始。

需求整理

  1. 可以对某个文件夹下的所有文件进行后缀的修改
  2. 可以限定某类后缀修改为指定的后缀
  3. 可以指定目标文件夹
  4. 同时可以随机重命名

准备

环境 : nodejs编辑工具 : sublime

大体流程

  1. github上创建自己想要的仓库changeext(命名)
  2. 将仓库clone到本地进行开发、测试
  3. 发布到github
  4. 发布到npm
  5. 安装到本地进行使用大功告成

步骤分解

一些帐号注册、仓库创建就不再说了,主要说下开发的具体流程 先来一段伪代码

1.确定目标文件夹、一些相关的参数(是否重命名、源后缀、目标后缀)2.获得目标文件夹下的所有文件(符合源后缀)3.对符合条件的文件进行重命名(修改后缀)4.结束,对,流程很简单,实现起来也不麻烦,但是起码这是自己的小工具啊,哪怕网上再多也是别人的

开发中使用的module:

minimist(命令行参数处理) fs(操作文件) path(处理文件路径) colors(让打印信息更加好看)

核心代码如下:

#!/usr/bin/env node//作为命令行工具,第一行就是上面的这货,千万别少了var fs = require('fs');var path = require('path');var colors = require('colors');//指定一些颜色信息colors.setTheme({ error : 'red', success : 'green', info : 'yellow'});//获得命令行的参数var argv = require("minimist")(process.argv.slice(2), { alias: { 'input': 'i', 'target': 't', 'directory': 'd', 'loop' : 'l', 'random' : 'r' }, string: ['input', 'target','directory'], boolean : ['loop','random'], 'default': { 'directory': process.cwd() }});//打印帮助信息if (argv.help) { console.log("Usage:".info); console.log(" changeext --help // print help information".success); console.log(" changeext txt js // change 'txt' to 'js' ".success); console.log(" changeext -i txt // input file extensions".success); console.log(" changeext -t js // target file extensions".success); console.log(" changeext -d /home/ // target directory for change".success); console.log(" changeext -l // loop file directory for change file extensions".success); console.log(" changeext txt js -r // get some random name"); process.exit(0);}//随机获得一个随机字符串function getRandom(){ var counter = 0; return (function() { var guid = ( new Date()).toString( 32 ),i = 0; for ( ; i < 5; i ) { guid = Math.floor( Math.random() * 65535 ).toString( 32 ); } return guid (counter ).toString( 32 ); })();}//重命名function rename (folderPath,input,target,loop){ fs.stat(folderPath,function(err,stats){ if(err){ console.log(err); }else{ if(stats.isDirectory()){ if(loop === true && argv.loop === false){ return false; } if(loop === false && argv.loop === false){//不需要循环,但是目标路径为文件夹 loop = true; } fs.readdir(folderPath,function(err2,files){ if(err2){ console.log(err2); }else{ if(files && files.length > 0){ files.forEach(function(filename,index){ rename(path.join(folderPath,filename),input,target,loop); }); } } }); }else{ var extname = path.extname(folderPath); input = input.startsWith('.') || input == '' ? input : '.' input; target = target.startsWith('.') || target == '' ? target : '.' target; extname = extname.toLowerCase(); input = input.toLowerCase(); target = target.toLowerCase(); if(extname === input){ var newPath = ""; if(argv.random){ var randomName = getRandom() target; newPath = path.join(path.dirname(folderPath),randomName); }else{ newPath = folderPath.substring(0,folderPath.length - extname.length) target; } fs.rename(folderPath,newPath,function(err){ if(err){ console.log(err); }else{ console.log('Rename file : ' folderPath.info ' => ' newPath.info ' success.'.success); } }); } } } });}//校验if(argv.directory && fs.existsSync(argv.directory)){ if( (argv.input && argv.target) || (argv.input === '' && argv.target) || (argv.input && argv.target === '') ){ rename(argv.directory,argv.input,argv.target,argv.loop); }else{ if(argv._[0] && argv._[1]){ rename(argv.directory,argv._[0],argv._[1]); }else{ console.log('input file extensions and target file extensions must be not empty.'.error); process.exit(0); } }}else{ console.log('directory is not exists.'.error); process.exit(0);}

然后我们就针对代码进行本地测试

开发自己的nodejs命令行工具并使用工具(node.js 开发工具)

image.png

OK,测试成功,然后把代码发布到github(此处流程可以google),然后将自己的代码发布到npm官网。

npm publish //这里经常出问题 //1.首先,要注册一个npm官网的帐号。 //2.然后登录 npm login //3.确认帐号 npm whoami //4.发布即可。 有时候会发布报错,可能的原因是 registry 改过了,只需要再改回来即可。 //npm config set registry http://registry.npmjs.orgnpm publish

然后,我们就可以开心地下载自己的工具来666了。

命令行工具:changeext

本文中的命令行工具为 changeext

可以很方便地变更指定后缀到目标后缀或重命名,同时附带了一个简单的加密,可以悄悄地隐藏文件咯,比如:

//全局安装npm i changeext -g //将mp4 修改为 bin文件,并做简单加密。默认是在当前执行命令的目录下查找并执行changeext mp4 bin -e//如果要修改回来则是changeext bin mp4 -e

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月20日 上午11:32
下一篇 2024年5月20日 上午11:44

相关推荐

  • 陕西合阳:技术员进场区给奶牛做B超

      为提高奶牛场区繁育管理水平,以为养殖场户解决繁育难题为重点,利用好现代化技术手段,通过免费开展B超服务活动,切实把“奶牛繁殖技术无偿指导常态化服务活动”…

    科研百科 2022年6月6日
    294
  • 科研项目排名第一是主持人

    科研项目排名第一是主持人 近年来,随着科技的飞速发展,科研项目的质量和成果也日益提升。在这个背景下,我们有幸看到了许多令人瞩目的科研成果,其中,主持人的研究方向和成果也是备受关注的…

    科研百科 2024年4月11日
    63
  • 协同办公原理(协同办公发展)

    协同办公,是指多个团队成员在一起分享信息和任务,共同完成工作的过程。随着信息技术的不断发展,协同办公已经成为了现代组织中不可或缺的一部分。本文将探讨协同办公的重要性以及如何优化协同…

    科研百科 2024年6月2日
    40
  • 邵阳税务:党建述职“亮答卷” 踔厉奋发“谱新篇”

    红网时刻新闻1月16日讯(通讯员 林淑嘉 石芮旗)1月16日,国家税务总局邵阳市税务局召开2022年度县市区局党委书记抓党建述职评议考核暨全面从严治党主体责任述职会议。会议坚持以习…

    科研百科 2023年2月10日
    237
  • 合同管理内控流程

    合同管理内控流程 合同管理是企业管理中非常重要的一环,它涉及到企业的运营、决策和风险控制等多个方面。在合同管理中,内控流程的制定和实施是至关重要的,它能够帮助企业有效地管理合同,降…

    科研百科 2024年5月26日
    42
  • 省财政厅 省科技厅关于印发《贵州省科研机构创新能力建设专项资金管理办法》的通知

    各相关单位: 为加强和规范贵州省科研机构创新能力建设专项资金管理,提高资金使用效益,根据《中华人民共和国预算法》《国务院办公厅关于改革完善中央财政科研经费管理的若干意见》《贵州省省…

    科研百科 2022年8月29日
    251
  • 畜牧业结构调整:让百姓放心吃肉安心喝奶

      农业供给侧结构性改革,说到底,是为了满足人们对更优质更安全农产品的新需求。畜牧业结构调整,直接关系着我国百姓餐桌上每日“一杯奶,几块肉”能否吃得放心。H…

    科研百科 2022年5月20日
    287
  • 医科大学校级科研项目申报

    医科大学校级科研项目申报 近年来,随着医学技术的发展,医科大学的教学和科研水平也在不断提高。为了推动学校的教学和科研事业,许多医科大学都积极开展了校级科研项目申报。本文将介绍医科大…

    科研百科 2024年4月8日
    26
  • 山西五台牛羊实现生态养殖

      山西省五台县从跻身雁门关生态畜牧经济区项目建设以来,全面推行了目标责任制,重点是标准化肉牛养殖小区建设。该县畜牧兽医局又在饲养管理、修建圈舍、饲料加工、防疫免疫、品种改良等方面…

    科研百科 2022年5月17日
    346
  • 项目管理9大领域44个过程(项目管理9大领域44个过程是什么)

    九大领域(沟质整范进、成人风采) 1. 风险管理就是将风险大事化小,小事化了。 2. 整体管理就是啥活儿都管点。 3. 沟通管理就是有话好好说。 4. 人力资源管理就是让你手下的人…

    科研百科 2023年9月6日
    146