This commit is contained in:
@@ -1,16 +1,33 @@
|
||||
import { fileURLToPath, URL } from 'node:url'
|
||||
|
||||
import { defineConfig } from 'vite'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vueDevTools from 'vite-plugin-vue-devtools'
|
||||
import Components from 'unplugin-vue-components/vite'
|
||||
import { PrimeVueResolver } from '@primevue/auto-import-resolver'
|
||||
import Info from 'unplugin-info/vite'
|
||||
import AutoImport from 'unplugin-auto-import/vite'
|
||||
import { unheadComposablesImports } from 'unhead'
|
||||
import mockData, { type RouteConfig } from 'vite-plugin-mock-data'
|
||||
import manifestJSON from 'rollup-plugin-manifest-json'
|
||||
import { type ManifestOptions } from 'rollup-plugin-manifest-json/lib/types'
|
||||
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig(({ mode }) => {
|
||||
console.log('Building in mode', mode)
|
||||
|
||||
process.env = { ...loadEnv(mode, process.cwd()), ...process.env }
|
||||
|
||||
const manifest: ManifestOptions & { id?: string } = Object.fromEntries(
|
||||
Object.entries({
|
||||
name: process.env.VITE_MANIFEST_NAME,
|
||||
short_name: process.env.VITE_MANIFEST_SHORT_NAME,
|
||||
id: process.env.VITE_MANIFEST_ID,
|
||||
start_url: process.env.VITE_MANIFEST_START_URL,
|
||||
scope: process.env.VITE_MANIFEST_SCOPE,
|
||||
}).filter((entry) => entry[1] !== undefined),
|
||||
)
|
||||
|
||||
return {
|
||||
build: {
|
||||
sourcemap: mode === 'development',
|
||||
@@ -92,13 +109,40 @@ export default defineConfig(({ mode }) => {
|
||||
},
|
||||
plugins: [
|
||||
vue(),
|
||||
|
||||
Info(),
|
||||
|
||||
AutoImport({
|
||||
imports: ['vue', 'vue-router', unheadComposablesImports[0]],
|
||||
}),
|
||||
|
||||
Components({
|
||||
resolvers: [PrimeVueResolver()],
|
||||
}),
|
||||
|
||||
vueDevTools(),
|
||||
|
||||
mockData({
|
||||
mockRoutes: {
|
||||
'/manifest.json': {
|
||||
async handler(req, res) {
|
||||
const { default: manifestJSON } = await import('./src/manifest.json')
|
||||
res.statusCode = 200
|
||||
res.setHeader('Content-Type', 'text/html')
|
||||
res.end(JSON.stringify({ ...manifestJSON, ...manifest }, null, 2))
|
||||
},
|
||||
} satisfies RouteConfig,
|
||||
},
|
||||
}),
|
||||
{
|
||||
...manifestJSON({
|
||||
input: 'src/manifest.json', // Required
|
||||
output: './manifest.json',
|
||||
minify: mode === 'production',
|
||||
manifest,
|
||||
}),
|
||||
apply: 'build',
|
||||
},
|
||||
],
|
||||
define: {
|
||||
global: 'window', // it is needed for PouchDB
|
||||
|
||||
Reference in New Issue
Block a user