从服务器进程内重新加载/重启Vite服务器



我需要添加一些自定义业务逻辑到我的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来触发重新启动。

相关内容

  • 没有找到相关文章

最新更新