็พๅจๅฏซ PHP ็ๆๅ้ฝๆ่ฉฆ่ๅจ node.js ไปฅๅ shell script ไธๅฏฆ็พ,ๆไปฅๆไธๆท็ๅ่ฉฆ็จๅผ็ขผ,ๆฏๆฌก่ฆ็ๅท่ก็ตๆ้ฝ่ฆไธไธๆฌก command ไนๆบ็ดฏ็,ๅฏซไบไธ้ป w.js ไพ็ฃๆง้ไธ็จฎๆชๆก็่ฎๅไธฆๅธถๅ
ฅๅฐๆ็ๅผๅซๆนๅผไพ็ฏ็ๆ้
ๆญคๅ่ฝ้ๅฎ่ฃ watch,ๅท่กๆนๆณ็บ node w.js xxx.php
w.js
const watch = require('watch');
const { exec } = require('child_process');
const path = require('path');
const argvs = process.argv;
const target = argvs[2];
const fs = require('fs');
const commandMap = {
sh: 'bash',
php: 'php',
js: 'node'
};
if (target === undefined) {
console.log('Need file argument!');
return;
}
if (!fs.existsSync(target)) {
console.log(`${target} is not exists!`);
return;
}
let ext = path.extname(target).replace(/\./g, '');
if (Object.keys(commandMap).indexOf(ext) === -1) {
console.log(`${ext} is not legal!`);
return;
}
console.log(`Start to watch "${target}"!`);
watch.createMonitor('./', (monitor) => {
monitor.on('changed', (file) => {
if (file === target) {
exec(`clear; ${commandMap[ext]} ${file}`, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(stdout);
console.log(stderr);
});
}
});
});
ๅฏฆ้ไฝฟ็จ็ซ้ขๅคงๆฆๆฏ้ๆจฃ