Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Velpro187
uni-app
提交
114fc97f
U
uni-app
项目概览
Velpro187
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
114fc97f
编写于
1月 12, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mp): Compatible with unocss
上级
3bd3286c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
64 addition
and
12 deletion
+64
-12
packages/uni-app-vite/src/plugin/configResolved.ts
packages/uni-app-vite/src/plugin/configResolved.ts
+0
-2
packages/uni-cli-shared/src/vite/utils/plugin.ts
packages/uni-cli-shared/src/vite/utils/plugin.ts
+11
-3
packages/uni-mp-vite/src/plugin/configResolved.ts
packages/uni-mp-vite/src/plugin/configResolved.ts
+53
-7
未找到文件。
packages/uni-app-vite/src/plugin/configResolved.ts
浏览文件 @
114fc97f
...
...
@@ -3,7 +3,6 @@ import path from 'path'
import
{
Plugin
}
from
'
vite
'
import
{
removePlugins
,
injectAssetPlugin
,
injectCssPlugin
,
injectCssPostPlugin
,
...
...
@@ -24,7 +23,6 @@ function normalizeCssChunkFilename(id: string) {
export
const
configResolved
:
Plugin
[
'
configResolved
'
]
=
(
config
)
=>
{
const
inputDir
=
process
.
env
.
UNI_INPUT_DIR
const
mainPath
=
resolveMainPathOnce
(
inputDir
)
removePlugins
(
'
vite:import-analysis
'
,
config
)
injectCssPlugin
(
config
)
injectCssPostPlugin
(
config
,
{
chunkCssFilename
(
id
:
string
)
{
...
...
packages/uni-cli-shared/src/vite/utils/plugin.ts
浏览文件 @
114fc97f
import
type
{
Plugin
,
ResolvedConfig
}
from
'
vite
'
import
{
extend
}
from
'
@vue/shared
'
import
{
assetPlugin
}
from
'
../plugins/vitejs/plugins/asset
'
import
{
cssPlugin
,
cssPostPlugin
}
from
'
../plugins/vitejs/plugins/css
'
...
...
@@ -28,10 +29,17 @@ export function injectCssPostPlugin(
chunkCssCode
:
(
filename
:
string
,
cssCode
:
string
)
=>
string
}
)
{
replacePlugins
(
[
cssPostPlugin
(
config
,
{
chunkCssFilename
,
chunkCssCode
})],
config
const
newCssPostPlugin
=
cssPostPlugin
(
config
,
{
chunkCssFilename
,
chunkCssCode
,
})
const
oldCssPostPlugin
=
config
.
plugins
.
find
(
(
p
)
=>
p
.
name
===
newCssPostPlugin
.
name
)
// 直接覆盖原有方法,不能删除,替换,因为 unocss 在 pre 阶段已经获取到了旧的 css-post 插件对象
if
(
oldCssPostPlugin
)
{
extend
(
oldCssPostPlugin
,
newCssPostPlugin
)
}
}
export
function
replacePlugins
(
plugins
:
Plugin
[],
config
:
ResolvedConfig
)
{
...
...
packages/uni-mp-vite/src/plugin/configResolved.ts
浏览文件 @
114fc97f
import
debug
from
'
debug
'
import
{
Plugin
}
from
'
vite
'
import
type
{
Plugin
,
ResolvedConfig
}
from
'
vite
'
import
type
{
EmittedAsset
}
from
'
rollup
'
import
{
removePlugins
,
injectAssetPlugin
,
injectCssPlugin
,
injectCssPostPlugin
,
...
...
@@ -43,24 +43,31 @@ export function createConfigResolved({
}
return
(
config
)
=>
{
const
mainPath
=
resolveMainPathOnce
(
process
.
env
.
UNI_INPUT_DIR
)
removePlugins
(
'
vite:import-analysis
'
,
config
)
fixUnocss
(
config
)
injectCssPlugin
(
config
)
const
unocssGlobalBuildGenerateIndex
=
config
.
plugins
.
findIndex
(
(
p
)
=>
p
.
name
===
'
unocss:global:build:generate
'
)
const
hasUnocssGlobalBuildGenerate
=
unocssGlobalBuildGenerateIndex
>
-
1
// unocss 是根据 .css 后缀来编译文件,需要先保持 css 文件后缀为 .css,等 unocss 处理完后,再重置回正确的文件后缀
const
cssExtname
=
hasUnocssGlobalBuildGenerate
?
'
.css
'
:
extname
injectCssPostPlugin
(
config
,
{
chunkCssFilename
(
id
:
string
)
{
if
(
id
===
mainPath
)
{
return
'
app
'
+
e
xtname
return
'
app
'
+
cssE
xtname
}
else
if
(
isUniPageUrl
(
id
))
{
return
normalizeCssChunkFilename
(
parseVirtualPagePath
(
id
),
e
xtname
)
return
normalizeCssChunkFilename
(
parseVirtualPagePath
(
id
),
cssE
xtname
)
}
else
if
(
isUniComponentUrl
(
id
))
{
return
normalizeCssChunkFilename
(
parseVirtualComponentPath
(
id
),
e
xtname
cssE
xtname
)
}
},
chunkCssCode
(
filename
,
cssCode
)
{
cssCode
=
transformScopedCss
(
cssCode
)
if
(
filename
===
'
app
'
+
e
xtname
)
{
if
(
filename
===
'
app
'
+
cssE
xtname
)
{
const
componentCustomHiddenCss
=
(
component
&&
component
.
vShow
&&
...
...
@@ -94,5 +101,44 @@ export function createConfigResolved({
},
})
injectAssetPlugin
(
config
)
if
(
hasUnocssGlobalBuildGenerate
&&
extname
!==
'
.css
'
)
{
;(
config
.
plugins
as
Plugin
[]).
splice
(
unocssGlobalBuildGenerateIndex
+
1
,
0
,
adjustCssExtname
(
extname
)
)
}
}
}
function
adjustCssExtname
(
extname
:
string
):
Plugin
{
return
{
name
:
'
vite:uni-adjust-css-extname
'
,
generateBundle
(
_
,
bundle
)
{
const
files
=
Object
.
keys
(
bundle
)
files
.
forEach
((
name
)
=>
{
if
(
name
.
endsWith
(
'
.css
'
))
{
const
asset
=
bundle
[
name
]
as
EmittedAsset
this
.
emitFile
({
fileName
:
name
.
replace
(
'
.css
'
,
extname
),
type
:
'
asset
'
,
source
:
asset
.
source
,
})
delete
bundle
[
name
]
}
})
},
}
}
function
fixUnocss
(
config
:
ResolvedConfig
)
{
const
unocssGlobalBuildScan
=
config
.
plugins
.
find
(
(
p
)
=>
p
.
name
===
'
unocss:global:build:scan
'
)
// TODO 原始的 scan 的 buildStart 会清空 vfsLayerMap,导致 watch 时,load 阶段 /__uno.css 获取不到
// https://github.com/antfu/unocss/blob/main/packages/vite/src/modes/global/build.ts#L25
if
(
unocssGlobalBuildScan
)
{
// 隐患: task 未被清空
unocssGlobalBuildScan
.
buildStart
=
()
=>
{}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录