uni.plugin.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. 'use strict';
  2. var path = require('path');
  3. var uniCliShared = require('@dcloudio/uni-cli-shared');
  4. function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
  5. var path__default = /*#__PURE__*/_interopDefault(path);
  6. var index = () => [
  7. uniCliShared.defineUniMainJsPlugin((opts) => {
  8. let isEnableV1 = false;
  9. let isEnableV2 = false;
  10. let isOffline = false;
  11. let configModulePush = false;
  12. return {
  13. name: 'uni:push',
  14. enforce: 'pre',
  15. config(config, env) {
  16. if (uniCliShared.isSsr(env.command, config)) {
  17. return;
  18. }
  19. const inputDir = process.env.UNI_INPUT_DIR;
  20. const platform = process.env.UNI_PLATFORM;
  21. isEnableV1 = uniCliShared.isEnableUniPushV1(inputDir, platform);
  22. isEnableV2 = uniCliShared.isEnableUniPushV2(inputDir, platform);
  23. configModulePush = uniCliShared.hasPushModule(inputDir);
  24. // v1
  25. if (isEnableV1) {
  26. return;
  27. }
  28. if (!isEnableV2) {
  29. return;
  30. }
  31. // v2
  32. isOffline = platform === 'app' && uniCliShared.isUniPushOffline(inputDir);
  33. if (isOffline) {
  34. return;
  35. }
  36. return {
  37. define: {
  38. 'process.env.UNI_PUSH_DEBUG': false,
  39. },
  40. };
  41. },
  42. resolveId(id) {
  43. if (id === '@dcloudio/uni-push') {
  44. let file = 'dist/uni-push.es.js';
  45. if (isEnableV1) {
  46. file = 'dist/uni-push-v1.plus.es.js';
  47. }
  48. else if (isOffline) {
  49. file = 'dist/uni-push.plus.es.js';
  50. }
  51. return uniCliShared.resolveBuiltIn(path__default.default.join('@dcloudio/uni-push', file));
  52. }
  53. },
  54. transform(code, id) {
  55. if (!opts.filter(id)) {
  56. return;
  57. }
  58. // 如果启用了v1,但是没有配置module.push,不需要注入
  59. if (isEnableV1 && !configModulePush) {
  60. return;
  61. }
  62. // 如果启用了v2+offline,但是没有配置module.push,不需要注入
  63. if (isEnableV2 && isOffline && !configModulePush) {
  64. return;
  65. }
  66. if (isEnableV1 || isEnableV2) {
  67. return {
  68. code: `import '@dcloudio/uni-push';` + code,
  69. map: null,
  70. };
  71. }
  72. },
  73. };
  74. }),
  75. ];
  76. module.exports = index;