inject.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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.uniInjectPlugin = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const shared_1 = require("@vue/shared");
  9. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  10. const apiJson = require(path_1.default.resolve(__dirname, process.env.UNI_APP_X === 'true'
  11. ? '../../lib/api.x.json'
  12. : '../../lib/api.json'));
  13. const uniInjectPluginOptions = {
  14. exclude: [...uni_cli_shared_1.COMMON_EXCLUDE],
  15. 'uni.': [
  16. '@dcloudio/uni-h5',
  17. ((method) => apiJson.includes(method)),
  18. ],
  19. // 兼容 wx 对象
  20. 'wx.': [
  21. '@dcloudio/uni-h5',
  22. ((method) => apiJson.includes(method)),
  23. ],
  24. getApp: ['@dcloudio/uni-h5', 'getApp'],
  25. getCurrentPages: ['@dcloudio/uni-h5', 'getCurrentPages'],
  26. UniServiceJSBridge: ['@dcloudio/uni-h5', 'UniServiceJSBridge'],
  27. UniViewJSBridge: ['@dcloudio/uni-h5', 'UniViewJSBridge'],
  28. };
  29. function uniInjectPlugin() {
  30. let resolvedConfig;
  31. const callback = function (imports, mod) {
  32. const styles = mod[0] === '@dcloudio/uni-h5' &&
  33. uni_cli_shared_1.API_DEPS_CSS[mod[1]];
  34. if (!styles) {
  35. return;
  36. }
  37. styles.forEach((style) => {
  38. if ((0, uni_cli_shared_1.isCombineBuiltInCss)(resolvedConfig)) {
  39. uni_cli_shared_1.buildInCssSet.add(style);
  40. }
  41. else {
  42. if (!imports.has(style)) {
  43. imports.set(style, `import '${style}';`);
  44. }
  45. }
  46. });
  47. };
  48. let injectPlugin;
  49. return {
  50. name: 'uni:h5-inject',
  51. apply: 'build',
  52. enforce: 'post',
  53. configResolved(config) {
  54. resolvedConfig = config;
  55. const enableTreeShaking = (0, uni_cli_shared_1.isEnableTreeShaking)((0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR));
  56. if (!enableTreeShaking) {
  57. // 不启用摇树优化,移除 wx、uni 等 API 配置
  58. delete uniInjectPluginOptions['wx.'];
  59. delete uniInjectPluginOptions['uni.'];
  60. }
  61. injectPlugin = (0, uni_cli_shared_1.uniViteInjectPlugin)('uni:h5-inject', (0, shared_1.extend)(uniInjectPluginOptions, {
  62. callback,
  63. }));
  64. },
  65. transform(code, id) {
  66. return injectPlugin.transform.call(this, code, id);
  67. },
  68. };
  69. }
  70. exports.uniInjectPlugin = uniInjectPlugin;