You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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/),然后:

  1. 在项目根目录的.gitignore中添加一行:src/routes/_test/,确保该目录不会被推送到GitHub
  2. 写一个简单的本地备份脚本(比如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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:41:09