Electron вызывает командную строку (cmd)

Electron

Из-за недавних требований к проекту необходимо запускать службу nginx при запуске клиента Electron, поэтому я изучил, как вызывать командную строку в Electron. Поскольку Electron основан на Chromium и Node.js, он может напрямую использовать Node.js API и некоторые пакеты. В настоящее время существует два метода исследования:

child_process

child_process— это встроенный модуль Node.js, который позволяет создавать дочерние процессы.

Код реализации:

const exec = require('child_process').exec
export function start () {
  // 任何你期望执行的cmd命令,ls都可以
  let cmdStr1 = 'your command code'
  let cmdPath = './file/'
  // 子进程名称
  let workerProcess
  runExec(cmdStr1)
  function runExec (cmdStr) {
    workerProcess = exec(cmdStr, { cwd: cmdPath })
    // 打印正常的后台可执行程序输出
    workerProcess.stdout.on('data', function (data) {
      console.log('stdout: ' + data)
    })
    // 打印错误的后台可执行程序输出
    workerProcess.stderr.on('data', function (data) {
      console.log('stderr: ' + data)
    })
    // 退出之后的输出
    workerProcess.on('close', function (code) {
      console.log('out code:' + code)
    })
  }
}

node-cmd

node-cmd— это пакет, который позволяет Node.js вызывать командную строку.

Сначала нам нужно установить:

npm install node-cmd --save

Код реализации:

   var cmd=require('node-cmd');
 
    cmd.get(
        'pwd',
        function(err, data, stderr){
            console.log('the current working dir is : ',data)
        }
    );
 
    cmd.run('touch example.created.file');
 
    cmd.get(
        'ls',
        function(err, data, stderr){
            console.log('the current dir contains these files :\n\n',data)
        }
    );
 
    cmd.get(
        `
            git clone https://github.com/RIAEvangelist/node-cmd.git
            cd node-cmd
            ls
        `,
        function(err, data, stderr){
            if (!err) {
               console.log('the node-cmd cloned dir contains these files :\n\n',data)
            } else {
               console.log('error', err)
            }
 
        }
    );

Выше приведены два способа вызова командной строки в Electron, по сути, все они используют возможности Node.js.

Разница между ними в том, что child_process может указать путь для выполнения команды, корневой каталог проекта по умолчанию, в то время как node-cmd не может указать путь выполнения, а может только перейти к целевому пути сам по себе.

Я использую child_process, и конкретный сценарий использования также должен основываться на моих собственных потребностях.