市场夺宝奇兵
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.7 KiB

  1. import { functions, setDevToolsClientUrl } from '@vue/devtools-core'
  2. import { addCustomTab, createRpcServer, devtools, setDevToolsEnv, setOpenInEditorBaseUrl, toggleComponentInspectorEnabled } from '@vue/devtools-kit'
  3. import vueDevToolsOptions from 'virtual:vue-devtools-options'
  4. function normalizeUrl(url) {
  5. return new URL(`${vueDevToolsOptions.base || '/'}${url}`, import.meta.url).toString()
  6. }
  7. const overlayDir = normalizeUrl(`@id/virtual:vue-devtools-path:overlay`)
  8. const body = document.getElementsByTagName('body')[0]
  9. const head = document.getElementsByTagName('head')[0]
  10. setDevToolsEnv({
  11. vitePluginDetected: true,
  12. })
  13. const devtoolsClientUrl = normalizeUrl(`__devtools__/`)
  14. setDevToolsClientUrl(devtoolsClientUrl)
  15. setOpenInEditorBaseUrl(normalizeUrl('').slice(0, -1))
  16. toggleComponentInspectorEnabled(!!vueDevToolsOptions.componentInspector)
  17. devtools.init()
  18. // create vite inspect tab
  19. addCustomTab({
  20. title: 'Vite Inspect',
  21. name: 'vite-inspect',
  22. icon: 'i-carbon-ibm-watson-discovery',
  23. view: {
  24. type: 'iframe',
  25. src: normalizeUrl(`__inspect/`),
  26. },
  27. category: 'advanced',
  28. })
  29. // create link stylesheet
  30. const link = document.createElement('link')
  31. link.rel = 'stylesheet'
  32. link.href = `${overlayDir}/devtools-overlay.css`
  33. // create script
  34. const script = document.createElement('script')
  35. script.src = `${overlayDir}/devtools-overlay.mjs`
  36. script.type = 'module'
  37. // append to head
  38. head.appendChild(link)
  39. // append to body
  40. body.appendChild(script)
  41. // Used in the browser extension
  42. window.__VUE_DEVTOOLS_VITE_PLUGIN_CLIENT_URL__ = `${window.location.origin}${devtoolsClientUrl}`
  43. createRpcServer(functions, {
  44. preset: 'iframe',
  45. })
  46. createRpcServer(functions, {
  47. preset: 'broadcast',
  48. })