123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // Copyright 2019-2023 Tauri Programme within The Commons Conservancy
- // SPDX-License-Identifier: Apache-2.0
- // SPDX-License-Identifier: MIT
- import { defineConfig, Plugin, RollupLog } from 'rollup'
- import typescript from '@rollup/plugin-typescript'
- import terser from '@rollup/plugin-terser'
- import fg from 'fast-glob'
- import { basename, join } from 'path'
- import { copyFileSync, opendirSync, rmSync, Dir } from 'fs'
- import { fileURLToPath } from 'url'
- // cleanup dist dir
- const __dirname = fileURLToPath(new URL('.', import.meta.url))
- cleanDir(join(__dirname, './dist'))
- const modules = fg.sync(['./src/*.ts'])
- export default defineConfig([
- {
- input: Object.fromEntries(modules.map((p) => [basename(p, '.ts'), p])),
- output: [
- {
- format: 'esm',
- dir: './dist',
- preserveModules: true,
- preserveModulesRoot: 'src',
- entryFileNames: '[name].js'
- },
- {
- format: 'cjs',
- dir: './dist',
- preserveModules: true,
- preserveModulesRoot: 'src',
- entryFileNames: '[name].cjs'
- }
- ],
- plugins: [
- typescript({
- declaration: true,
- declarationDir: './dist',
- rootDir: 'src'
- }),
- makeFlatPackageInDist()
- ],
- onwarn
- },
- {
- input: 'src/index.ts',
- output: {
- format: 'iife',
- name: '__TAURI_IIFE__',
- footer: 'window.__TAURI__ = __TAURI_IIFE__',
- file: '../../core/tauri/scripts/bundle.global.js'
- },
- plugins: [typescript(), terser()],
- onwarn
- }
- ])
- function onwarn(warning: RollupLog) {
- // deny warnings by default
- throw Object.assign(new Error(), warning)
- }
- function makeFlatPackageInDist(): Plugin {
- return {
- name: 'makeFlatPackageInDist',
- writeBundle() {
- // copy necessary files like `CHANGELOG.md` , `README.md` and Licenses to `./dist`
- fg.sync('(LICENSE*|*.md|package.json)').forEach((f) =>
- copyFileSync(f, `dist/${f}`)
- )
- }
- }
- }
- function cleanDir(path: string) {
- let dir: Dir
- try {
- dir = opendirSync(path)
- } catch (err: any) {
- switch (err.code) {
- case 'ENOENT':
- return // Noop when directory don't exists.
- case 'ENOTDIR':
- throw new Error(`'${path}' is not a directory.`)
- default:
- throw err
- }
- }
- let file = dir.readSync()
- while (file) {
- const filePath = join(path, file.name)
- rmSync(filePath, { recursive: true })
- file = dir.readSync()
- }
- dir.closeSync()
- }
|