Wal*_*qar 6 javascript command-line-interface node.js electron
作为我试图实现的一个例子,考虑从终端启动 VS Code。code <file-name>如果不只是运行,该命令会打开 vs 代码的一个实例,或者告诉它以其他方式打开文件。此外,一旦打开,用户就可以再次将终端会话用于其他任务(就像进程被取消一样)。
我的脚本需要以相同的方式与我的电子应用程序交互,唯一的区别是我的应用程序将在托盘中而不是在 Dock 中可见。. 该解决方案只需要在 linux 上工作
使用 unix 套接字服务器进行进程间通信。
在电子
const handleIpc = (conn) => {
conn.setEncoding('utf8');
conn.on('data',(line) => {
let args = line.split(' ');
switch(args[0]) {
case 'hey':
conn.write('whatsup\n');
break;
default: conn.write('new phone who this?\n');
}
conn.end();
})
}
const server = net.createServer(handleIpc);
server.listen('/tmp/my-app.sock');
Run Code Online (Sandbox Code Playgroud)
那么你的 CLI 是:
#!/usr/bin/node
const net = require('net');
let args = process.argv;
args.shift(); // Drop /usr/bin/node
args.shift(); // Drop script path
let line = args.join(' ');
net.connect('/tmp/my-app.sock',(conn)=>{
conn.setEncoding('utf8');
conn.on('data',(response)=>{
console.log(response);
process.exit(0);
});
conn.write(line+'\n');
}).on('error',(err)=>{
console.error(err);
process.exit(1);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |