nodejs交互工具库系列库角色chalk-pipe使用更简单的样式字符串创建chalk样式解决方案chalk正确处理终端字符串样式Commander.jscomplete节点。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和zlibslash将窗口反斜杠路径转换为斜杠路径foo\\bar?foo/bar只要不是长路径并且不包含任何非ascii字符都可以在带有正斜杠路径的窗口中使用。这是因为Node.js中的路径方法在Windows上输出\\path。Installyarn添加slashUsageconstpath=require('path');constslash=require('斜杠');conststring=path.join('foo','bar');//Unix=>foo/bar//Windows=>foo\\barslash(string);//Unix=>foo/bar//Windows=>foo/barAPIslash(path)Type:string采用带有反斜杠的Windows路径并返回带有正斜杠的路径。参考基本的常用方法场景就可以了。更完整的用法可以直接参考文档。examplevarargv=require('minimist')(process.argv.slice(2));console.log(argv);$nodeexample/parse.js-abeep-bboop{_:[],a:'beep',b:'boop'}$nodeexample/parse.js-x3-y4-n5-abc--beep=boopfoobarbaz{_:['foo','bar','baz'],x:3,y:4,n:5,a:true,b:true,c:true,beep:'boop'}Security以前的版本有一个原型污染错误,当处理不受信任的用户输入时,这个错误可能导致某些情况下的特权升级。请使用1.2.3或更高版本https://snyk.io/vuln/SNYK-JS-...methodsvarparseArgs=require('minimist')varargv=parseArgs(args,opts={})返回一个参数对象argv,填充了args中的数组参数。argv._包含没有关联选项的所有参数。数字外观的参数将作为数字返回。除非将opts.string或opts.boolean设置为参数名称。'--'之后的任何参数都不会被解析,它们将以argv._结尾。选项可以是:opts.string-参数名称的字符串或字符串数??组,始终被视为字符串opts.boolean-布尔值,字符串或字符串数??组始终被视为布尔值。如果为true,将把所有没有等号的双连字符参数视为布尔值(例如:影响属性--foo、not-f或--foo=bar)opts.alias-将字符串名称映射为字符串对象或数组用作别名的字符串参数名称opts.default-将字符串参数名称映射到默认值的对象opts.stopEarly-当为真时,第一个非选项参数之后的所有内容都会填充到argv._中。opts['--']-当为真时,所有--之前的参数将被填充到argv._中,--之后的参数将被填充到argv['--']中。这是一个例子:>require('./')('一二三--四五--6'.split(''),{'--':true}){_:['一','two','three'],'--':['four','five','--six']}注意设置opts['--']后参数的解析还是停止了--opts.unknown-使用在opts配置对象中使用未定义的命令行参数调用的函数。如果函数返回false,则未知选项不会添加到argv.installyarnaddminimistdotenvDotenv是一个零依赖模块,它将环境变量从.env文件加载到process.env中。在独立于代码的环境中存储配置基于十二因素应用程序方法Install#withnpmnpminstalldotenv#或使用YarnyarnadddotenvUsage在应用程序中尽早要求和配置dotenv。require('dotenv').config()在项目的根目录中创建一个.env文件。在新行中以NAME=VALUE的形式添加特定于环境的变量。例如:DB_HOST=localhostDB_USER=rootDB_PASS=s1mpl3process.env现在有了你在.env文件中定义的键和值。constdb=require('db')db.connect({host:process.env.DB_HOST,username:process.env.DB_USER,password:process.env.DB_PASS})Preload可以使用--require(-r)命令预加载dotenv的行选项。通过这样做,您不需要在您的应用程序代码中引入和加载dotenv。这是使用import而不是require时的首选方法//.envDB_HOST=localhost//scriptconsole.log(process.env.DB_HOST)//cmd$node-rdotenv/configyour_script.jslocalhost支持以下配置选项形式为命令行参数dotenv_config_