index.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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.uniAppVuePlugin = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const fs_extra_1 = __importDefault(require("fs-extra"));
  9. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  10. const renderjs_1 = require("../plugins/renderjs");
  11. const configResolved_1 = require("../../plugin/configResolved");
  12. const utils_1 = require("../../utils");
  13. const code_1 = require("@dcloudio/uni-cli-shared/dist/json/app/pages/code");
  14. function uniAppVuePlugin() {
  15. const inputDir = process.env.UNI_INPUT_DIR;
  16. const mainPath = (0, uni_cli_shared_1.resolveMainPathOnce)(inputDir);
  17. let appCss = '';
  18. function normalizeCssChunkFilename(id) {
  19. return (0, uni_cli_shared_1.removeExt)((0, uni_cli_shared_1.normalizePath)(path_1.default.relative(inputDir, id))) + '.css';
  20. }
  21. return {
  22. name: 'uni:app-vue',
  23. config() {
  24. return {
  25. css: {
  26. postcss: {
  27. plugins: (0, uni_cli_shared_1.initPostcssPlugin)({
  28. uniApp: (0, uni_cli_shared_1.parseRpx2UnitOnce)(inputDir, process.env.UNI_PLATFORM),
  29. }),
  30. },
  31. },
  32. build: {
  33. rollupOptions: {
  34. external: ['vue', '@vue/shared'],
  35. output: {
  36. name: 'AppService',
  37. banner: uni_cli_shared_1.polyfillCode + code_1.restoreGlobalCode,
  38. format: process.env.UNI_APP_CODE_SPLITING ? 'amd' : 'iife',
  39. amd: {
  40. autoId: true,
  41. },
  42. entryFileNames: uni_cli_shared_1.APP_SERVICE_FILENAME,
  43. globals: {
  44. vue: 'Vue',
  45. '@vue/shared': 'uni.VueShared',
  46. },
  47. },
  48. },
  49. },
  50. };
  51. },
  52. configResolved: (0, configResolved_1.createConfigResolved)({
  53. createCssPostPlugin(config) {
  54. return (0, uni_cli_shared_1.cssPostPlugin)(config, {
  55. platform: 'app',
  56. chunkCssFilename(id) {
  57. if (id === mainPath) {
  58. return 'app.css';
  59. }
  60. else if ((0, uni_cli_shared_1.isUniPageSfcFile)(id, inputDir)) {
  61. return normalizeCssChunkFilename(id);
  62. }
  63. },
  64. chunkCssCode(filename, cssCode) {
  65. if (filename === 'app.css') {
  66. if (!appCss) {
  67. appCss = fs_extra_1.default.readFileSync((0, uni_cli_shared_1.resolveBuiltIn)('@dcloudio/uni-app-plus/dist/style.css'), 'utf8');
  68. }
  69. return appCss + '\n' + cssCode;
  70. }
  71. return cssCode;
  72. },
  73. });
  74. },
  75. }),
  76. generateBundle(_, bundle) {
  77. this.emitFile({
  78. fileName: '__uniappview.html',
  79. source: genViewHtml(bundle),
  80. type: 'asset',
  81. });
  82. },
  83. };
  84. }
  85. exports.uniAppVuePlugin = uniAppVuePlugin;
  86. function genViewHtml(bundle) {
  87. const viewHtmlStr = fs_extra_1.default.readFileSync(path_1.default.join(utils_1.templateDir, '__uniappview.html'), 'utf8');
  88. const { globalStyle } = (0, uni_cli_shared_1.parsePagesJsonOnce)(process.env.UNI_INPUT_DIR, process.env.UNI_PLATFORM);
  89. const { darkmode = false } = (0, uni_cli_shared_1.getPlatformManifestJsonOnce)();
  90. const __uniConfig = {
  91. globalStyle: {
  92. rpxCalcMaxDeviceWidth: globalStyle.rpxCalcMaxDeviceWidth,
  93. rpxCalcBaseDeviceWidth: globalStyle.rpxCalcBaseDeviceWidth,
  94. },
  95. darkmode,
  96. };
  97. const wxsCode = bundle[renderjs_1.APP_WXS_JS]
  98. ? `<script src="${renderjs_1.APP_WXS_JS}"></script>`
  99. : '';
  100. const renderjsCode = bundle[renderjs_1.APP_RENDERJS_JS]
  101. ? `<script src="${renderjs_1.APP_RENDERJS_JS}"></script>`
  102. : '';
  103. const automatorCode = process.env.UNI_AUTOMATOR_WS_ENDPOINT
  104. ? `<script src="__uniappautomator.js"></script>`
  105. : '';
  106. return viewHtmlStr
  107. .toString()
  108. .replace('<!--wxsCode-->', wxsCode)
  109. .replace('<!--renderjsCode-->', renderjsCode)
  110. .replace('<!--automatorCode-->', automatorCode)
  111. .replace('/*__uniConfig*/', `var __uniConfig = ${JSON.stringify(__uniConfig)}`);
  112. }