当前位置: 首页 > news >正文

通过npm run XXX命令生成uniapp的pages.json文件

1 引入必要的依赖

const fs = require("fs");
const path = require("path");

2 定义初始变量

const defaultPages = [{path: "pages/index/index"}
];
const defaultSettings = {globalStyle: {h5: {animationType: "fade-in",animationDuration: 300},navigationBarBackgroundColor: "#0081ff",navigationBarTitleText: "",navigationStyle: "custom",navigationBarTextStyle: "white"}
};
const inputUrl = "src/pages";
const outputUrl = "src/pages.json";

3 读取目标目录

递归读取目录中的所有.vue文件

/*** @param {string} dir - 要读取的目录* @returns {Promise<string[]>} .vue文件的完整路径数组*/
async function readVueFilesRecursive(dir) {let results = [];const entries = await fs.promises.readdir(dir, { withFileTypes: true });for (const entry of entries) {const fullPath = path.join(dir, entry.name);if (entry.isDirectory()) {// 递归读取子目录const subDirResults = await readVueFilesRecursive(fullPath);results = results.concat(subDirResults);} else if (entry.isFile() && entry.name.endsWith(".vue")) {// 只处理.vue文件results.push(fullPath);}}return results;
}

4 生成文件

异步生成pages.json配置文件

/*** 该函数会扫描项目src/pages目录下的所有.vue文件,* 并根据这些文件生成一个包含页面路由信息的pages.json配置文件。** @returns {Promise<void>} 无返回值的Promise*/
async function generatePagesJson() {console.info("正在生成 pages.json...");const projectRoot = process.cwd();const srcDir = path.join(projectRoot, inputUrl);const outputFile = path.join(projectRoot, outputUrl);// 确保输出文件的目录存在const outputDir = path.dirname(outputFile);if (!fs.existsSync(outputDir)) {fs.mkdirSync(outputDir, { recursive: true });console.info(`已创建目录: ${outputDir}`);}try {// 递归读取所有.vue文件const vueFiles = await readVueFilesRecursive(srcDir);const pages = [];// 添加默认页面到pages数组pages.push(...defaultPages);// 遍历所有.vue文件并将其转换为页面路径for (let i = 0; i < vueFiles.length; i++) {const file = vueFiles[i];const load = path.relative(projectRoot, file).replace("src\\", "").replace(/\\/g, "/").replace(/\.vue/g, "");// 过滤掉components目录中的文件if (new RegExp("/components/").test(load)) continue;// 过滤掉已在默认页面中定义的路径if (defaultPages.findIndex(item => item.path === load) > -1) continue;pages.push({path: load});}// 创建JSON内容const jsonContent = JSON.stringify({...defaultSettings,pages: pages},null,2);// 写入文件await fs.promises.writeFile(outputFile, jsonContent, "utf8");console.info(`已更新 pages.json,包含 ${pages.length} 个Vue文件`);} catch (error) {console.error(`生成pages.json时出错: ${error.message}`);process.exit(1);}
}

5 配置运行命令

将配置放入到package.json中的scripts下

"pages": "node ./src/utils/generate-pages.js"

需要运行时,直接运行

npm run dev
http://www.dtcms.com/a/516303.html

相关文章:

  • HTML教程——1,css
  • H5响应式网站数据app外包公司推荐
  • ubuntu服务器无法识别所有显卡
  • Spring中常用的设计模式
  • 做网站是什么公司wordpress禁止 逍遥
  • 不定高虚拟列表性能优化全解析
  • 怎么免费建立自己的网站平台2018威胁网站检测平台建设
  • Python-封装、继承与重写
  • 新媒体培训班学费多少做网站和优化
  • 网站开发案例pdf工程造价信息价在什么网站查
  • Prometheus(一)—— Prometheus监控系统从入门到实战:理论与部署全指南
  • 使用宝塔面板docker部署https://github.com/imsyy/DailyHotApi项目
  • RHCE作业2
  • 乐云网站建设网站源码分享网
  • 发展历程 网站建设专业提供网站建设服务是什么
  • Katalon Studio AI生成API测试
  • ip生产区
  • 做网站需要了解哪些知识wordpress文章增加字段
  • 要制作一个自己的网站wordpress实时推送 php
  • AWS DMS 任务优化实战:解决 Aurora MySQL 到 Redshift 的数据一致性与性能问题
  • 电感、电容与电抗的标幺值关系详解
  • JMeter测试关系数据库: JDBC Request
  • 珠海英语翻译 欧得宝:专业译员实测 2025年
  • 硬件内部优先级
  • 高端网站建设公司哪里济南兴田德润实惠吗网架加工厂的地址
  • 美妆网站建设制作公司网站结构图
  • 【2025最新】APP开启了SSL无法被抓包,如何进行调试
  • c++算法题目总结
  • 开源安全管理平台wazuh-检测 SQL 注入攻击
  • 试用网站 建站网站建设 徐州