一、描述

使用 rax 的时候,发现 rax-clidev 的时候(本质上是 rax-scripts)在终端输出二维码,用来进行扫码,从而不需要自己基于 express 构建一个在线网页。

刚好最近在弄一个脚手架工具,需要具有扫码的功能,之前都是开一个 express,在网页上生成,如果直接在 terminal 生成,非常方便和实用,于是就去看了一下怎么实现的。

二、实现

rax-scripts 的依赖中使用的是 qrcode-terminal,npm 地址:

1、安装

yarn add qrcode-terminal -D
# npm install -D qrcode-terminal

2、使用

const qrcode = require('qrcode-terminal');

const url = 'http://www.ptbird.cn';

qrcode.generate(url);

变量 qrcode 只有三个属性:

{ error: 1,
  generate: [Function: generate],
  setErrorLevel: [Function: setErrorLevel] }

3、效果

1.jpg

4、小尺寸

默认的二维码是很大的,如果需要小一点的二维码,则直接传入对象参数即可。

const qrcode = require('qrcode-terminal');

const url = 'http://www.ptbird.cn';

qrcode.generate(url,{small:true});

2.png

5、回调方法

回调方法可以在二维码输出之后再输出别的内容,但实际上用处不是很大,因为在 qrcode.generate() 后面接着写 console.log() 也是可以的,而且它的文档中提到了一个参数 qrcode,而我输出这个参数的时候,发现这个参数是空的,啥也没有。

qrcode.generate(url,{small:true},(qrcode) => {
  console.log(qrcode); // 空
}); 

三、全局使用

如果需要全局使用 qrcode-terminal,则需要全局安装:

npm install -g qrcode-terminal

直接使用 qrcode-terminal 全局命令即可,如下:

qrcode-terminal http://ptbird.cn

或者通过下面这种方式

echo http://www.ptbird.cn | qrcode-terminal

不过我没发现如何使用全局命令行控制二维码大小的选项,好像不支持。