vite-plugin-qrcode
Version:
Show QR code on server start
55 lines (54 loc) • 1.43 kB
JavaScript
// src/index.ts
import qr from "qrcode-terminal";
function qrcode(options = {}) {
return {
name: "vite-plugin-qrcode",
apply: "serve",
configureServer(server) {
const _listen = server.listen;
server.listen = function() {
var _a;
const isRestart = arguments[1] === true;
if (!isRestart) {
(_a = server.httpServer) == null ? void 0 : _a.on("listening", () => {
setTimeout(() => logQrcode(server, options), 0);
});
}
return _listen.apply(this, arguments);
};
},
configurePreviewServer(server) {
var _a;
if ("resolvedUrls" in server) {
(_a = server.httpServer) == null ? void 0 : _a.on("listening", () => {
setTimeout(() => logQrcode(server, options), 0);
});
}
}
};
}
function logQrcode(server, options) {
var _a;
let networkUrls = (_a = server.resolvedUrls) == null ? void 0 : _a.network;
if (!networkUrls)
return;
if (options.filter) {
networkUrls = networkUrls.filter(options.filter);
}
if (networkUrls.length === 0)
return;
const info = server.config.logger.info;
info("\n Visit page on mobile:");
for (const url of networkUrls) {
qr.generate(url, { small: true }, (result) => {
info(` ${cyan(url)}
${result.replace(/\n/g, "\n ")}`);
});
}
}
function cyan(str) {
return `\x1B[36m${str}\x1B[0m`;
}
export {
qrcode
};