entry.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.uniEntryPlugin = exports.isUniComponentUrl = exports.isUniPageUrl = exports.parseVirtualComponentPath = exports.parseVirtualPagePath = exports.virtualComponentPath = exports.virtualPagePath = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  9. const uniPagePrefix = 'uniPage://';
  10. const uniComponentPrefix = 'uniComponent://';
  11. function virtualPagePath(filepath) {
  12. return uniPagePrefix + (0, uni_cli_shared_1.encodeBase64Url)(filepath);
  13. }
  14. exports.virtualPagePath = virtualPagePath;
  15. function virtualComponentPath(filepath) {
  16. return uniComponentPrefix + (0, uni_cli_shared_1.encodeBase64Url)(filepath);
  17. }
  18. exports.virtualComponentPath = virtualComponentPath;
  19. function parseVirtualPagePath(uniPageUrl) {
  20. return (0, uni_cli_shared_1.decodeBase64Url)(uniPageUrl.replace(uniPagePrefix, ''));
  21. }
  22. exports.parseVirtualPagePath = parseVirtualPagePath;
  23. function parseVirtualComponentPath(uniComponentUrl) {
  24. return (0, uni_cli_shared_1.decodeBase64Url)(uniComponentUrl.replace(uniComponentPrefix, ''));
  25. }
  26. exports.parseVirtualComponentPath = parseVirtualComponentPath;
  27. function isUniPageUrl(id) {
  28. return id.startsWith(uniPagePrefix);
  29. }
  30. exports.isUniPageUrl = isUniPageUrl;
  31. function isUniComponentUrl(id) {
  32. return id.startsWith(uniComponentPrefix);
  33. }
  34. exports.isUniComponentUrl = isUniComponentUrl;
  35. function uniEntryPlugin({ global, }) {
  36. const inputDir = process.env.UNI_INPUT_DIR;
  37. const manifestJson = (0, uni_cli_shared_1.parseManifestJsonOnce)(inputDir);
  38. const platformOptions = manifestJson[process.env.UNI_PLATFORM] || {};
  39. return {
  40. name: 'uni:virtual',
  41. enforce: 'pre',
  42. resolveId(id) {
  43. if (isUniPageUrl(id) || isUniComponentUrl(id)) {
  44. return id;
  45. }
  46. },
  47. load(id) {
  48. if (isUniPageUrl(id)) {
  49. const filepath = (0, uni_cli_shared_1.normalizePath)(path_1.default.resolve(inputDir, parseVirtualPagePath(id)));
  50. this.addWatchFile(filepath);
  51. return {
  52. code: `import MiniProgramPage from '${filepath}'
  53. ${global}.createPage(MiniProgramPage)`,
  54. };
  55. }
  56. else if (isUniComponentUrl(id)) {
  57. const filepath = (0, uni_cli_shared_1.normalizePath)(path_1.default.resolve(inputDir, parseVirtualComponentPath(id)));
  58. this.addWatchFile(filepath);
  59. // 微信小程序json文件中的styleIsolation优先级比options中的高,不能在此配置
  60. (0, uni_cli_shared_1.addMiniProgramComponentJson)((0, uni_cli_shared_1.removeExt)((0, uni_cli_shared_1.normalizeMiniProgramFilename)(filepath, inputDir)), {
  61. component: true,
  62. styleIsolation: process.env.UNI_PLATFORM === 'mp-alipay'
  63. ? platformOptions.styleIsolation || 'apply-shared'
  64. : undefined,
  65. });
  66. return {
  67. code: `import Component from '${filepath}'
  68. ${global}.createComponent(Component)`,
  69. };
  70. }
  71. },
  72. };
  73. }
  74. exports.uniEntryPlugin = uniEntryPlugin;