UNPKG

@speedy-js/depcost

Version:

[![npm version](https://badgen.net/npm/v/@speedy-js/depcost)](https://npm.im/@speedy-js/depcost)

50 lines (42 loc) 1.19 kB
const cors = require('cors') const express = require('express') const generateReportHTML = require('./html') const DEFAULT_PORT = 8888 module.exports = class VisualizationServer { constructor({ results, } = {}) { this.results = results } async listen(port, host, callback) { const availblePort = await require('detect-port')(DEFAULT_PORT) if (DEFAULT_PORT !== availblePort) { console.log(`${DEFAULT_PORT} 已被占用,默认端口变更为 ${availblePort}`) } port = port ? Number(port) : availblePort port = port || DEFAULT_PORT host = host || '127.0.0.1' this.app.listen(port, host, () => { const url = `http://${host}:${port}` console.log() console.info(`Visualization Server is listening on ${url}\n`) callback && callback(url) }) } async destroy() { await new Promise((resolve, reject) => { this.server.close(err => (err ? reject(err) : resolve())) }) this.server = null } bootstrap() { if (this.app) { return } this.app = express() this.app.use(cors()) this.app.get('/', (req, res) => { res.send(generateReportHTML(this.results)) }) } }