如何让SvelteKit路由仅在开发模式下可用?
仅开发模式可用的SvelteKit测试路由方案
下面是几个比用.env配置更可靠的方案,既能避免测试路由被推送到GitHub,又不会担心本地备份丢失:
方案1:条件式路由导出(最简单直接)
在测试路由文件里直接根据环境变量判断是否提供路由。比如创建src/routes/test/+page.svelte:
<script> // 生产环境下直接抛出错误,阻止路由访问 if (!import.meta.env.DEV) { throw new Error('测试路由仅在开发模式下可用'); } // 你的测试组件假输入数据 const testMockData = { username: '测试用户', content: '模拟输入内容' }; </script> {#if import.meta.env.DEV} <!-- 挂载你的测试组件并传入假数据 --> <YourTestComponent {...testMockData} /> {/if}
如果需要服务端逻辑,在+page.server.js里做同样的拦截:
export function load() { if (!import.meta.env.DEV) { return { status: 404, error: new Error('测试路由未开放') }; } // 服务端侧的测试数据或逻辑 return { serverTestData: {} }; }
优点:无需额外配置,测试路由和业务路由共存但生产环境不可访问;缺点:多测试路由时需逐个添加判断。
方案2:独立测试目录+Git忽略+本地自动备份
创建专门的测试路由目录(比如src/routes/_test/),然后:
- 在项目根目录的
.gitignore中添加一行:src/routes/_test/,确保该目录不会被推送到GitHub - 写一个简单的本地备份脚本(比如
backup-test-routes.sh),定期把测试目录备份到本地其他安全位置(比如云盘同步文件夹):
#!/bin/bash # 自定义备份目标路径 BACKUP_TARGET="/Users/xxx/云盘备份/SvelteKit测试路由" mkdir -p "$BACKUP_TARGET" # 按时间戳创建备份文件夹,避免覆盖 cp -r src/routes/_test/ "$BACKUP_TARGET/备份_$(date +%Y%m%d_%H%M%S)" echo "测试路由备份完成"
可以把这个脚本设置成定时任务(Mac用LaunchAgent、Windows用任务计划程序),自动定期执行备份。
优点:测试路由集中管理,备份可控;缺点:需要额外配置Git忽略和备份脚本。
方案3:路由分组+全局环境拦截
用SvelteKit的路由分组功能,把所有测试路由放在src/routes/(test)/分组里,然后在该分组的+layout.server.js中添加全局拦截:
export function load() { if (!import.meta.env.DEV) { // 生产环境下直接重定向到首页 return { status: 302, redirect: '/' }; } }
如果不想把测试路由推送到仓库,同样在.gitignore里添加src/routes/(test)/即可。
优点:一次配置,所有测试路由都受环境控制;缺点:若需推送部分测试路由到仓库,灵活性不足。
总结
- 仅1-2个测试路由:选方案1最省事
- 多个测试路由:方案3的全局拦截更高效
- 担心本地文件丢失:方案2的备份脚本可搭配任意方案使用,确保测试路由不会丢失
内容的提问来源于stack exchange,提问作者Castler Steve
相关产品推荐
相关产品推荐

