pagesJson.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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.uniPagesJsonPlugin = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  9. const esbuild_1 = require("../../nvue/plugins/esbuild");
  10. function uniPagesJsonPlugin() {
  11. return (0, uni_cli_shared_1.defineUniPagesJsonPlugin)((opts) => {
  12. return {
  13. name: 'uni:app-vue-pages-json',
  14. enforce: 'pre',
  15. transform(code, id) {
  16. if (!opts.filter(id)) {
  17. return;
  18. }
  19. this.addWatchFile(path_1.default.resolve(process.env.UNI_INPUT_DIR, 'pages.json'));
  20. (0, uni_cli_shared_1.getLocaleFiles)(path_1.default.resolve(process.env.UNI_INPUT_DIR, 'locale')).forEach((filepath) => {
  21. this.addWatchFile(filepath);
  22. });
  23. const pagesJson = (0, uni_cli_shared_1.normalizePagesJson)(code, process.env.UNI_PLATFORM);
  24. pagesJson.pages.forEach((page) => {
  25. if (!page.style.isNVue) {
  26. this.addWatchFile(path_1.default.resolve(process.env.UNI_INPUT_DIR, page.path + '.vue'));
  27. }
  28. });
  29. this.emitFile({
  30. fileName: uni_cli_shared_1.APP_CONFIG_SERVICE,
  31. type: 'asset',
  32. source: (0, uni_cli_shared_1.normalizeAppConfigService)(pagesJson, (0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR)),
  33. });
  34. return {
  35. code: `import './${uni_cli_shared_1.MANIFEST_JSON_JS}'\n` +
  36. (0, uni_cli_shared_1.normalizeAppPagesJson)(pagesJson),
  37. map: { mappings: '' },
  38. };
  39. },
  40. generateBundle(_, bundle) {
  41. const outputFile = bundle[uni_cli_shared_1.APP_CONFIG_SERVICE];
  42. if (outputFile && outputFile.type === 'asset') {
  43. // 补充 nvue styles
  44. ;
  45. outputFile.source = (0, esbuild_1.wrapperNVueAppStyles)(outputFile.source);
  46. }
  47. },
  48. };
  49. });
  50. }
  51. exports.uniPagesJsonPlugin = uniPagesJsonPlugin;