123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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
- }
|