You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.1 KiB
135 lines
4.1 KiB
import react from '@vitejs/plugin-react-swc'; |
|
import { join, resolve } from 'path'; |
|
import { visualizer } from 'rollup-plugin-visualizer'; |
|
import { defineConfig } from 'vite'; |
|
import { VitePWA } from 'vite-plugin-pwa'; |
|
|
|
// https://vitejs.dev/config/ |
|
const buildOptionsProject = { |
|
rollupOptions: { |
|
input: { |
|
index: resolve(__dirname, 'src/pages/index.html'), |
|
shotScreen: resolve(__dirname, 'src/pages/shotScreen.html'), |
|
recorderScreen: resolve(__dirname, 'src/pages/recorderScreen.html'), |
|
recorderFullScreen: resolve(__dirname, 'src/pages/recorderFullScreen.html'), |
|
recorderVideo: resolve(__dirname, 'src/pages/recorderVideo.html'), |
|
recorderAudio: resolve(__dirname, 'src/pages/recorderAudio.html'), |
|
viewImage: resolve(__dirname, 'src/pages/viewImage.html'), |
|
pinImage: resolve(__dirname, 'src/pages/pinImage.html'), |
|
viewVideo: resolve(__dirname, 'src/pages/viewVideo.html'), |
|
videoConverter: resolve(__dirname, 'src/pages/videoConverter.html'), |
|
setting: resolve(__dirname, 'src/pages/setting.html'), |
|
clipScreen: resolve(__dirname, 'src/pages/clipScreen.html'), |
|
editImage: resolve(__dirname, 'src/pages/editImage.html'), |
|
viewAudio: resolve(__dirname, 'src/pages/viewAudio.html'), |
|
records: resolve(__dirname, 'src/pages/records.html'), |
|
editGif: resolve(__dirname, 'src/pages/editGif.html'), |
|
spliceImage: resolve(__dirname, 'src/pages/spliceImage.html'), |
|
canvas: resolve(__dirname, 'src/pages/canvas.html'), |
|
}, |
|
}, |
|
outDir: resolve(__dirname, 'dist'), |
|
}; |
|
const buildOptionsLib: any = { |
|
minify: false, |
|
rollupOptions: { |
|
external: ['react', 'react-dom'], |
|
output: [ |
|
{ |
|
format: 'es', |
|
entryFileNames: '[name].mjs', |
|
preserveModules: true, |
|
exports: 'named', |
|
dir: resolve(__dirname, `es`), |
|
preserveModulesRoot: 'src', |
|
}, |
|
// { |
|
// format: "cjs", |
|
// entryFileNames: "[name].js", |
|
// //让打包目录和我们目录对应 |
|
// preserveModules: true, |
|
// exports: "named", |
|
// //配置打包根目录 |
|
// dir: resolve(__dirname, `lib`), |
|
// preserveModulesRoot: "src", |
|
// }, |
|
], |
|
}, |
|
lib: { |
|
entry: resolve(__dirname, 'src/index.ts'), |
|
// formats: ["es", "cjs"], |
|
}, |
|
}; |
|
|
|
export default ({ mode }) => { |
|
return defineConfig({ |
|
root: resolve(__dirname, 'src/pages'), |
|
base: './', |
|
publicDir: resolve(__dirname, 'public'), |
|
resolve: { |
|
alias: { |
|
'@': join(__dirname, 'src'), |
|
}, |
|
}, |
|
server: { |
|
// open: true, |
|
port: 9191, |
|
host: '0.0.0.0', |
|
// headers: { |
|
// 'Cross-Origin-Opener-Policy': 'same-origin', |
|
// 'Cross-Origin-Embedder-Policy': 'require-corp', |
|
// }, |
|
}, |
|
plugins: [ |
|
react(), |
|
visualizer() as any, |
|
VitePWA({ |
|
injectRegister: 'auto', |
|
registerType: 'autoUpdate', |
|
devOptions: { |
|
enabled: true, |
|
}, |
|
manifest: { |
|
name: 'pear-rec', |
|
short_name: 'pear-rec', |
|
description: |
|
'pear-rec is a software with screenshot, screen recording, audio recording and video recording.', |
|
theme_color: '#fff', |
|
start_url: './home.html', |
|
display: 'standalone', |
|
background_color: '#fff', |
|
icons: [ |
|
{ |
|
src: '/imgs/icons/png/512x512.png', |
|
sizes: '512x512', |
|
type: 'image/png', |
|
purpose: 'any', |
|
}, |
|
{ |
|
src: '/imgs/icons/png/512x512.png', |
|
sizes: '512x512', |
|
type: 'image/png', |
|
purpose: 'any', |
|
}, |
|
], |
|
screenshots: [ |
|
{ |
|
src: '/imgs/screenshot1.jpg', |
|
type: 'image/jpg', |
|
sizes: '944x656', |
|
form_factor: 'narrow', |
|
}, |
|
], |
|
}, |
|
workbox: { |
|
ignoreURLParametersMatching: [/.*/], |
|
}, |
|
}), |
|
], |
|
optimizeDeps: { |
|
exclude: ['@ffmpeg/ffmpeg', '@ffmpeg/util'], |
|
}, |
|
// build: mode == "lib" ? buildOptionsLib : buildOptionsProject, |
|
build: buildOptionsProject, |
|
}); |
|
};
|
|
|