docs: async function copy(src, dist, options = {}) {
      let [from, to] = await Promise.all([stat(src), stat(dist)]);
  
      // 判断源文件是否存在
      if (!from) {
          throw new Error(`Error: '${src}' is not exists!`);
      }
  
      // 判断目标文件是否存在
      if (to) {
          throw new Error(`Error: '${dist}' is exists!`);
      }
  
      // 复制文件
      if (from.isDirectory()) {
          let files = await readdir(src);
  
          // 创建目标文件夹
          await 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 copy(dir, path.join(dist, file), options);
          }));
      } else {
          await copyFile(src, dist);
      }
  }