uniapp自动构建pages.json的vite插件

对于 uniapp 来说,配置 pages.json 无疑是最繁琐的事情,具有以下缺点:

  • 冗长,页面很多时 pages 内容会很长
  • 难找,有时候因为内容很长,导致页面配置比较难找,而且看起来比较凌乱
  • json弊端,因为是 json 文件,配置项提示不友好,而且写注释会报错,也不能写额外的逻辑(比如动态配置等),强 json 格式(键必须有双引号)

于是,我找出了一个优雅的解决方案,请看示例:

vite.config.ts 中配置

ts 复制代码
// vite.config.ts
import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';
import uniAutoPages from '@jl15988/uni-auto-pages';
export default defineConfig({
  plugins: [
    uniAutoPages({
      // 主页面
      mainPage: 'src/pages/index/index'
    });
  ]
});

pages.config.ts 中配置

pages.config.ts 中的配置与官方 pages.json 的配置几乎一致,相当于仅仅从 json 文件改为了 ts 文件,但是可以忽略 pages 配置,因为会自动构建,除非你想自己配置,subPackages 配置可以仅仅配置 root,然后自动构建 pages。

ts 复制代码
// pages.config.ts
import {defineAutoPagesConfig} from "@jl15988/uni-auto-pages";

export default defineAutoPagesConfig({
  pages: [],
  subPackages: [],
  globalStyle: {
    navigationBarTextStyle: 'black',
    navigationBarTitleText: '',
    navigationBarBackgroundColor: '#F8F8F8',
    backgroundColor: '#F8F8F8',
  },
  // 其他配置项...
});

defineUniPage 页面配置

在页面中可以使用 defineUniPage 来对当前页面单独配置

ts 复制代码
<template>
  <view>页面内容</view>
</template>

<script lang="ts" setup>
import { defineUniPage } from "@jl15988/uni-auto-pages";
  
defineUniPage({
  // 页面配置,会在构建时被提取并写入 pages.json
  style: {
    navigationBarTitleText: '示例页面',
    navigationBarBackgroundColor: '#007AFF',
    navigationBarTextStyle: 'white',
    enablePullDownRefresh: true,
  }
});
</script>

通过配置 tsconfig.json 可以忽略页面的 defineUniPage 引入

json 复制代码
{
  "compilerOptions": {
    "types": ["@jl15988/uni-auto-pages"]
  }
}

配置说明

提供了三种配置方式:

  • 在 pages.config.ts 中配置
  • 在页面中使用 defineUniPage 配置页面

优先级:页面配置 > pages.config.ts 配置

插件配置项说明

配置项 类型 默认值 说明
root string -- 项目根目录,默认自动获取当前根目录
entryDir string 'src/pages' 入口目录
mainPage string 'src/pages/index/index' 主页面路径
fileTypes string\[\] 'vue', 'nvue', 'uvue' 文件类型
ignore string\[\] '\*\*/components/\*\*' 忽略路径
outputPath string 'src/pages.json' 输出路径
defaultPageConfig PageConfig {style: {navigationStyle: 'custom'}} 默认页面配置

page.config.ts 配置项说明

配置项 类型 默认值 说明
pages PagesOptionsPage\[\] \[\] 页面配置,可选,会自动构建,用于自定义页面配置
subPackages SubPackagesOptions\[\] \[\] 分包配置,可选,可以仅配置 root,会自动扫描,也可以自定义指定页面配置
其他,如 globalStyle、tabBar 等 uniapp pages.json,具体参照官方 pages 说明,或参考:pages.ts -- pages.json 配置,与官方 pages.json 一致

仓库、资源、安装、反馈

仓库地址:https://gitee.com/jl15988/uni-auto-pages

npm 地址:https://www.npmjs.com/package/@jl15988/uni-auto-pages

可以执行一下代码安装测试(!!!注意,当前仅测试版本,仅供试用)

shell 复制代码
npm i @jl15988/uni-auto-pages

欢迎安装测试,并提出问题,可以在仓库提交 Issue,或者贡献代码,帮助我们完善此依赖,谢谢!

相关推荐
GreenTea2 小时前
GrokBot 核心成员 Lauren Tan:每月交付 2000 个 PR 的人,是怎么用 AI 的
前端·后端·架构
mCell3 小时前
用 Knip 清理 AI Coding 留下的冗余代码
前端·ai编程·前端工程化
笃行3504 小时前
使用Rokid AIUI做了一个童年推箱子游戏
前端
excel5 小时前
前端加密的作用与使用场景
前端
计算机魔术师6 小时前
纽约时报版权诉讼披露:微软高管内部称训练 AI 是人类历史上最大规模劳动窃取
前端
去伪存真7 小时前
大模型的参数量为什么那么大?
前端·人工智能
IT_陈寒7 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端
八荒启·交互动画8 小时前
# Web特效020—让 Web 特效真正动起来:时间循环应该怎么接
前端·webgl·网页特效·八荒启-交互动画·八荒启
动恰客流统计8 小时前
线下零售数字化浪潮下,客流统计的3个核心发展趋势
大数据·前端·人工智能
用户938515635078 小时前
从小米前端面试题,彻底搞懂闭包、作用域链与 useState 惰性初始化
前端·面试