JavaScript API

Vite 的 JavaScript API 是完全类型化的,我们推荐使用 TypeScript 或者在 VSCode 中启用 JS 类型检查来利用智能提示和类型校验。

createServer

类型签名:

  1. async function createServer(inlineConfig?: InlineConfig): Promise<ViteDevServer>

使用示例:

  1. const { createServer } = require('vite')
  2. ;(async () => {
  3. const server = await createServer({
  4. // 任何合法的用户配置选项,加上 `mode` 和 `configFile`
  5. configFile: false,
  6. root: __dirname,
  7. server: {
  8. port: 1337
  9. }
  10. })
  11. await server.listen()
  12. })()

InlineConfig

InlineConfig 接口扩展了 UserConfig 并添加了以下属性:

  • configFile:指明要使用的配置文件。如果没有设置,Vite 将尝试从项目根目录自动解析。设置为 false 可以禁用自动解析功能。
  • envFile:设置为 false 时,则禁用 .env 文件。

ViteDevServer

  1. interface ViteDevServer {
  2. /**
  3. * 被解析的 vite 配置对象
  4. */
  5. config: ResolvedConfig
  6. /**
  7. * 一个 connect 应用实例
  8. * - 可以用于将自定义中间件附加到开发服务器。
  9. * - 还可以用作自定义http服务器的处理函数。
  10. 或作为中间件用于任何 connect 风格的 Node.js 框架。
  11. *
  12. * https://github.com/senchalabs/connect#use-middleware
  13. */
  14. middlewares: Connect.Server
  15. /**
  16. * 本机 node http 服务器实例
  17. */
  18. httpServer: http.Server | null
  19. /**
  20. * chokidar 监听器实例
  21. * https://github.com/paulmillr/chokidar#api
  22. */
  23. watcher: FSWatcher
  24. /**
  25. * web socket 服务器,带有 `send(payload)` 方法。
  26. */
  27. ws: WebSocketServer
  28. /**
  29. * Rollup 插件容器,可以针对给定文件运行插件钩子。
  30. */
  31. pluginContainer: PluginContainer
  32. /**
  33. * 跟踪导入关系、url 到文件映射和 hmr 状态的模块图。
  34. */
  35. moduleGraph: ModuleGraph
  36. /**
  37. * 以代码方式解析、加载和转换 url 并获取结果
  38. * 而不需要通过 http 请求管道。
  39. */
  40. transformRequest(
  41. url: string,
  42. options?: TransformOptions
  43. ): Promise<TransformResult | null>
  44. /**
  45. * 应用 vite 内建 HTML 转换和任意插件 HTML 转换
  46. */
  47. transformIndexHtml(url: string, html: string): Promise<string>
  48. /**
  49. * 使用 esbuild 转换一个文件的工具函数
  50. * 对某些特定插件十分有用
  51. */
  52. transformWithEsbuild(
  53. code: string,
  54. filename: string,
  55. options?: EsbuildTransformOptions,
  56. inMap?: object
  57. ): Promise<ESBuildTransformResult>
  58. /**
  59. * 加载一个给定的 URL 作为 SSR 的实例化模块
  60. */
  61. ssrLoadModule(
  62. url: string,
  63. options?: { isolated?: boolean }
  64. ): Promise<Record<string, any>>
  65. /**
  66. * 解决 ssr 错误堆栈信息
  67. */
  68. ssrFixStacktrace(e: Error): void
  69. /**
  70. * 启动服务器
  71. */
  72. listen(port?: number, isRestart?: boolean): Promise<ViteDevServer>
  73. /**
  74. * 停止服务器
  75. */
  76. close(): Promise<void>
  77. }

build

类型校验:

  1. async function build(
  2. inlineConfig?: InlineConfig
  3. ): Promise<RollupOutput | RollupOutput[]>

使用示例:

  1. const path = require('path')
  2. const { build } = require('vite')
  3. ;(async () => {
  4. await build({
  5. root: path.resolve(__dirname, './project'),
  6. build: {
  7. base: '/foo/',
  8. rollupOptions: {
  9. // ...
  10. }
  11. }
  12. })
  13. })()

resolveConfig

类型校验:

  1. async function resolveConfig(
  2. inlineConfig: InlineConfig,
  3. command: 'build' | 'serve',
  4. defaultMode?: string
  5. ): Promise<ResolvedConfig>