Vitest 并行执行测试文件时靠什么隔离模块状态,什么全局副作用仍会泄漏?
Vitest 并行执行测试文件时靠什么隔离模块状态,什么全局副作用仍会泄漏? 本文先给出可直接复述的结论,再用最小代码说明Vitest 并行 隔离 worker 模块的工作方式、判断依据、项目边界和常见误区。
构建工具专题面试题第 3 页,显示第 101–150 题,共找到 211 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
Vitest 并行执行测试文件时靠什么隔离模块状态,什么全局副作用仍会泄漏? 本文先给出可直接复述的结论,再用最小代码说明Vitest 并行 隔离 worker 模块的工作方式、判断依据、项目边界和常见误区。
如何用 vi.importActual 只替换模块的一个导出而保留其余真实实现,这种做法的风险是什么? 本文先给出可直接复述的结论,再用最小代码说明Vitest vi.importActual 部分 mock的工作方式、判断依据、项目边界和常见误区。
vi.spyOn 监视对象方法后为什么必须在测试间恢复,不恢复会引发什么跨用例污染? 本文先给出可直接复述的结论,再用最小代码说明Vitest spyOn restoreMocks的工作方式、判断依据、项目边界和常见误区。
Vitest 的 toBe、toEqual、toStrictEqual 在比较对象和类实例时行为差异是什么? 本文先给出可直接复述的结论,再用最小代码说明Vitest toBe toEqual toStrictEqual 区别的工作方式、判断依据、项目边界和常见误区。
Vitest 中 vi.fn() 配合 mockReturnValue 与 mockImplementation 该如何选择,链式 mockResolvedValueOnce 解决什么问题? 本文先给出可直接复述的结论,再用最小代码说明Vitest vi.fn mockReturnValue mockImplementation的工作方式、判断依据、项目边界和常见误区。
Vitest 的 vi.mock() 为什么会被提升到文件顶部,这一提升对工厂函数里引用外部变量有什么限制? 本文先给出可直接复述的结论,再用最小代码说明Vitest vi.mock 提升 hoisting的工作方式、判断依据、项目边界和常见误区。
tsc --build 与普通 tsc 在增量构建行为上有什么本质差异 本文先给出可直接复述的结论,再用最小代码说明TypeScript tsc --build 增量构建的工作方式、判断依据、项目边界和常见误区。
TypeScript 项目引用出现循环依赖时会怎样、应如何拆分 本文先给出可直接复述的结论,再用最小代码说明TypeScript 项目引用 循环依赖的工作方式、判断依据、项目边界和常见误区。
区分已有声明文件作为输入、实现文件生成声明和打包复制步骤,解释 declaration、emitDeclarationOnly、noEmit 与发布产物缺失的排查方法。
noEmit 纯类型检查模式下,构建链路与 tsc 输出职责应如何划分 本文先给出可直接复述的结论,再用最小代码说明TypeScript noEmit 类型检查职责的工作方式、判断依据、项目边界和常见误区。
tsconfig 里 paths 映射不生效时,与 baseUrl 及打包器的关系是什么 本文先给出可直接复述的结论,再用最小代码说明TypeScript paths baseUrl 别名不生效的工作方式、判断依据、项目边界和常见误区。
TypeScript 项目引用(Project References)解决 monorepo 中的什么核心问题 本文先给出可直接复述的结论,再用最小代码说明TypeScript project references 作用的工作方式、判断依据、项目边界和常见误区。
配置项目引用后,为什么源码里的跨包 import 应指向包名而非相对路径到输出目录 本文先给出可直接复述的结论,再用最小代码说明TypeScript 项目引用 import 重定向的工作方式、判断依据、项目边界和常见误区。
区分图片 URL、组件和 CSS Modules 映射的导出形状,解释通配声明、资源存在性、加载器配置与更精确的逐文件声明。
如何用 expect-type 或 vitest 的 expectTypeOf 为类型层面写单元测试 本文先给出可直接复述的结论,再用最小代码说明TypeScript 类型测试 expectTypeOf的工作方式、判断依据、项目边界和常见误区。
TypeScript 中如何安全地处理 JSON.parse 的结果(通常为 any)以转换为 unknown 并收窄? 本文先给出可直接复述的结论,再用最小代码说明TypeScript JSON.parse 结果转 unknown 安全收窄的工作方式、判断依据、项目边界和常见误区。
如何用泛型构建一个函数,返回对象的指定键的值,同时保留类型关系? 本文先给出可直接复述的结论,再用最小代码说明TypeScript 泛型 keyof 取对象指定键的工作方式、判断依据、项目边界和常见误区。
Vite 的 assetsInlineLimit 如何决定静态资源是内联为 base64 还是输出为文件? 本文先给出可直接复述的结论,再用最小代码说明Vite assetsInlineLimit 静态资源内联的工作方式、判断依据、项目边界和常见误区。
Vite 的 base 配置影响哪些路径,部署到子路径或用相对 base './' 各自有什么注意点? 本文先给出可直接复述的结论,再用最小代码说明Vite base 配置 子路径部署 相对路径的工作方式、判断依据、项目边界和常见误区。
Vite 构建时 sourcemap 有哪几种配置值,hidden 模式适用于什么发布流程? 本文先给出可直接复述的结论,再用最小代码说明Vite build sourcemap hidden 配置的工作方式、判断依据、项目边界和常见误区。
Vite 的 build.target 决定什么,为什么不直接用 browserslist? 本文先给出可直接复述的结论,再用最小代码说明Vite build.target esbuild 目标浏览器的工作方式、判断依据、项目边界和常见误区。
Vite 生产构建的 chunk 是如何拆分的,什么时候需要用 manualChunks 手动控制? 本文先给出可直接复述的结论,再用最小代码说明Vite chunk 拆分 manualChunks的工作方式、判断依据、项目边界和常见误区。
Vite 应用构建时 CSS 代码分割如何避免异步 chunk 加载时的样式闪烁(FOUC)? 本文先给出可直接复述的结论,再用最小代码说明Vite CSS 代码分割 FOUC 异步 chunk的工作方式、判断依据、项目边界和常见误区。
Vite 在开发中发现未预构建的新依赖时为什么会整页刷新? 本文先给出可直接复述的结论,再用最小代码说明Vite 新依赖预构建 整页刷新的工作方式、判断依据、项目边界和常见误区。
Vite 中动态 import() 如何实现路由级代码分割,魔法注释式的 chunk 命名是否可用? 本文先给出可直接复述的结论,再用最小代码说明Vite 动态 import 代码分割 chunk 命名的工作方式、判断依据、项目边界和常见误区。
Vite 的 .env、.env.local、.env.[mode] 等文件加载优先级是怎样的? 本文先给出可直接复述的结论,再用最小代码说明Vite env 文件加载优先级 mode的工作方式、判断依据、项目边界和常见误区。
如何为 Vite 的自定义环境变量获得 TypeScript 类型提示? 本文先给出可直接复述的结论,再用最小代码说明Vite 环境变量 TypeScript 类型 ImportMetaEnv的工作方式、判断依据、项目边界和常见误区。
Vite 为什么默认只暴露 VITE_ 前缀的环境变量到客户端代码? 本文先给出可直接复述的结论,再用最小代码说明Vite 环境变量 VITE_ 前缀 安全的工作方式、判断依据、项目边界和常见误区。
Vite 为什么在开发期用 esbuild 而生产构建用 Rollup? 本文先给出可直接复述的结论,再用最小代码说明Vite esbuild Rollup 分工的工作方式、判断依据、项目边界和常见误区。
Vite 的 import.meta.glob 与普通动态 import 相比解决了什么问题,eager 选项改变什么? 本文先给出可直接复述的结论,再用最小代码说明Vite import.meta.glob eager 批量导入的工作方式、判断依据、项目边界和常见误区。
Vite HMR 中 import.meta.hot.accept 的边界如何决定更新冒泡范围? 本文先给出可直接复述的结论,再用最小代码说明Vite HMR accept 边界 更新冒泡的工作方式、判断依据、项目边界和常见误区。
如何在 Vite 中用 hot.on / hot.send 实现自定义的 HMR 事件通信? 本文先给出可直接复述的结论,再用最小代码说明Vite HMR 自定义事件 hot.on send的工作方式、判断依据、项目边界和常见误区。
哪些改动会让 Vite HMR 退化为整页刷新(full reload)? 本文先给出可直接复述的结论,再用最小代码说明Vite HMR 整页刷新 full reload 条件的工作方式、判断依据、项目边界和常见误区。
Vite HMR API 中 hot.invalidate 与 hot.prune 各自用于什么场景? 本文先给出可直接复述的结论,再用最小代码说明Vite hot invalidate prune 区别的工作方式、判断依据、项目边界和常见误区。
Vite 中 import.meta.env 的访问是如何在构建期被静态替换的,动态键名为什么取不到值? 本文先给出可直接复述的结论,再用最小代码说明Vite import.meta.env 静态替换 动态访问的工作方式、判断依据、项目边界和常见误区。
Vite 默认构建不处理 API polyfill,需要兼容旧浏览器时应该怎么做? 本文先给出可直接复述的结论,再用最小代码说明Vite 旧浏览器兼容 polyfill plugin-legacy的工作方式、判断依据、项目边界和常见误区。
Vite 库模式构建时 CSS 是如何处理的,cssCodeSplit 对库产物有什么影响? 本文先给出可直接复述的结论,再用最小代码说明Vite 库模式 CSS 提取 cssCodeSplit的工作方式、判断依据、项目边界和常见误区。
用 Vite 构建组件库时为什么要把 react 等依赖 external 掉,如何实现? 本文先给出可直接复述的结论,再用最小代码说明Vite 库模式 external rollupOptions peerDependencies的工作方式、判断依据、项目边界和常见误区。
Vite 库模式下如何配置多入口与输出格式(es/cjs/umd)? 本文先给出可直接复述的结论,再用最小代码说明Vite 库模式 lib entry formats 多入口的工作方式、判断依据、项目边界和常见误区。
配合 Vite 库模式,package.json 的 main/module/exports/types 字段应如何设置? 本文先给出可直接复述的结论,再用最小代码说明Vite 库 package.json exports types 配置的工作方式、判断依据、项目边界和常见误区。
为什么在 vite.config.ts 中不能直接访问 .env 变量,loadEnv 的正确用法是什么? 本文先给出可直接复述的结论,再用最小代码说明Vite vite.config loadEnv 使用的工作方式、判断依据、项目边界和常见误区。
Vite 构建压缩默认用 esbuild,什么时候需要切换到 terser? 本文先给出可直接复述的结论,再用最小代码说明Vite minify esbuild terser 对比的工作方式、判断依据、项目边界和常见误区。
Vite 中 mode 与 NODE_ENV 有什么区别,--mode staging 会影响什么? 本文先给出可直接复述的结论,再用最小代码说明Vite mode NODE_ENV 区别的工作方式、判断依据、项目边界和常见误区。
Vite 构建产物中的 modulepreload 与 modulepreload polyfill 各自起什么作用? 本文先给出可直接复述的结论,再用最小代码说明Vite modulepreload polyfill 预加载的工作方式、判断依据、项目边界和常见误区。
在 monorepo 中,为什么被 link 的本地包在 Vite 里默认不会被预构建,如何修正? 本文先给出可直接复述的结论,再用最小代码说明Vite monorepo linked package 预构建 commonjs的工作方式、判断依据、项目边界和常见误区。
Vite 中 new URL('./img.png', import.meta.url) 这种资源引用方式解决什么问题? 本文先给出可直接复述的结论,再用最小代码说明Vite new URL import.meta.url 静态资源的工作方式、判断依据、项目边界和常见误区。
什么场景下需要配置 Vite 的 optimizeDeps.include 和 exclude? 本文先给出可直接复述的结论,再用最小代码说明Vite optimizeDeps include exclude 场景的工作方式、判断依据、项目边界和常见误区。
如何让一个 Vite 插件只在开发或只在构建时生效? 本文先给出可直接复述的结论,再用最小代码说明Vite 插件 apply serve build 条件生效的工作方式、判断依据、项目边界和常见误区。
Vite 插件中 config 钩子与 configResolved 钩子的职责分别是什么? 本文先给出可直接复述的结论,再用最小代码说明Vite 插件 config configResolved 区别的工作方式、判断依据、项目边界和常见误区。
Vite 插件的 enforce: 'pre'/'post' 以及钩子执行顺序如何影响转换结果? 本文先给出可直接复述的结论,再用最小代码说明Vite 插件 enforce 执行顺序的工作方式、判断依据、项目边界和常见误区。