版博士V2.0程序
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

108 lignes
2.6 KiB

  1. import {
  2. SETUP_COMPONENT_ID_REGEX,
  3. getMainModule,
  4. hotUpdateSetupComponent,
  5. isSubModule,
  6. loadSetupComponent,
  7. transformPost,
  8. transformSetupComponent
  9. } from "./chunk-NXJ7EWBD.mjs";
  10. // src/index.ts
  11. import { createUnplugin } from "unplugin";
  12. import {
  13. REGEX_NODE_MODULES,
  14. REGEX_SETUP_SFC,
  15. REGEX_SRC_FILE,
  16. REGEX_VUE_SUB,
  17. createFilter,
  18. detectVueVersion
  19. } from "@vue-macros/common";
  20. function resolveOption(options) {
  21. const root = options.root || process.cwd();
  22. const version = options.version || detectVueVersion(root);
  23. return {
  24. include: [REGEX_SRC_FILE],
  25. exclude: [REGEX_SETUP_SFC, REGEX_VUE_SUB, REGEX_NODE_MODULES],
  26. ...options,
  27. root,
  28. version
  29. };
  30. }
  31. var name = "unplugin-vue-setup-component";
  32. var PrePlugin = createUnplugin(
  33. (userOptions = {}, meta) => {
  34. const options = resolveOption(userOptions);
  35. const filter = createFilter(options);
  36. const setupComponentContext = {};
  37. return {
  38. name: `${name}-pre`,
  39. enforce: "pre",
  40. resolveId(id, importer) {
  41. if (SETUP_COMPONENT_ID_REGEX.test(id))
  42. return id;
  43. if (["rollup", "vite"].includes(meta.framework) && importer && isSubModule(importer)) {
  44. const mainModule = getMainModule(importer, options.root);
  45. return this.resolve(id, mainModule, {
  46. skipSelf: true
  47. });
  48. }
  49. },
  50. loadInclude(id) {
  51. return SETUP_COMPONENT_ID_REGEX.test(id);
  52. },
  53. load(id) {
  54. return loadSetupComponent(id, setupComponentContext, options.root);
  55. },
  56. transformInclude(id) {
  57. return filter(id);
  58. },
  59. transform(code, id) {
  60. return transformSetupComponent(code, id, setupComponentContext);
  61. },
  62. vite: {
  63. configResolved(config) {
  64. options.root = config.root;
  65. },
  66. handleHotUpdate: (ctx) => {
  67. if (filter(ctx.file)) {
  68. return hotUpdateSetupComponent(ctx, setupComponentContext);
  69. }
  70. }
  71. }
  72. };
  73. }
  74. );
  75. var PostPlugin = createUnplugin(() => {
  76. return {
  77. name: `${name}-post`,
  78. enforce: "post",
  79. transformInclude(id) {
  80. return isSubModule(id);
  81. },
  82. transform(code, id) {
  83. return transformPost(code, id);
  84. },
  85. rollup: {
  86. transform: {
  87. order: "post",
  88. handler(code, id) {
  89. if (!isSubModule(id))
  90. return;
  91. return transformPost(code, id);
  92. }
  93. }
  94. }
  95. };
  96. });
  97. var plugin = createUnplugin(
  98. (options = {}, meta) => {
  99. return [PrePlugin.raw(options, meta), PostPlugin.raw(options, meta)];
  100. }
  101. );
  102. var src_default = plugin;
  103. export {
  104. src_default
  105. };