Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自动生成的page.json,无法将更多自定义的配置项载入 #144

Open
4 tasks done
Vanisper opened this issue Mar 10, 2024 · 2 comments
Open
4 tasks done

Comments

@Vanisper
Copy link

Vanisper commented Mar 10, 2024

描述问题

image

如上图所示,微信小程序darkmode的适配需要在page.json中开启darkmode,但是我在 接口定义PagesConfig 中没有找到相关定义;

但是发现此字段是允许 [x: string]: any 的,于是就自行添加了此配置,但是发现并没有出现在自动生成的 page.json 中。


期望:

希望能支持自定义加入额外自定义配置项,或者将 darkmode 配置项加入到 接口定义PagesConfig 中,且能够如愿出现在page.json中。

复现

// page.config.ts
import { defineUniPages } from "@uni-helper/vite-plugin-uni-pages"

export default defineUniPages({
    // more
    // ...
    darkmode: true,
    // more
    // ...
})

以上 darkmode: true 为需要额外加入到page.json配置项,但是没有如愿加入。

系统信息

System:
    OS: Windows 10 10.0.19044
    CPU: (32) x64 AMD Ryzen 9 7950X 16-Core Processor
    Memory: 43.60 GB / 63.21 GB
  Binaries:
    Node: 18.18.2 - D:\Environment\NodeJs\node.EXE
    Yarn: 1.22.21 - D:\Environment\NodeJs\yarn.CMD
    npm: 10.2.5 - D:\Environment\NodeJs\npm.CMD
    pnpm: 8.14.0 - D:\Environment\NodeJs\pnpm.CMD
  Browsers:
    Edge: Chromium (122.0.2365.80)
    Internet Explorer: 11.0.19041.3636

使用的包管理器

pnpm

核对

  • 遵循我们的 行为准则
  • 检查是否已经有一个报告相同错误的问题,以避免重复创建。
  • 这是一个具体的错误。请开启 GitHub 讨论你的疑问。
  • 所提供的复现是这个问题的 最小复现
@KeJunMao
Copy link
Member

https://github.com/uni-helper/vitesse-uni-app/blob/main/manifest.config.ts#L60

有没有可能,darkmode 是这样开启的?

@Vanisper
Copy link
Author

Vanisper commented Mar 10, 2024

是的 大佬说的没错 是我疏忽了

后面发现了此问题的原因:
以上问题的出现是因为项目特殊原因,每次启动前都会吧manifest.json的文件内容清空,这就导致了 vite-plugin-uni-manifest 插件没有及时生成 manifest.json 文件的时候 vite-plugin-uni-pages 插件就产生效力了,导致读取不到 manifest.json 的内容;

尝试过在 vite.config.ts 中将 vite-plugin-uni-manifest 插件的顺序提到最前面,也是如此(我理想中该插件提到最前面的时候,能先生成manifest.json,然后 vite-plugin-uni-pages 产生效力的时候就能有内容可读取,但是并没有如我想象中那样);

基于以上,我想我的问题有两个办法可以解决:

  1. 由于项目的特殊性,需要执行一次 echo {}> src/manifest.json ,我需要做的就是判断此文件存在时不做此操作即可(因为我只需要项目开始之初创建此文件即可,所以做的 echo {}> src/manifest.json 操作只需一次即可,但是由于本人没做判断,导致每次dev的时候都做了此操作,所以就出现了每次都会清空一次 manifest.json 文件的结果);
  2. 本插件可以实现热更新,因为当前根据本人的使用判断,本插件仅仅只读取了一次 manifest.json ,解决我上面的问题可能需要本插件实现对该文件的监听,并且实现热更新(此条仅做建议,同时我发现 vite-plugin-uni-manifest 插件并没有实现对manifest.config.ts文件的热更新监听,可能对开发有一点点体验上的影响)。

解决办法1:最终将 echo {}> src/manifest.json 操作改为了:

{
    "scripts": {
        "reset:manifest": "node -e \"var fs = require('fs'); if (!fs.existsSync('src/manifest.json')) fs.writeFileSync('src/manifest.json', '{}');\"",
    },
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants