taye/interact.js

View on GitHub
vite.config.ts

Summary

Maintainability
A
0 mins
Test Coverage
import path from 'path'

import vue from '@vitejs/plugin-vue'
import serveIndex from 'serve-index'
import type { Plugin } from 'vite'
import { defineConfig } from 'vite'

const examplesDir = path.resolve(__dirname, 'examples')

export default defineConfig({
  root: examplesDir,
  resolve: {
    alias: {
      '@interactjs/': path.resolve(__dirname, 'packages/@interactjs'),
      interactjs: path.resolve(__dirname, 'packages/interactjs'),
    },
  },
  define: {
    ...getDefinedEnv(),
  },
  plugins: [vue(), dirListing()],
  optimizeDeps: {
    include: ['react'],
  },
  server: {
    port: 8081,
  },
})

function getDefinedEnv () {
  const entries = Object.entries(process.env)
    .filter(([key]) => /^(NODE_ENV|npm_package_version|INTERACTJS_.*)$/.test(key))
    .map(([key, value]) => [`process.env.${key}`, JSON.stringify(value)])

  return Object.fromEntries(entries)
}

function dirListing (): Plugin {
  return {
    name: 'dir-listing',
    configureServer (server) {
      server.middlewares.use(serveIndex(examplesDir, { icons: true }) as any)
    },
  }
}