V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vevlins
V2EX  ›  前端开发

分享:移动端测试让 webpack-dev-server 启动后显示二维码

  •  
  •   vevlins · 2018-05-24 00:42:41 +08:00 · 1481 次点击
    这是一个创建于 2164 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为要做移动端测试,所以经常执行一串操作。

    • ifconfig
    • 修改掉完整的 url
    • 粘贴进浏览器
    • 启动网页二维码插件

    最近看到 rax-scripts 自己带了命令行输出二维码的操作,觉得也可以自己来实现这个功能。

    做了一个很简单的 webpack 插件分享给大家看实现,非常简单,也可以自己实现。 webpack-server-qrcode

    使用

    var serverQRcode = require('webpack-server-qrcode');
    
    {
      ...
      plugins:[
        new serverQRcode()
      ]
    }
    

    原理

    基于 qrcode-terminal-alpha 这个包在命令行下显示二维码。通过 os.networkInterfaces 获取 ip。通过 compiler.options.devServer.port 获取 webpack-dev-server 配置的端口号。

    const qrcode = require('qrcode-terminal-alpha');
    const os = require('os');
    
    module.exports = class serverQRcode {
      constructor(options) {
          this.options = options;
          this.qrcode = qrcode;
      }
      
      getIp(){
          const ifaces = os.networkInterfaces();
          let ips = [];
          for (const key in ifaces) {
            if (ifaces.hasOwnProperty(key)) {
              const nets = ifaces[key];
              nets.forEach(net=>{
                if(net.family === 'IPv4'){
                  const address = net.address;
                  ips.push(address);
                }
              })
            }
          }
          return ips;
        }
    
      printQRcode(url){
        this.qrcode.generate(url,{small:true},(qrcode)=>{
          console.log(qrcode);
          console.log(url);
        })
      }
      apply(compiler) {
        const port = compiler.options.devServer.port;
        const ips = this.getIp();
        ips.forEach(ip=>{
          const url = `http://${ip}:${port}`;
          this.printQRcode(url);
        })
      }
    };
    

    显示

    1 条回复    2018-05-24 01:15:12 +08:00
    woscaizi
        1
    woscaizi  
       2018-05-24 01:15:12 +08:00 via iPhone
    炫酷
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   981 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:51 · PVG 04:51 · LAX 13:51 · JFK 16:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.