vite-uni-dev-tool
Version:
vite-uni-dev-tool, debug, uni-app, 一处编写,到处调试
45 lines (44 loc) • 2.79 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../utils/index.js");function v(s){const{lines:n,importConsole:u,netWorkInfo:p,sourceFileServers:l,reset:a}=s,i=n.join(`
`),c=o.hasImportCurrentInstance(i),m=o.hasImportOnLaunch(i),d=o.hasImportOnExit(i);c||n.unshift("import { getCurrentInstance } from 'vue';");const t=[];m||t.push("onLaunch"),d||t.push("onExit"),t.length&&n.unshift(`import { ${t.join(", ")} } from '@dcloudio/uni-app';`),n.unshift(`import { initDevTool, uploadAbnormal${u?", console":""} } from 'vite-uni-dev-tool/dist/core';`,"import pagesJson from './pages.json';");const e=`
const vueInstance = getCurrentInstance();
initDevTool({
pagesJson,
vueInstance,
mode: import.meta.env.MODE,
sourceFileServers: [
${[...p.urls??[],...l??[]].map(I=>`'${I}'`).join(`,
`)}
],
...${JSON.stringify(a)},
});`,f=o.findInsertionIndex(n,I=>I.includes("onLaunch("));f!==-1?n.splice(f,0,e):n.push(`
onLaunch(() => {
${e}
});`);const h=o.findInsertionIndex(n,I=>I.includes("onExit("));return h!==-1?n.splice(h,0,`
uploadAbnormal({ immediately: true });
`):n.push(`
onExit(() => {
uploadAbnormal({ immediately: true });
});
`),n}function x(s){const{lines:n,netWorkInfo:u,sourceFileServers:p,importConsole:l,reset:a}=s,i=n.join(`
`);o.hasImportVue(i)||n.unshift("import Vue from 'vue';"),n.unshift(`import { initDevTool, uploadAbnormal${l?", console":""} } from 'vite-uni-dev-tool/dist/core';`,"import pagesJson from './pages.json';");const d=`
initDevTool({
pagesJson,
vueInstance: Vue,
mode: import.meta.env.MODE,
sourceFileServers: [
${[...u.urls??[],...p??[]].map(e=>`'${e}'`).join(`,
`)}
],
...${JSON.stringify(a)},
});`,t=o.findInsertionIndex(n,e=>e.includes("onLaunch(")||e.includes("onLaunch:"));if(t!==-1)n.splice(t+1,0,d);else{const e=o.findInsertionIndex(n,f=>f.includes("export default"));e!==-1&&n.splice(e+1,0,`
onLaunch: function() {
${d}
},`)}const r=o.findInsertionIndex(n,e=>e.includes("onExit(")||e.includes("onExit:"));return r!==-1?n.splice(r+1,0,`
uploadAbnormal({ immediately: true });
`):n.push(`
onExit: function() {
uploadAbnormal({ immediately: true });
});
`),n}const g=({code:s,isSetup:n,importConsole:u,scriptRow:p,netWorkInfo:l,sourceFileServers:a,reset:i})=>{const c=s.match(o.regScript);if(!c||!c[1])return{code:s,map:null};try{const t={lines:c[1].trim().split(`
`),isSetup:n,importConsole:u,netWorkInfo:l,sourceFileServers:a,reset:i},r=n?v(t):x(t);r.unshift(p),r.push("<\/script>");const e=r.join(`
`);return{code:s.replace(o.regScript,e),map:null}}catch(m){return console.error("[DevTool] 转换 App.vue 文件时出错:",m),{code:s,map:null}}};exports.transformApp=g;