Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
8c2fbfd8
U
uni-app
项目概览
DCloud
/
uni-app
6 个月 前同步成功
通知
751
Star
38709
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
8
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
8
Issue
8
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8c2fbfd8
编写于
6月 11, 2024
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(h5): 在 darkmode 模式下,tabbar 中图片路径在 theme.json 中不以 / 开头导致发行模式下 404 的Bug
上级
de318580
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
86 addition
and
3 deletion
+86
-3
packages/uni-cli-shared/src/json/theme.ts
packages/uni-cli-shared/src/json/theme.ts
+86
-3
未找到文件。
packages/uni-cli-shared/src/json/theme.ts
浏览文件 @
8c2fbfd8
import
fs
from
'
fs
'
import
path
from
'
path
'
import
{
parseJson
}
from
'
./json
'
import
{
normalizeStyles
,
once
}
from
'
@dcloudio/uni-shared
'
import
{
addLeadingSlash
,
normalizeStyles
,
once
}
from
'
@dcloudio/uni-shared
'
export
function
hasThemeJson
(
themeLocation
:
string
)
{
if
(
!
fs
.
existsSync
(
themeLocation
))
{
...
...
@@ -22,9 +22,92 @@ export const parseThemeJson = (themeLocation: string = 'theme.json') => {
return
parseJson
(
jsonStr
,
true
)
as
UniApp
.
ThemeJson
}
const
SCHEME_RE
=
/^
([
a-z-
]
+:
)?\/\/
/i
const
DATA_RE
=
/^data:.*,.*/
function
normalizeFilepath
(
filepath
:
string
)
{
if
(
!
(
SCHEME_RE
.
test
(
filepath
)
||
DATA_RE
.
test
(
filepath
))
&&
filepath
.
indexOf
(
'
/
'
)
!==
0
)
{
return
addLeadingSlash
(
filepath
)
}
return
filepath
}
const
parseThemeJsonIconPath
=
(
themeConfig
:
UniApp
.
ThemeJson
,
curPathThemeJsonKey
:
string
)
=>
{
if
(
themeConfig
.
light
?.[
curPathThemeJsonKey
])
{
themeConfig
.
light
[
curPathThemeJsonKey
]
=
normalizeFilepath
(
themeConfig
.
light
[
curPathThemeJsonKey
]
)
}
if
(
themeConfig
.
dark
?.[
curPathThemeJsonKey
])
{
themeConfig
.
dark
[
curPathThemeJsonKey
]
=
normalizeFilepath
(
themeConfig
.
dark
[
curPathThemeJsonKey
]
)
}
}
function
normalizeUniConfigThemeJsonIconPath
(
themeConfig
:
UniApp
.
ThemeJson
,
pagesJson
:
UniApp
.
PagesJson
)
{
// 处理 tabbar 下 list -> item -> iconPath、selectedIconPath; midButton -> backgroundImage 路径 / 不开头的情况
const
tabBar
=
pagesJson
.
tabBar
if
(
tabBar
)
{
tabBar
.
list
.
forEach
((
item
)
=>
{
if
(
item
.
iconPath
&&
item
.
iconPath
.
indexOf
(
'
@
'
)
===
0
)
{
parseThemeJsonIconPath
(
themeConfig
,
item
.
iconPath
.
replace
(
/^@/
,
''
))
}
if
(
item
.
selectedIconPath
&&
item
.
selectedIconPath
.
indexOf
(
'
@
'
)
===
0
)
{
parseThemeJsonIconPath
(
themeConfig
,
item
.
selectedIconPath
.
replace
(
/^@/
,
''
)
)
}
})
const
midButtonBackgroundImage
=
tabBar
.
midButton
?.
backgroundImage
if
(
midButtonBackgroundImage
&&
midButtonBackgroundImage
.
indexOf
(
'
@
'
)
===
0
)
{
parseThemeJsonIconPath
(
themeConfig
,
midButtonBackgroundImage
.
replace
(
/^@/
,
''
)
)
}
}
return
themeConfig
}
const
getPagesJson
=
(
inputDir
:
string
)
=>
{
const
pagesFilename
=
path
.
join
(
inputDir
,
'
pages.json
'
)
if
(
!
fs
.
existsSync
(
pagesFilename
))
{
if
(
process
.
env
.
UNI_COMPILE_TARGET
===
'
uni_modules
'
)
{
return
{
pages
:
[],
globalStyle
:
{
navigationBar
:
{}
},
}
as
UniApp
.
PagesJson
}
}
const
jsonStr
=
fs
.
readFileSync
(
pagesFilename
,
'
utf8
'
)
return
parseJson
(
jsonStr
,
true
)
as
UniApp
.
PagesJson
}
export
const
normalizeThemeConfigOnce
=
once
(
(
manifestJsonPlatform
:
Record
<
string
,
any
>
=
{})
=>
parseThemeJson
(
manifestJsonPlatform
.
themeLocation
)
(
manifestJsonPlatform
:
Record
<
string
,
any
>
=
{})
=>
{
const
themeConfig
=
parseThemeJson
(
manifestJsonPlatform
.
themeLocation
)
normalizeUniConfigThemeJsonIconPath
(
themeConfig
,
getPagesJson
(
process
.
env
.
UNI_INPUT_DIR
)
)
return
themeConfig
}
)
export
function
initTheme
<
T
extends
object
>
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录