docs: function copy(src, dist, options = {}, callback = null) {
      let deferred = Promise.all([stat(src), stat(dist)]);
  
      // 处理参数
      if (typeof options === 'function') {
          callback = options;
          options = {};
      }
  
      // 异步处理
      deferred.then(async stats => {
  
          // 判断源文件是否存在
          if (!stats[0]) {
              return callback(new Error(`Error: '${src}' is not exists!`));
          }
  
          // 判断目标文件是否存在
          if (stats[1]) {
              return callback(new Error(`Error: '${dist}' is exists!`));
          }
  
          // 复制文件夹
          try {
              if (stats[0].isDirectory()) {
                  let files = await proxy.readdir(src);
  
                  // 创建目标文件夹
                  await proxy.mkdir(dist);
  
                  // 拷贝下级文件
                  await Promise.all(files.map(file => {
                      let dir = path.join(src, file);
  
                      // 处理排队文件
                      if (options.exclude && options.exclude.test(dir)) {
                          return Promise.resolve();
                      }
  
                      // 复制文件
                      return proxy.copy(dir, path.join(dist, file), options);
                  }));
  
              } else {
                  await proxy.copyFile(src, dist);
              }
          } catch (err) {
              return callback(err);
          }
  
          // 执行回调
          callback();
      });
  }