···119119 if (matchExternalizePattern(id, moduleDirectories, options?.inline)) {
120120 return false
121121 }
122122+ if (options?.inlineFiles && options?.inlineFiles.includes(id)) {
123123+ return false
124124+ }
122125 if (matchExternalizePattern(id, moduleDirectories, options?.external)) {
123126 return id
124127 }
+11
packages/vite-node/src/server.ts
···11import { performance } from 'node:perf_hooks'
22import { existsSync } from 'node:fs'
33import assert from 'node:assert'
44+import { pathToFileURL } from 'node:url'
45import { join, normalize, relative, resolve } from 'pathe'
56import type { TransformResult, ViteDevServer } from 'vite'
67import createDebug from 'debug'
···103104 }
104105 if (options.debug) {
105106 this.debugger = new Debugger(server.config.root, options.debug!)
107107+ }
108108+109109+ if (options.deps.inlineFiles) {
110110+ options.deps.inlineFiles = options.deps.inlineFiles.flatMap((file) => {
111111+ if (file.startsWith('file://')) {
112112+ return file
113113+ }
114114+ const resolvedId = resolve(file)
115115+ return [resolvedId, pathToFileURL(resolvedId).href]
116116+ })
106117 }
107118108119 options.deps.moduleDirectories ??= []
+1
packages/vite-node/src/types.ts
···99export interface DepsHandlingOptions {
1010 external?: (string | RegExp)[]
1111 inline?: (string | RegExp)[] | true
1212+ inlineFiles?: string[]
1213 /**
1314 * A list of directories that are considered to hold Node.js modules
1415 * Have to include "/" at the start and end of the path
+11
test/config/test/inline-setup-file.test.ts
···11+import path from 'node:path'
22+import { expect, test } from 'vitest'
33+import { runVitest } from '../../test-utils'
44+55+test('import a generated file', async () => {
66+ const root = path.resolve(import.meta.dirname, '../fixtures/inline-setup-file')
77+88+ const { stderr, exitCode } = await runVitest({ root })
99+ expect(stderr).toBe('')
1010+ expect(exitCode).toBe(0)
1111+})