我需要添加一些自定义业务逻辑到我的Vite/Svelte应用程序,需要重新启动Vite服务器。我看到有一个键盘快捷键r
,确实做到了这一点,但我不能确定这背后的功能是否可以单独调用。例如,在一周的特定日期重新启动服务器。理想情况下,从我的Vite/Svelte应用程序进程之外以编程方式触发此重启也会很好。
这些都有可能吗?
请注意,重新加载和重新启动是有区别的。在我的情况下,重新加载是不够的,我需要重新启动应用程序完全(这里重新启动时,.grammar
文件发生了变化):
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import {lezer} from "@lezer/generator/rollup"
// Watch .grammar files
function grammarwatch() {
return {
name: 'grammarwatch',
enforce: 'post',
// HMR
handleHotUpdate({ file, server }) {
if (file.endsWith('.grammar')) {
console.log('reloading grammar file...');
// To restart
server.restart()
// To reload
/* server.ws.send({
* type: 'full-reload',
* path: '*'
* }); */
}
},
}
}
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
react(),
lezer(),
grammarwatch()
],
})
Vite服务器仅用于开发。
如何重新启动最终的应用程序取决于您想要部署的位置/用于构建应用程序的适配器。
你可以使用vite-plugin-restart插件。
当对触发器文件有任何更改时,这个示例配置将重新启动服务器:
import { defineConfig } from 'vite'
import ViteRestart from 'vite-plugin-restart'
{
// ...
return defineConfig({
plugins: [react(), ViteRestart({
restart: ['./trigger.txt']
})]
}
您可以在代码中使用await writeFile('./trigger.txt', '')
,或者在终端中使用echo > trigger.txt
来触发重新启动。