const hasCssVars = styles.some(s => typeof s.attrs.vars === 'string')
- const isTS =
- (script && script.lang === 'ts') ||
- (scriptSetup && scriptSetup.lang === 'ts')
-
+ const scriptLang = script && script.lang
+ const scriptSetupLang = scriptSetup && scriptSetup.lang
+ const isTS = scriptLang === 'ts' || scriptSetupLang === 'ts'
const plugins: ParserPlugin[] = [
...(options.babelParserPlugins || []),
...babelParserDefautPlugins,
if (!script) {
throw new Error(`SFC contains no <script> tags.`)
}
+ if (scriptLang && scriptLang !== 'ts') {
+ // do not process non js/ts script blocks
+ return script
+ }
return {
...script,
content: hasCssVars ? injectCssVarsCalls(sfc, plugins) : script.content,
}
}
- if (script && script.lang !== scriptSetup.lang) {
+ if (script && scriptLang !== scriptSetupLang) {
throw new Error(
`<script> and <script setup> must have the same language type.`
)
}
+ if (scriptSetupLang && scriptSetupLang !== 'ts') {
+ // do not process non js/ts script blocks
+ return scriptSetup
+ }
+
const defaultTempVar = `__default__`
const bindings: BindingMetadata = {}
const imports: Record<string, string> = {}
const block = createBlock(node, source, pad) as SFCScriptBlock
const isSetup = !!block.attrs.setup
if (isSetup && !descriptor.scriptSetup) {
- if (block.src) {
- errors.push(
- new SyntaxError(
- `<script setup> cannot be used with the "src" attribute since ` +
- `its syntax will be ambiguous outside of the component.`
- )
- )
- break
- }
descriptor.scriptSetup = block
break
}
}
})
+ if (descriptor.scriptSetup) {
+ if (descriptor.scriptSetup.src) {
+ errors.push(
+ new SyntaxError(
+ `<script setup> cannot use the "src" attribute because ` +
+ `its syntax will be ambiguous outside of the component.`
+ )
+ )
+ delete descriptor.scriptSetup
+ }
+ if (descriptor.script && descriptor.script.src) {
+ errors.push(
+ new SyntaxError(
+ `<script> cannot use the "src" attribute when <script setup> is ` +
+ `also present because they must be processed together.`
+ )
+ )
+ delete descriptor.script
+ }
+ }
+
if (sourceMap) {
const genMap = (block: SFCBlock | null) => {
if (block && !block.src) {