| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { copyFile, mkdir } from 'node:fs/promises'
- import { createRequire } from 'node:module'
- import { dirname, resolve } from 'node:path'
- import { fileURLToPath, pathToFileURL } from 'node:url'
- const root = resolve(fileURLToPath(new URL('..', import.meta.url)))
- const require = createRequire(import.meta.url)
- const wordRendererRequire = createRequire(resolve(root, 'packages/renderers/word/package.json'))
- const resolveViteEntrypoint = () => {
- try {
- return require.resolve('vite')
- } catch {
- const demoRequire = createRequire(resolve(root, 'apps/viewer-demo/package.json'))
- return demoRequire.resolve('vite')
- }
- }
- const { build } = await import(pathToFileURL(resolveViteEntrypoint()).href)
- const rawArgs = process.argv.slice(2)
- const readArgValue = name => {
- const index = rawArgs.indexOf(name)
- if (index === -1) {
- return undefined
- }
- const value = rawArgs[index + 1]
- return value && !value.startsWith('--') ? value : undefined
- }
- const outputDir = resolve(
- root,
- readArgValue('--out-dir') ||
- process.env.FILE_VIEWER_DEMO_OUTPUT_DIR ||
- process.env.DEMO_OUTPUT_DIR ||
- 'apps/viewer-demo/dist'
- )
- const docxVendorDir = resolve(outputDir, 'vendor/docx')
- const docxPackageDir = dirname(wordRendererRequire.resolve('@file-viewer/docx/package.json'))
- await mkdir(docxVendorDir, { recursive: true })
- await copyFile(
- resolve(docxPackageDir, 'dist/docx-preview.worker.js'),
- resolve(docxVendorDir, 'docx.worker.js')
- )
- await copyFile(
- resolve(docxPackageDir, 'dist/jszip.min.js'),
- resolve(docxVendorDir, 'jszip.min.js')
- )
- console.log(`[file-viewer] Copied @file-viewer/docx worker assets to ${docxVendorDir}`)
- const workerBuilds = [
- {
- label: 'spreadsheet',
- entry: resolve(root, 'packages/renderers/spreadsheet/src/spreadsheet/worker/sheetjs/sheet.worker.ts'),
- outDir: resolve(outputDir, 'vendor/xlsx'),
- fileName: 'sheet.worker.js'
- }
- ]
- for (const worker of workerBuilds) {
- await mkdir(worker.outDir, { recursive: true })
- await build({
- configFile: false,
- publicDir: false,
- logLevel: 'warn',
- build: {
- emptyOutDir: false,
- minify: true,
- codeSplitting: false,
- outDir: worker.outDir,
- target: 'es2019',
- lib: {
- entry: worker.entry,
- formats: ['es'],
- fileName: () => worker.fileName
- },
- rollupOptions: {}
- }
- })
- console.log(`[file-viewer] Built ${worker.label} worker to ${worker.outDir}/${worker.fileName}`)
- }
|