Skip to content

Commit

Permalink
fix(plugin-vue): deprecate inline main
Browse files Browse the repository at this point in the history
  • Loading branch information
aweikalee committed Aug 6, 2023
1 parent 1e8d16e commit 481d77c
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 62 deletions.
51 changes: 11 additions & 40 deletions packages/plugin-vue/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,7 @@ import {
getPrevDescriptor,
setSrcDescriptor,
} from './utils/descriptorCache'
import {
canInlineMain,
isUseInlineTemplate,
resolveScript,
scriptIdentifier,
} from './script'
import { isUseInlineTemplate, resolveScript, scriptIdentifier } from './script'
import { transformTemplateInMain } from './template'
import { isEqualBlock, isOnlyTemplateChanged } from './handleHotUpdate'
import { createRollupError } from './utils/error'
Expand Down Expand Up @@ -313,41 +308,17 @@ async function genScriptCode(

const script = resolveScript(descriptor, options, ssr)
if (script) {
// If the script is js/ts and has no external src, it can be directly placed
// in the main module.
if (canInlineMain(descriptor, options)) {
if (!options.compiler.version) {
// if compiler-sfc exposes no version, it's < 3.3 and doesn't support
// genDefaultAs option.
const userPlugins = options.script?.babelParserPlugins || []
const defaultPlugins =
script.lang === 'ts'
? userPlugins.includes('decorators')
? (['typescript'] as const)
: (['typescript', 'decorators-legacy'] as const)
: []
scriptCode = options.compiler.rewriteDefault(
script.content,
scriptIdentifier,
[...defaultPlugins, ...userPlugins],
)
} else {
scriptCode = script.content
}
map = script.map
} else {
if (script.src) {
await linkSrcToDescriptor(script.src, descriptor, pluginContext, false)
}
const src = script.src || descriptor.filename
const langFallback = (script.src && path.extname(src).slice(1)) || 'js'
const attrsQuery = attrsToQuery(script.attrs, langFallback)
const srcQuery = script.src ? `&src=true` : ``
const query = `?vue&type=script${srcQuery}${attrsQuery}`
const request = JSON.stringify(src + query)
scriptCode =
`import _sfc_main from ${request}\n` + `export * from ${request}` // support named exports
if (script.src) {
await linkSrcToDescriptor(script.src, descriptor, pluginContext, false)
}
const src = script.src || descriptor.filename
const langFallback = (script.src && path.extname(src).slice(1)) || 'js'
const attrsQuery = attrsToQuery(script.attrs, langFallback)
const srcQuery = script.src ? `&src=true` : ``
const query = `?vue&type=script${srcQuery}${attrsQuery}`
const request = JSON.stringify(src + query)
scriptCode =
`import _sfc_main from ${request}\n` + `export * from ${request}` // support named exports
}
return {
code: scriptCode,
Expand Down
22 changes: 0 additions & 22 deletions packages/plugin-vue/src/script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@ export function resolveScript(
reactivityTransform: options.reactivityTransform !== false,
templateOptions: resolveTemplateCompilerOptions(descriptor, options, ssr),
sourceMap: options.sourceMap,
genDefaultAs: canInlineMain(descriptor, options)
? scriptIdentifier
: undefined,
})

if (!options.isProduction && resolved?.deps) {
Expand All @@ -94,22 +91,3 @@ export function resolveScript(
cacheToUse.set(descriptor, resolved)
return resolved
}

// If the script is js/ts and has no external src, it can be directly placed
// in the main module. Skip for build
export function canInlineMain(
descriptor: SFCDescriptor,
options: ResolvedOptions,
): boolean {
if (descriptor.script?.src || descriptor.scriptSetup?.src) {
return false
}
const lang = descriptor.script?.lang || descriptor.scriptSetup?.lang
if (!lang) {
return true
}
if (lang === 'ts' && options.devServer) {
return true
}
return false
}

0 comments on commit 481d77c

Please sign in to comment.