move.ts 848 字节
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
import path from 'path'
import fs from 'fs-extra'
import glob from 'fast-glob'
import type { Plugin } from 'vite'

interface UniMovePluginOptions {
  apply: Plugin['apply']
  enforce: Plugin['enforce']
  /**
   * 原始根目录
   */
  cwd: string
  /**
   * glob pattern 如:**\/*.js.mp)
   */
  pattern: string
  /**
   * 目标目录
   */
  dest: string
}

export function uniMovePlugin({
  apply,
  enforce,
  cwd,
  pattern,
  dest,
}: UniMovePluginOptions): Plugin {
  return {
    name: 'uni:move',
    apply,
    enforce,
    async writeBundle() {
      await Promise.all(
        glob
          .sync(pattern, {
            cwd,
          })
          .map((filename) => {
            return fs.move(
              path.resolve(cwd, filename),
              path.resolve(dest, filename)
            )
          })
      )
    },
  }
}