liusuyi
2023-04-24 4737f1e038743ced243c9e52423404d9034d6107
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const { resolveCompiler } = require('./compiler')
 
const clientCache = new WeakMap()
const serverCache = new WeakMap()
 
exports.resolveScript = function resolveScript(
  descriptor,
  scopeId,
  options,
  loaderContext
) {
  if (!descriptor.script && !descriptor.scriptSetup) {
    return null
  }
 
  const { compiler } = resolveCompiler(loaderContext.rootContext, loaderContext)
  if (!compiler.compileScript) {
    if (descriptor.scriptSetup) {
      loaderContext.emitError(
        'The version of Vue you are using does not support <script setup>. ' +
          'Please upgrade to 2.7 or above.'
      )
    }
    return descriptor.script
  }
 
  const isProd =
    loaderContext.mode === 'production' || process.env.NODE_ENV === 'production'
  const isServer = options.optimizeSSR || loaderContext.target === 'node'
 
  const cacheToUse = isServer ? serverCache : clientCache
  const cached = cacheToUse.get(descriptor)
  if (cached) {
    return cached
  }
 
  let resolved = null
 
  try {
    resolved = compiler.compileScript(descriptor, {
      id: scopeId,
      isProd,
      babelParserPlugins: options.babelParserPlugins
    })
  } catch (e) {
    loaderContext.emitError(e)
  }
 
  cacheToUse.set(descriptor, resolved)
  return resolved
}