1

nodejs交互工具库系列

作用
chalk-pipe使用更简单的样式字符串创建粉笔样式方案
chalk正确处理终端字符串样式
Commander.js完整的 node.js 命令行解决方案
Inquirer.js一组通用的交互式命令行用户界面。
slash系统路径符处理
minimist解析参数选项
dotenv将环境变量从 .env文件加载到process.env中
dotenv-expand扩展计算机上已经存在的环境变量
hash-sum非常快的唯一哈希生成器
deepmerge深度合并两个或多个对象的可枚举属性。
yaml-front-matter解析yaml或json
resolve实现node的 require.resolve()算法,这样就可以异步和同步地使用require.resolve()代表文件
semvernpm的语义版本器
leven测量两字符串之间的差异<br/>最快的JS实现之一
lru cache删除最近最少使用的项的缓存对象
portfinder自动寻找 800065535内可用端口号
ora优雅的终端转轮
envinfo生成故障排除软件问题(如操作系统、二进制版本、浏览器、已安装语言等)时所需的通用详细信息的报告
memfs内存文件系统与Node's fs API相同实现
execa针对人类的流程执行
webpack-merge用于连接数组和合并对象,从而创建一个新对象
webpack-chain使用链式API去生成简化webpack版本配置的修改
strip-ansi从字符串中去掉ANSI转义码
address获取当前机器的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和chalk

nodejs交互工具库 -- commander和Inquirer

nodejs交互工具库 -- slash, minimist和dotenv, dotenv-expand

nodejs交互工具库 -- hash-sum, deepmerge和yaml-front-matter

nodejs交互工具库 -- resolve和semver

nodejs交互工具库 -- leven, lru cache和portfinder

nodejs交互工具库 -- ora和envinfo

nodejs交互工具库 -- memfs和execa

nodejs交互工具库 -- webpack-merge和webpack-chain

nodejs交互工具库 -- strip-ansi, address, default-gateway和joi

nodejs交互工具库 -- fs-extra, Acorn和zlib

strip-ansi

从字符串中去掉ANSI转义码

Install

$ npm install strip-ansi

Usage

const stripAnsi = require('strip-ansi');

stripAnsi('\u001B[4mUnicorn\u001B[0m');
//=> 'Unicorn'

stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
//=> 'Click'

strip-ansi for enterprise

可作为Tidelift订阅的一部分

strip-ansi和数千个其他包的维护人员正在与Tidelift合作,为用于构建应用程序的开源依赖项提供商业支持和维护.节省时间、降低风险并改善代码的运行状况,同时向您所使用的依赖项的维护者支付费用Learn more.

参考

基本常用的方法场景就这些了,更完整的用法可以直接查阅文档

strip-ansi

address

获取当前机器的IP, MAC和DNS服务器。

DNS服务器接收/etc/resolv.conf

Install

$ npm install address

Usage

Get IP是同步的,Get MAC现在是异步的

var address = require('address');

// default interface 'eth' on linux, 'en' on osx.
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'
});

// local loopback
address.ip('lo'); // '127.0.0.1'

// vboxnet MAC
address.mac('vboxnet', function (err, addr) {
  console.log(addr); // '0a:00:27:00:00:00'
});

Get all addresses: IPv4, IPv6 and MAC

address(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'
});

Get an interface info with family

address.interface('IPv4', 'eth1');
// { address: '192.168.1.1', family: 'IPv4', mac: '78:ca:39:b0:e6:7d' }

Get DNS servers

address.dns(function (err, addrs) {
  console.log(addrs);
  // ['10.13.2.1', '10.13.2.6']
});

benchmark

run $ npm run benchmark

18,929 op/s » #ip
17,622 op/s » #ipv6
16,347 op/s » #mac
11,906 op/s » #dns

参考

基本常用的方法场景就这些了,更完整的用法可以直接查阅文档

address

default-gateway

通过对OS路由接口的exec调用获得机器的默认网关。

  • 在Linux和Android上,ip命令必须可用(通常由iproute2包提供)。
  • 在Windows上,wmic必须可用。
  • 在IBM i上,db2util命令必须可用(由db2util包提供)。
  • 在Unix(和macOS)上,netstat命令必须可用。

Installation

$ npm i default-gateway

Example

const defaultGateway = require('default-gateway');

const {gateway, interface} = await defaultGateway.v4();
// gateway = '1.2.3.4', interface = 'en1'

const {gateway, interface} = await defaultGateway.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'

API

defaultGateway.v4()

defaultGateway.v6()

defaultGateway.v4.sync()

defaultGateway.v6.sync()

Returns: result Object

  • gateway: 默认网关的IP地址
  • interface: 接口的名称。在Windows上,这是网络适配器名称

    .v{4,6}()方法返回Promise而 .v{4,6}.sync() 变体会同步返回结果

网关属性将总是在成功时定义,而接口如果不能确定,则可以为null。所有方法都在意外情况下拒绝/抛出。

参考

基本常用的方法场景就这些了,更完整的用法可以直接查阅文档

default-gateway

joi

JavaScript最强大的模式描述语言和数据验证器。

Installation

npm install joi

访问 joi.dev 门户获取教程、文档和支持

例子

const Joi = require('joi')

// 声明类型
const schema = Joi.object({
  a: Joi.number()
});

// 验证数据
const string = { a: '123' };
const number = { a: 123 };
const boleean = { a: true };

// 验证结果
const result1 = schema.validate(string)
const result2 = schema.validate(number)
const result3 = schema.validate(boleean)
console.log(result1, result2, result3)
/* 
{ value: { a: 123 } } 
{ value: { a: 123 } } 
{
  value: { a: true },
  error: [Error [ValidationError]: "a" must be a number] {
    _original: { a: true },
    details: [ [Object] ]
  }
} 
*/

Useful resources

参考

基本常用的方法场景就这些了,更完整的用法可以直接查阅文档

joi


Afterward
621 声望62 粉丝

努力去做,对的坚持,静待结果