nodejs交互工具库系列库角色chalk-pipe使用更简单的样式字符串创建chalk样式解决方案chalk正确处理终端字符串样式Commander。js完整的node.js命令行解决方案Inquirer.js一组通用的交互式命令行用户界面。斜杠系统路径字符处理minimist解析参数选项dotenv从加载环境变量。或多个对象的可枚举属性。yaml-front-matter解析yaml或jsonresolve实现node的require.resolve()算法,这样require.resolve()可以异步和同步的方式代表semvernpm的semanticversionerleven测量两个字符串的差异
最快的JS实现之一lru缓存删除最近最少使用的项目缓存对象portfinder自动查找从8000到65535的可用端口号或优雅的终端运行器envinfo生成用于解决软件问题(例如操作系统、二进制版本、浏览器、已安装的语言等)memfs内存文件系统与Node的fsAPI实现相同execa用于人工进程执行webpack-merge用于连接数组和合并对象创建新对象webpack-chain使用chainAPI生成简化的webpack版本配置修改strip-ansi删除ANSIescapecodeaddress从字符串中获取当前机器的IP、MAC和DNS服务器。default-gateway通过对OS路由接口的exec调用获得机器的默认网关。joiJavaScript最强大的模式描述语言和数据验证器。fs-extra添加了本机fs模块中未包含的文件系统方法,并为fs方法添加了promise支持。Acorn是一个小巧而快速的JavaScript解析器,完全用JavaScript编写。zlib.jsZLIB.js是ZLIB(RFC1950)、DEFLATE(RFC1951)、GZIP(RFC1952)和PKZIP的JavaScript实现。nodejs交互工具库——chalk-pipe和chalknodejs交互工具库——commander和Inquirer交互工具库--resolve和semvernodejs交互工具库--leven、lrucache和portfindernodejs交互工具库--ora和envinfonodejs交互工具库--memfs和execanodejs交互工具库--webpack-merge和webpack-chainnodejs交互工具库--strip-ansi、address、default-gateway和joinodejs交互工具库--fs-extra、Acorn和zlibstrip-ansi从字符串中剥离ANSI转义码Install$npminstallstrip-ansiUsageconststripAnsi=require('strip-ansi');stripAnsi('\u001B[4mUnicorn\u001B[0m');//=>'Unicorn'stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');//=>‘Click’企业版strip-ansi作为Tidelift订阅的一部分提供.节省时间、降低风险并改善代码的运行状态,同时向您使用的依赖项的维护人员支付费用。了解更多。参考基本常用方法场景,更完整的用法可以直接看文档strip-ansiaaddress获取当前机器的IP、MAC和DNS服务器。DNS服务器接收/etc/resolv.conf。Install$npminstalladdressUsageGetIP是同步的,GetMAC现在是不同步的varaddress=require('address');//默认接口'eth'onlinux,'en'onosx.address.ip();//'192.168.0.2'address.ipv6();//'fe80::7aca:39ff:feb0:e67d'address.mac(function(err,addr){console.log(addr);//'78:ca:39:b0:e6:7d'});//本地环回地址.ip('lo');//'127.0.0.1'//vboxnetMACaddress.mac('vboxnet',function(err,addr){console.log(addr);//'0a:00:27:00:00:00'});获取所有地址:IPv4、IPv6和MACaddress(function(err,addrs){console.log(addrs.ip,addrs.ipv6,addrs.mac);//'192.168.0.2','fe80::7aca:39ff:feb0:e67d','78:ca:39:b0:e6:7d'});address('vboxnet',function(err,addrs){console.log(addrs.ip,addrs.ipv6,addrs.mac);//'192.168.56.1',null,'0a:00:27:00:00:00'});获取接口信息familyaddress.interface('IPv4','eth1');//{address:'192.168.1.1',family:'IPv4',mac:'78:ca:39:b0:e6:7d'}GetDNSserversaddress.dns(function(err,addrs){console.log(地址);//['10.13.2.1','10.13.2.6']});benchmarkrun$npmrunbenchmark18,929op/s?#ip17,622op/s?#ipv616,347op/s?#mac11,906op/s?#dns参考基本常用方法和场景。更完整的用法可以直接参考文档addressdefault-gateway通过对OS路由接口的exec调用获取本机的默认网关。和Android,ip命令必须可用(通常由iproute2包提供)。在Windows上,wmic必须可用。在IBMi上,db2util命令必须可用(由db2util包提供)。在Unix(和macOS)上,netstat命令必须可用。安装$npmidefault-gatewayExampleconstdefaultGateway=require('default-gateway');const{gateway,interface}=awaitdefaultGateway.v4();//gateway='1.2.3.4',interface='en1'const{gateway,interface}=awaitdefaultGateway.v6();//gateway='2001:db8::1',interface='en2'const{gateway,interface}=defaultGateway.v4.sync();//gateway='1.2.3.4',interface='en1'const{gateway,interface}=defaultGateway.v6.sync();//gateway='2001:db8::1',interface='en2'APIdefaultGateway.v4()defaultGateway。v6()defaultGateway.v4.sync()defaultGateway.v6.sync()返回:resultObjectgateway:默认网关的IP地址interface:接口名称。在Windows上,这是网络适配器名称。v{4,6}()方法返回一个Promise,.v{4,6}.sync()变体同步返回结果。网关属性将始终在成功时定义,而接口如果无法确定则可能为空。所有方法都拒绝/抛出异常。仅供参考,基本常用的方法和场景。更完整的用法可以直接参考文档default-gatewayjoiJavaScript最强大的schema描述语言和数据验证器。安装npminstalljoi访问joi.dev门户以获取教程、文档和支持示例constJoi=require('joi')//声明类型constschema=Joi.object({a:Joi.number()});//验证数据conststring={a:'123'};constnumber={a:123};constboleean={a:true};//验证结果constresult1=schema.validate(string)constresult2=schema.validate(number)constresult3=schema.validate(boleean)console.log(result1,result2,result3)/*{value:{a:123}}{value:{a:123}}{value:{a:true},error:[Error[ValidationError]:"a"mustbeanumber]{_original:{a:true},details:[[Object]]}}*/UsefulresourcesDocumentationandAPIVersionsstatusChangelogProjectpoliciesReference基础常用方法场景就这些,更完整的用法可以直接参考文档joi
