如何从 svelte-kit 构建中排除文件?

Dev*_*avo 6 vite sveltekit

如果我npm run build使用 SvelteKit 运行,它似乎包含该src文件夹中的所有文件。是否可以排除某种文件类型(例如*test.js)?

例子

  1. 选择演示应用程序 npm init svelte@next my-app

  2. 添加以下代码到src/routes/todos/foo.test.js

    describe('foo', () => {
      it('temp', () => {
        expect(true).toBe(false)
      })
    })
    
    Run Code Online (Sandbox Code Playgroud)
  3. npm run build

  4. npm run preview

结果:describe is not defined

解决方法

将测试移至外部src

ton*_*y19 7

更新: SvelteKit 1.0.0-beta 现在要求页面/端点遵循特定的命名模式,因此不再需要显式文件排除。

\n

SvelteKit 专门处理routes/目录中具有以下文件名的文件(注意前导+每个文件名中的前导):

\n\n

所有其他文件都将被忽略,并且可以位于routes/目录中。

\n

如果出于某种原因,您需要一个具有上面所示的特殊名称的文件,则当前无法将该文件排除在特殊处理之外。

\n
\n

原来的过时答案:

\n

SvelteKit 1.0.0-beta 支持从目录中排除文件的routes配置src/routes。配置值是一个函数,它接收文件路径作为参数,并返回true以使用该文件作为路由。

\n

例如,以下routes配置排除*.test.js文件:

\n
// sveltekit.config.js\n\xe2\x8b\xae\nconst config = {\n  kit: {\n    \xe2\x8b\xae\n    routes: filepath => {\n      return ![\n        // exclude *test.js files\n        /\\.test\\.js$/,\n\n        // original default config\n        /(?:(?:^_|\\/_)|(?:^\\.|\\/\\.)(?!well-known))/,\n      ].some(regex => regex.test(filepath))\n    },\n  },\n}\n
Run Code Online (Sandbox Code Playgroud)\n

演示

\n