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,或者贡献代码,帮助我们完善此依赖,谢谢!

相关推荐
郝YH是人间理想2 小时前
系统架构设计师案例分析题——web篇
前端·软件工程
Evaporator Core2 小时前
深入探索:Core Web Vitals 进阶优化与新兴指标
前端·windows
初遇你时动了情2 小时前
html js 原生实现web组件、web公共组件、template模版插槽
前端·javascript·html
QQ2740287562 小时前
Soundness Gitpod 部署教程
linux·运维·服务器·前端·chrome·web3
前端小崔3 小时前
从零开始学习three.js(18):一文详解three.js中的着色器Shader
前端·javascript·学习·3d·webgl·数据可视化·着色器
哎呦你好3 小时前
HTML 表格与div深度解析区别及常见误区
前端·html
运维@小兵3 小时前
vue配置子路由,实现点击左侧菜单,内容区域显示不同的内容
前端·javascript·vue.js
koiy.cc4 小时前
记录:echarts实现tooltip的某个数据常显和恢复
前端·echarts
一只专注api接口开发的技术猿4 小时前
企业级电商数据对接:1688 商品详情 API 接口开发与优化实践
大数据·前端·爬虫
GISer_Jing4 小时前
[前端高频]数组转树、数组扁平化、深拷贝、JSON.stringify&JSON.parse等手撕
前端·javascript·json