| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.uniPagesJsonPlugin = exports.nvuePagesCache = void 0;
- const path_1 = __importDefault(require("path"));
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- exports.nvuePagesCache = new Map();
- // 在 @vue/compiler-sfc@3.2.47 执行前重写 @vue/compiler-dom compile 方法
- const nvuePages = {};
- rewriteBindingMetadata(nvuePages);
- function uniPagesJsonPlugin({ renderer, appService, }) {
- return (0, uni_cli_shared_1.defineUniPagesJsonPlugin)((opts) => {
- return {
- name: 'uni:app-nvue-pages-json',
- enforce: 'pre',
- configResolved(config) {
- exports.nvuePagesCache.set(config, nvuePages);
- },
- transform(code, id) {
- if (!opts.filter(id)) {
- return;
- }
- this.addWatchFile(path_1.default.resolve(process.env.UNI_INPUT_DIR, 'pages.json'));
- (0, uni_cli_shared_1.getLocaleFiles)(path_1.default.resolve(process.env.UNI_INPUT_DIR, 'locale')).forEach((filepath) => {
- this.addWatchFile(filepath);
- });
- const pagesJson = (0, uni_cli_shared_1.normalizePagesJson)(code, process.env.UNI_PLATFORM);
- Object.keys(nvuePages).forEach((name) => {
- delete nvuePages[name];
- });
- pagesJson.pages.forEach((page) => {
- if (page.style.isNVue) {
- const filename = (0, uni_cli_shared_1.normalizePath)(path_1.default.resolve(process.env.UNI_INPUT_DIR, page.path + '.nvue'));
- nvuePages[filename] = {
- disableScroll: page.style.disableScroll,
- scrollIndicator: page.style.scrollIndicator,
- };
- // fix: question/164673
- // this.addWatchFile(filename)
- }
- });
- if (renderer === 'native' && appService) {
- this.emitFile({
- fileName: uni_cli_shared_1.APP_CONFIG_SERVICE,
- type: 'asset',
- source: (0, uni_cli_shared_1.normalizeAppConfigService)(pagesJson, (0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR)),
- });
- return {
- code: '',
- map: { mappings: '' },
- };
- }
- return {
- code: (0, uni_cli_shared_1.normalizeAppNVuePagesJson)(pagesJson),
- map: { mappings: '' },
- };
- },
- };
- });
- }
- exports.uniPagesJsonPlugin = uniPagesJsonPlugin;
- /**
- * 在 BindingMetadata 中补充页面标记
- */
- function rewriteBindingMetadata(nvuePages) {
- const compilerDom = require((0, uni_cli_shared_1.resolveBuiltIn)('@vue/compiler-dom'));
- const { compile } = compilerDom;
- compilerDom.compile = (template, options = {}) => {
- if (options.filename) {
- if (nvuePages[options.filename]) {
- ;
- (options.bindingMetadata || (options.bindingMetadata = {})).__pageOptions = nvuePages[options.filename];
- }
- }
- return compile(template, options);
- };
- }
|