This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Doric/doric-cli/scripts/watcher.js

78 lines
2.2 KiB
JavaScript
Raw Normal View History

2019-08-03 10:19:56 +08:00
const chokidar = require('chokidar')
const ws = require('./server')
const fs = require("fs")
2019-08-15 10:51:58 +08:00
const doMerge = require("./command").doMerge
2019-08-03 10:19:56 +08:00
2019-08-03 02:03:56 +08:00
require('shelljs/global')
2019-08-13 17:22:56 +08:00
exec('npm run dev >/dev/null 2>&1', { async: true })
console.warn('Waiting ...')
setTimeout(() => {
console.warn('Start watching')
ws.listen(7777)
chokidar.watch(process.cwd() + "/bundle", {
ignored: /(^|[\/\\])\../,
}).on('change', (path) => {
2019-08-03 10:19:56 +08:00
fs.readFile(path, 'utf-8', (error, data) => {
2019-08-15 10:51:58 +08:00
if (!path.endsWith('.map')) {
console.log('File change:', path)
2019-12-02 10:47:29 +08:00
try {
const sourceMap = doMerge(path + ".map")
ws.connections.forEach(e => {
e.sendText(JSON.stringify({
cmd: 'RELOAD',
script: data,
source: path.match(/[^/\\]*$/)[0],
sourceMap,
}))
})
} catch (e) {
console.error(e)
}
2019-08-15 10:51:58 +08:00
}
2019-08-03 10:19:56 +08:00
})
2019-08-13 17:22:56 +08:00
});
}, 3000);
const os = require('os');
function getIPAdress() {
const ret = []
var interfaces = os.networkInterfaces();
for (var devName in interfaces) {
var iface = interfaces[devName];
for (var i = 0; i < iface.length; i++) {
var alias = iface[i];
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
ret.push(alias.address);
}
}
2019-08-03 10:19:56 +08:00
}
2019-08-13 17:22:56 +08:00
return ret
}
const qrcode = require('qrcode-terminal');
2019-11-20 14:08:34 +08:00
2019-08-13 17:22:56 +08:00
const ips = getIPAdress()
ips.forEach(e => {
console.log(`IP:${e}`)
2019-11-20 14:08:34 +08:00
qrcode.generate(e, { small: false });
2019-08-13 17:22:56 +08:00
})
2019-08-13 17:39:07 +08:00
const keypress = require('keypress');
keypress(process.stdin);
process.stdin.on('keypress', function (ch, key) {
if (key && key.ctrl && key.name == 'r') {
ips.forEach(e => {
console.log(`IP:${e}`)
2019-11-20 14:08:34 +08:00
qrcode.generate(e, { small: false });
2019-08-13 17:39:07 +08:00
})
}
if (key && key.ctrl && key.name == 'c') {
process.stdin.pause();
process.exit(0);
}
});
process.stdin.setRawMode(true);
process.stdin.resume();