| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import { cp, mkdir, readdir, rm } from 'node:fs/promises'
- import { existsSync } from 'node:fs'
- import { dirname, resolve } from 'node:path'
- import { fileURLToPath } from 'node:url'
- const demoDir = resolve(dirname(fileURLToPath(import.meta.url)), '..')
- const repoDir = resolve(demoDir, '../..')
- const sourceDir = resolve(repoDir, 'packages/components/web/viewer')
- const targetDirs = [
- resolve(demoDir, 'public/file-viewer'),
- resolve(demoDir, 'public/vendor/file-viewer')
- ]
- const helperSourceDir = resolve(repoDir, 'packages/components/web/dist')
- const helperTargetDir = resolve(demoDir, 'public/vendor/file-viewer-web')
- const helperFiles = ['flyfish-file-viewer-web.iife.js']
- const exampleSourceDir = resolve(repoDir, 'apps/viewer-demo/public/example')
- const exampleTargetDir = resolve(demoDir, 'public/example')
- if (!existsSync(resolve(sourceDir, 'flyfish-viewer-assets.json'))) {
- throw new Error('缺少 packages/components/web/viewer/flyfish-viewer-assets.json,请先运行 pnpm build:viewer-assets')
- }
- const removeMacMetadata = async dir => {
- const entries = await readdir(dir, { withFileTypes: true })
- await Promise.all(entries.map(entry => {
- const path = resolve(dir, entry.name)
- if (entry.name === '.DS_Store') {
- return rm(path, { force: true })
- }
- if (entry.isDirectory()) {
- return removeMacMetadata(path)
- }
- return undefined
- }))
- }
- for (const targetDir of targetDirs) {
- await rm(targetDir, { force: true, recursive: true })
- await mkdir(targetDir, { recursive: true })
- await cp(sourceDir, targetDir, { recursive: true })
- await removeMacMetadata(targetDir)
- console.log(`[file-viewer-demo] viewer assets copied to ${targetDir}`)
- }
- for (const assetRoot of ['vendor', 'wasm']) {
- const sourceAssetRoot = resolve(sourceDir, assetRoot)
- if (!existsSync(sourceAssetRoot)) {
- continue
- }
- const targetAssetRoot = resolve(demoDir, 'public', assetRoot)
- await mkdir(targetAssetRoot, { recursive: true })
- const entries = await readdir(sourceAssetRoot, { withFileTypes: true })
- await Promise.all(entries.map(entry => rm(resolve(targetAssetRoot, entry.name), { force: true, recursive: true })))
- await cp(sourceAssetRoot, targetAssetRoot, { recursive: true })
- await removeMacMetadata(targetAssetRoot)
- console.log(`[file-viewer-demo] viewer root ${assetRoot} assets copied to ${targetAssetRoot}`)
- }
- await rm(helperTargetDir, { force: true, recursive: true })
- await mkdir(helperTargetDir, { recursive: true })
- for (const helperFile of helperFiles) {
- const sourceFile = resolve(helperSourceDir, helperFile)
- if (!existsSync(sourceFile)) {
- throw new Error(`缺少 ${sourceFile},请先运行 pnpm --filter @file-viewer/web build`)
- }
- await cp(sourceFile, resolve(helperTargetDir, helperFile))
- }
- console.log(`[file-viewer-demo] web helper assets copied to ${helperTargetDir}`)
- await mkdir(exampleTargetDir, { recursive: true })
- await cp(resolve(exampleSourceDir, 'word.docx'), resolve(exampleTargetDir, 'word.docx'))
- console.log(`[file-viewer-demo] docx example copied to ${exampleTargetDir}`)
|