此示例是对 node.js 能力的一个展示,扩展使用者的思路
openInVscode.js 代码如下
(function () {
return function (argData, argParams) {
const file_os = require("fs");
const exec = require("child_process").exec;
const cmdFileName = "command.bat";
const commandList = [];
commandList.push(`code -r ${argParams.filePath}`);
file_os.writeFileSync(cmdFileName, commandList.join("\n"));
exec(cmdFileName, function (err, stdout, stderr) {
if (err) {
console.error(err);
}
});
setTimeout(() => {
file_os.unlinkSync(cmdFileName);
}, 1000);
return {
isWrite: false,
response: {
code: 200,
data: {
success: true,
},
},
};
};
})();
执行流程如下
-
用系统模块
fs
的writeFileSync
方法创建一个名为 command.bat 的文件,并写入内容code -r 文件路径
-
用系统模块
exec
执行 command.bat 文件,注意code -r
是 Vscode 提供的命令,-r 表示动作不会再打开一个新的编辑器窗口 -
bat 文件执行 1 秒种后, 用系统模块
fs
的unlinkSync
方法删除 command.bat 文件