Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

45 строки
1.2 KiB

  1. import { MagicString } from 'vue/compiler-sfc'
  2. import { parseSFC } from './utils.js'
  3. export async function registerUpApp(
  4. code,
  5. fileName = 'App.up',
  6. rootToastHostPath = './uni_modules/uview-plus/libs/root/root-toast-host.vue'
  7. ) {
  8. const ms = new MagicString(code)
  9. const importCode = `import GlobalUpRoot from "./${fileName}.vue";
  10. import UpRootToastHost from "${rootToastHostPath}";`
  11. const vueUseComponentCode = 'app.component("global-up-root", GlobalUpRoot);\napp.component("ku-root-toast-host", UpRootToastHost);'
  12. ms.prepend(`${importCode}\n`).replace(
  13. /(createApp[\s\S]*?)(return\s\{\s*app)/,
  14. `$1${vueUseComponentCode}\n$2`,
  15. )
  16. return ms
  17. }
  18. export async function rebuildUpApp(code, enabledVirtualHost = false) {
  19. const ms = new MagicString(code)
  20. const rootTagNameRE = /<(UpRootView|up-root-view)(?:\s*\/>|><\/\1>)/
  21. ms.replace(rootTagNameRE, '<slot />\n <ku-root-toast-host />')
  22. if (enabledVirtualHost) {
  23. const sfc = await parseSFC(code)
  24. if (sfc.script) {
  25. return ms
  26. }
  27. const langType = sfc.scriptSetup?.lang
  28. ms.append(`<script ${langType ? `lang="${langType}"` : ''}>
  29. export default {
  30. options: {
  31. virtualHost: true,
  32. }
  33. }\n</script>`)
  34. }
  35. return ms
  36. }