utils.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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.relativeInputDir = exports.configResolved = exports.isPages = exports.isManifest = exports.createUniOptions = void 0;
  7. const node_path_1 = __importDefault(require("node:path"));
  8. const uni_shared_1 = require("@dcloudio/uni-shared");
  9. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  10. const uni_i18n_1 = require("@dcloudio/uni-i18n");
  11. function createUniOptions(platform) {
  12. return {
  13. copyOptions() {
  14. const platform = process.env.UNI_PLATFORM;
  15. const inputDir = process.env.UNI_INPUT_DIR;
  16. const outputDir = process.env.UNI_OUTPUT_DIR;
  17. const targets = [];
  18. // 自动化测试时,不启用隐私政策
  19. if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
  20. if (process.env.UNI_UTS_PLATFORM === 'app-android') {
  21. targets.push({
  22. src: 'androidPrivacy.json',
  23. dest: outputDir,
  24. transform(source) {
  25. const options = (0, uni_cli_shared_1.initI18nOptions)(platform, inputDir, false, true);
  26. if (!options) {
  27. return;
  28. }
  29. return (0, uni_i18n_1.compileI18nJsonStr)(source.toString(), options);
  30. },
  31. });
  32. }
  33. }
  34. return {
  35. assets: ['hybrid/html/**/*', 'uni_modules/*/hybrid/html/**/*'],
  36. targets,
  37. };
  38. },
  39. compilerOptions: platform === 'ios'
  40. ? {
  41. isNativeTag(tag) {
  42. return (0, uni_cli_shared_1.matchUTSComponent)(tag) || (0, uni_shared_1.isAppNVueNativeTag)(tag);
  43. },
  44. nodeTransforms: [uni_cli_shared_1.transformTapToClick, uni_cli_shared_1.transformUTSComponent],
  45. }
  46. : {},
  47. };
  48. }
  49. exports.createUniOptions = createUniOptions;
  50. function isManifest(id) {
  51. return id.endsWith(uni_cli_shared_1.MANIFEST_JSON_UTS);
  52. }
  53. exports.isManifest = isManifest;
  54. function isPages(id) {
  55. return id.endsWith(uni_cli_shared_1.PAGES_JSON_UTS);
  56. }
  57. exports.isPages = isPages;
  58. // TODO vite 升级需要考虑调整以下列表
  59. const REMOVED_PLUGINS = [
  60. 'vite:build-metadata',
  61. 'vite:modulepreload-polyfill',
  62. // 'vite:css', // iOS replace
  63. 'vite:esbuild',
  64. 'vite:wasm-helper',
  65. 'vite:worker',
  66. // 'vite:json',
  67. // 'vite:asset', // replace
  68. 'vite:wasm-fallback',
  69. 'vite:define',
  70. // 'vite:css-post', // iOS replace
  71. 'vite:build-html',
  72. 'vite:html-inline-proxy',
  73. 'vite:worker-import-meta-url',
  74. 'vite:asset-import-meta-url',
  75. 'vite:force-systemjs-wrap-complete',
  76. 'vite:watch-package-data',
  77. 'commonjs',
  78. 'vite:data-uri',
  79. 'vite:dynamic-import-vars',
  80. 'vite:import-glob',
  81. 'vite:build-import-analysis',
  82. 'vite:esbuild-transpile',
  83. 'vite:terser',
  84. 'vite:reporter',
  85. ];
  86. function configResolved(config, isAndroidX = false) {
  87. const plugins = config.plugins;
  88. const len = plugins.length;
  89. const removedPlugins = REMOVED_PLUGINS.slice(0);
  90. if (isAndroidX) {
  91. removedPlugins.push('vite:css');
  92. removedPlugins.push('vite:css-post');
  93. }
  94. for (let i = len - 1; i >= 0; i--) {
  95. const plugin = plugins[i];
  96. if (removedPlugins.includes(plugin.name)) {
  97. plugins.splice(i, 1);
  98. }
  99. }
  100. // console.log(plugins.map((p) => p.name))
  101. // 强制不inline
  102. config.build.assetsInlineLimit = 0;
  103. (0, uni_cli_shared_1.injectAssetPlugin)(config, { isAndroidX });
  104. }
  105. exports.configResolved = configResolved;
  106. function relativeInputDir(filename) {
  107. const inputDir = process.env.UNI_INPUT_DIR;
  108. filename = (0, uni_cli_shared_1.normalizeNodeModules)(filename);
  109. if (filename.startsWith(inputDir)) {
  110. return (0, uni_cli_shared_1.normalizePath)(node_path_1.default.relative(inputDir, filename));
  111. }
  112. return filename;
  113. }
  114. exports.relativeInputDir = relativeInputDir;