actuallyCompile() — vue Function Reference
Architecture documentation for the actuallyCompile() function in compileTemplate.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD b313ae70_92bd_5f56_d45c_cb9fbd6806c9["actuallyCompile()"] 52a95ded_49d4_83b0_3ea8_32248f954e2b["compileTemplate()"] 52a95ded_49d4_83b0_3ea8_32248f954e2b -->|calls| b313ae70_92bd_5f56_d45c_cb9fbd6806c9 da297c1b_76f1_4af5_5266_fee8757f87ed["prefixIdentifiers()"] b313ae70_92bd_5f56_d45c_cb9fbd6806c9 -->|calls| da297c1b_76f1_4af5_5266_fee8757f87ed style b313ae70_92bd_5f56_d45c_cb9fbd6806c9 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/compiler-sfc/src/compileTemplate.ts lines 97–205
function actuallyCompile(
options: SFCTemplateCompileOptions
): SFCTemplateCompileResults {
const {
source,
compiler = _compiler,
compilerOptions = {},
transpileOptions = {},
transformAssetUrls,
transformAssetUrlsOptions,
isProduction = process.env.NODE_ENV === 'production',
isFunctional = false,
optimizeSSR = false,
prettify = true,
isTS = false,
bindings
} = options
const compile =
optimizeSSR && compiler.ssrCompile ? compiler.ssrCompile : compiler.compile
let finalCompilerOptions = compilerOptions
if (transformAssetUrls) {
const builtInModules = [
transformAssetUrls === true
? assetUrlsModule(undefined, transformAssetUrlsOptions)
: assetUrlsModule(transformAssetUrls, transformAssetUrlsOptions),
srcsetModule(transformAssetUrlsOptions)
]
finalCompilerOptions = Object.assign({}, compilerOptions, {
modules: [...builtInModules, ...(compilerOptions.modules || [])],
filename: options.filename
})
}
finalCompilerOptions.bindings = bindings
const { ast, render, staticRenderFns, tips, errors } = compile(
source,
finalCompilerOptions
)
if (errors && errors.length) {
return {
ast,
code: `var render = function () {}\n` + `var staticRenderFns = []\n`,
source,
tips,
errors
}
} else {
// stripping `with` usage
let code =
`var __render__ = ${prefixIdentifiers(
`function render(${isFunctional ? `_c,_vm` : ``}){${render}\n}`,
isFunctional,
isTS,
transpileOptions,
bindings
)}\n` +
`var __staticRenderFns__ = [${staticRenderFns.map(code =>
prefixIdentifiers(
`function (${isFunctional ? `_c,_vm` : ``}){${code}\n}`,
isFunctional,
isTS,
transpileOptions,
bindings
)
)}]` +
`\n`
// #23 we use __render__ to avoid `render` not being prefixed by the
// transpiler when stripping with, but revert it back to `render` to
// maintain backwards compat
code = code.replace(/\s__(render|staticRenderFns)__\s/g, ' $1 ')
if (!isProduction) {
// mark with stripped (this enables Vue to use correct runtime proxy
// detection)
code += `render._withStripped = true`
if (prettify) {
try {
code = require('prettier').format(code, {
semi: false,
parser: 'babel'
})
} catch (e: any) {
if (e.code === 'MODULE_NOT_FOUND') {
tips.push(
'The `prettify` option is on, but the dependency `prettier` is not found.\n' +
'Please either turn off `prettify` or manually install `prettier`.'
)
}
tips.push(
`Failed to prettify component ${options.filename} template source after compilation.`
)
}
}
}
return {
ast,
code,
source,
tips,
errors
}
}
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does actuallyCompile() do?
actuallyCompile() is a function in the vue codebase.
What does actuallyCompile() call?
actuallyCompile() calls 1 function(s): prefixIdentifiers.
What calls actuallyCompile()?
actuallyCompile() is called by 1 function(s): compileTemplate.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free