代码拉取完成,页面将自动刷新
const compiler_sfc_1 = require("vue/compiler-sfc")
const { parse } = require("@babel/parser")
const traverse = require("@babel/traverse").default
const VueFuncNames = 'BaseTransition,Comment,EffectScope,Fragment,KeepAlive,ReactiveEffect,Static,Suspense,Teleport,Text,Transition,TransitionGroup,VueElement,callWithAsyncErrorHandling,callWithErrorHandling,camelize,capitalize,cloneVNode,compatUtils,compile$1 as compile,computed$1 as computed,createApp,createBlock,createCommentVNode,createElementBlock,createBaseVNode as createElementVNode,createHydrationRenderer,createPropsRestProxy,createRenderer,createSSRApp,createSlots,createStaticVNode,createTextVNode,createVNode,customRef,defineAsyncComponent,defineComponent,defineCustomElement,defineEmits,defineExpose,defineProps,defineSSRCustomElement,devtools,effect,effectScope,getCurrentInstance,getCurrentScope,getTransitionRawChildren,guardReactiveProps,h,handleError,hydrate,initCustomFormatter,initDirectivesForSSR,inject,isMemoSame,isProxy,isReactive,isReadonly,isRef,isRuntimeOnly,isVNode,markRaw,mergeDefaults,mergeProps,nextTick,normalizeClass,normalizeProps,normalizeStyle,onActivated,onBeforeMount,onBeforeUnmount,onBeforeUpdate,onDeactivated,onErrorCaptured,onMounted,onRenderTracked,onRenderTriggered,onScopeDispose,onServerPrefetch,onUnmounted,onUpdated,openBlock,popScopeId,provide,proxyRefs,pushScopeId,queuePostFlushCb,reactive,readonly,ref,registerRuntimeCompiler,render,renderList,renderSlot,resolveComponent,resolveDirective,resolveDynamicComponent,resolveFilter,resolveTransitionHooks,setBlockTracking,setDevtoolsHook,setTransitionHooks,shallowReactive,shallowReadonly,shallowRef,ssrContextKey,ssrUtils,stop,toDisplayString,toHandlerKey,toHandlers,toRaw,toRef,toRefs,transformVNodeArgs,triggerRef,unref,useAttrs,useCssModule,useCssVars,useSSRContext,useSlots,useTransitionState,vModelCheckbox,vModelDynamic,vModelRadio,vModelSelect,vModelText,vShow,version,warn$1 as warn,watch,watchEffect,watchPostEffect,watchSyncEffect,withAsyncContext,withCtx,withDefaults,withDirectives,withKeys,withMemo,withModifiers,withScopeId'
const Vue = new Set(VueFuncNames.split(','));
function loader (source) {
const { descriptor, errors } = (0, compiler_sfc_1.parse)(source, {});
const { script, scriptSetup } = descriptor;
let scriptCode = script || scriptSetup;
if (scriptCode) {
let content = scriptCode.content;
const ast = parse(content, { sourceType: "module" });
let usedVue = new Set();
traverse(ast, {
Identifier: item => {
if (Vue.has(item.node.name)) {
usedVue.add(item.node.name)
}
}
});
let vueImport = `\nimport { ${[...usedVue].join(', ')} } from "vue";`
let newContent = vueImport + content;
source = source.replace(content, newContent);
}
return source;
}
exports.default = loader;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。