workerImportMetaUrlPlugin() — vite Function Reference
Architecture documentation for the workerImportMetaUrlPlugin() function in workerImportMetaUrl.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD cc381763_acbd_6aeb_4970_907e43d5b95f["workerImportMetaUrlPlugin()"] f241296c_aba8_08ac_c4f9_aed85a9eb247["workerImportMetaUrl.ts"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|defined in| f241296c_aba8_08ac_c4f9_aed85a9eb247 7f71f89c_a2bd_87a9_0341_0f09d35da72f["createWorkerImportMetaUrlPluginTransform()"] 7f71f89c_a2bd_87a9_0341_0f09d35da72f -->|calls| cc381763_acbd_6aeb_4970_907e43d5b95f b1b40b5b_3e43_2197_dea0_d36389d312a1["resolvePlugins()"] b1b40b5b_3e43_2197_dea0_d36389d312a1 -->|calls| cc381763_acbd_6aeb_4970_907e43d5b95f fcb9c288_b3dc_c5f2_7476_d243d97d0e75["getWorkerType()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| fcb9c288_b3dc_c5f2_7476_d243d97d0e75 f094d39d_cd97_2548_86c3_38902c2f3301["slash()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| f094d39d_cd97_2548_86c3_38902c2f3301 2c262e8e_4e5d_80f3_98ab_102647c58f78["tryFsResolve()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 2c262e8e_4e5d_80f3_98ab_102647c58f78 7ee86c21_2650_c869_2f5d_720909757e00["createBackCompatIdResolver()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 7ee86c21_2650_c869_2f5d_720909757e00 10b9dea8_362c_1af2_93be_afa4dd9aed9e["cleanUrl()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 10b9dea8_362c_1af2_93be_afa4dd9aed9e 2263fc73_3545_6a6d_f020_363141e760f3["workerFileToUrl()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 2263fc73_3545_6a6d_f020_363141e760f3 b8f7857f_eb38_9730_a8eb_658b77a590c9["toOutputFilePathInJSForBundledDev()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| b8f7857f_eb38_9730_a8eb_658b77a590c9 13b5d2b4_0a9d_90ef_9bfa_129b74a9d64e["fileToUrl()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 13b5d2b4_0a9d_90ef_9bfa_129b74a9d64e 1948f092_e5a5_076b_2f59_79ef22dec191["injectQuery()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 1948f092_e5a5_076b_2f59_79ef22dec191 6841c80c_8127_d8ce_ac5d_bb48de9eee42["transformStableResult()"] cc381763_acbd_6aeb_4970_907e43d5b95f -->|calls| 6841c80c_8127_d8ce_ac5d_bb48de9eee42 style cc381763_acbd_6aeb_4970_907e43d5b95f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/plugins/workerImportMetaUrl.ts lines 186–297
export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
const isBundled = config.isBundled
let workerResolver: ResolveIdFn
const fsResolveOptions: InternalResolveOptions = {
...config.resolve,
root: config.root,
isProduction: config.isProduction,
isBuild: config.command === 'build',
packageCache: config.packageCache,
asSrc: true,
}
return {
name: 'vite:worker-import-meta-url',
applyToEnvironment(environment) {
return environment.config.consumer === 'client'
},
transform: {
filter: { code: workerImportMetaUrlRE },
async handler(code, id) {
let s: MagicString | undefined
const cleanString = stripLiteral(code)
const workerImportMetaUrlRE =
/\bnew\s+(?:Worker|SharedWorker)\s*\(\s*(new\s+URL\s*\(\s*('[^']+'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*(?:,\s*)?\))/dg
let match: RegExpExecArray | null
while ((match = workerImportMetaUrlRE.exec(cleanString))) {
const [[, endIndex], [expStart, expEnd], [urlStart, urlEnd]] =
match.indices!
const rawUrl = code.slice(urlStart, urlEnd)
// potential dynamic template string
if (rawUrl[0] === '`' && rawUrl.includes('${')) {
this.error(
`\`new URL(url, import.meta.url)\` is not supported in dynamic template string.`,
expStart,
)
}
s ||= new MagicString(code)
const workerType = await getWorkerType(code, cleanString, endIndex)
const url = rawUrl.slice(1, -1)
let file: string | undefined
if (url[0] === '.') {
file = path.resolve(path.dirname(id), url)
file = slash(tryFsResolve(file, fsResolveOptions) ?? file)
} else {
workerResolver ??= createBackCompatIdResolver(config, {
extensions: [],
tryIndex: false,
preferRelative: true,
})
file = await workerResolver(this.environment, url, id)
file ??=
url[0] === '/'
? slash(path.join(config.publicDir, url))
: slash(path.resolve(path.dirname(id), url))
}
if (
isBundled &&
config.isWorker &&
config.bundleChain.at(-1) === cleanUrl(file)
) {
s.update(expStart, expEnd, 'self.location.href')
} else {
let builtUrl: string
if (isBundled) {
const result = await workerFileToUrl(config, file)
if (
this.environment.config.command === 'serve' &&
this.environment.config.experimental.bundledDev
) {
builtUrl = toOutputFilePathInJSForBundledDev(
this.environment,
result.entryFilename,
)
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does workerImportMetaUrlPlugin() do?
workerImportMetaUrlPlugin() is a function in the vite codebase, defined in packages/vite/src/node/plugins/workerImportMetaUrl.ts.
Where is workerImportMetaUrlPlugin() defined?
workerImportMetaUrlPlugin() is defined in packages/vite/src/node/plugins/workerImportMetaUrl.ts at line 186.
What does workerImportMetaUrlPlugin() call?
workerImportMetaUrlPlugin() calls 10 function(s): cleanUrl, createBackCompatIdResolver, fileToUrl, getWorkerType, injectQuery, slash, toOutputFilePathInJSForBundledDev, transformStableResult, and 2 more.
What calls workerImportMetaUrlPlugin()?
workerImportMetaUrlPlugin() is called by 2 function(s): createWorkerImportMetaUrlPluginTransform, resolvePlugins.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free