docs: function spawn(command, args, options = {}) {
      return new Promise((resolve, reject) => {
          if (command) {
              let { silent, onStdout, onStderr, ...rest } = options,
                  result = [],
                  error = [],
                  sp;
  
  
              // 启动子任务
              sp = cp.spawn(command, args, {
                  shell: process.platform === 'win32',
                  ...rest
              });
  
              // 监听标准输出
              if (sp.stdout) {
                  sp.stdout.on('data', data => {
                      let str = data.toString();
  
                      // 处理输出
                      silent || process.stdout.write(stdout.green(str));
                      onStdout && onStdout(str);
                      result.push(str.trim());
                  });
              }
  
              // 监听错误输出
              if (sp.stderr) {
                  sp.stderr.on('data', data => {
                      let str = data.toString();
  
                      // 处理输出
                      silent || process.stderr.write(stdout.red(str));
                      onStderr && onStderr(str);
                      error.push(str.trim());
                  });
              }
  
              // 结果进程
              sp.on('close', code => code ? reject(error) : resolve(result));
  
              // 启动失败
              sp.on('error', reject);
  
              // 返回
              return;
          }
  
          // 结果
          resolve();
      });
  }