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

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()表明文件
semver npm的語義版本器
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調用得到機器的默認網關
joi JavaScript最強大的模式描述語言和數據驗證器。
fs-extra 添加了未包含在原生fs模塊中的文件系統方法,並向fs方法添加了promise支持
Acorn 一個小而快速的JavaScript解析器,徹底用JavaScript編寫。
zlib.js ZLIB.js是ZLIB(RFC1950), DEFLATE(RFC1951), GZIP(RFC1952)和PKZIP在JavaScript實現。

nodejs交互工具庫 -- chalk-pipe和chalknode

nodejs交互工具庫 -- commander和Inquirerlinux

nodejs交互工具庫 -- slash, minimist和dotenv, dotenv-expandwebpack

nodejs交互工具庫 -- hash-sum, deepmerge和yaml-front-mattergit

nodejs交互工具庫 -- resolve和semvergithub

nodejs交互工具庫 -- leven, lru cache和portfinderweb

nodejs交互工具庫 -- ora和envinfo算法

nodejs交互工具庫 -- memfs和execanpm

nodejs交互工具庫 -- webpack-merge和webpack-chainjson

nodejs交互工具庫 -- strip-ansi, address, default-gateway和joisegmentfault

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

相關文章
相關標籤/搜索