Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Velpro187
uni-app
提交
9ca60cc2
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,体验更适合开发者的 AI 搜索 >>
提交
9ca60cc2
编写于
10月 09, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: compatible with vite@3
上级
24f27b35
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
55 addition
and
38 deletion
+55
-38
packages/vite-plugin-uni/src/config/index.ts
packages/vite-plugin-uni/src/config/index.ts
+1
-37
packages/vite-plugin-uni/src/index.ts
packages/vite-plugin-uni/src/index.ts
+3
-0
packages/vite-plugin-uni/src/utils/polyfill.ts
packages/vite-plugin-uni/src/utils/polyfill.ts
+51
-1
未找到文件。
packages/vite-plugin-uni/src/config/index.ts
浏览文件 @
9ca60cc2
import
fs
from
'
fs
'
import
path
from
'
path
'
import
{
Plugin
,
PluginOption
}
from
'
vite
'
import
{
Plugin
}
from
'
vite
'
import
{
isInHBuilderX
,
// initPreContext,
// normalizePath,
parseManifestJsonOnce
,
...
...
@@ -48,39 +45,6 @@ export function createConfig(
exclude
:
/
\.
js$/
,
loader
:
'
ts
'
,
},
worker
:
{
plugins
:
initFixedEsbuildInitTSConfck
(
process
.
env
.
UNI_INPUT_DIR
),
},
plugins
:
initFixedEsbuildInitTSConfck
(
process
.
env
.
UNI_NODE_ENV
),
}
}
}
/**
* 解决 HBuilderX 项目未包含 package.json 时,initTSConfck 可能导致查找过慢,或递归目录时权限不足报错
* 即:未包含 package.json 时,直接移除 initTSConfck 相关逻辑
* @param inputDir
* @returns
*/
function
initFixedEsbuildInitTSConfck
(
inputDir
:
string
):
PluginOption
[]
{
if
(
!
isInHBuilderX
())
{
return
[]
}
if
(
fs
.
existsSync
(
path
.
resolve
(
inputDir
,
'
package.json
'
)))
{
return
[]
}
const
initTSConfckPlugins
=
[
'
vite:esbuild
'
,
'
vite:esbuild-transpile
'
]
return
[
{
name
:
'
fixed-esbuild-initTSConfck
'
,
enforce
:
'
pre
'
,
configResolved
(
config
)
{
initTSConfckPlugins
.
forEach
((
name
)
=>
{
const
plugin
=
config
.
worker
.
plugins
.
find
((
p
)
=>
p
.
name
===
name
)
if
(
plugin
)
{
delete
plugin
.
configResolved
}
})
},
},
]
}
packages/vite-plugin-uni/src/index.ts
浏览文件 @
9ca60cc2
...
...
@@ -22,6 +22,7 @@ import { uniCopyPlugin } from './plugins/copy'
import
{
uniMovePlugin
}
from
'
./plugins/move
'
import
{
initExtraPlugins
,
initFixedEsbuildInitTSConfck
,
initPluginUniOptions
,
rewriteCompilerSfcParse
,
}
from
'
./utils
'
...
...
@@ -138,6 +139,8 @@ export default function uniPlugin(
})
plugins
.
push
(...
uniPlugins
)
plugins
.
push
(...
initFixedEsbuildInitTSConfck
(
process
.
env
.
UNI_INPUT_DIR
))
// 执行 build 命令时,vite 强制了 NODE_ENV
// https://github.com/vitejs/vite/blob/main/packages/vite/src/node/build.ts#L405
// const config = await resolveConfig(inlineConfig, 'build', 'production')
...
...
packages/vite-plugin-uni/src/utils/polyfill.ts
浏览文件 @
9ca60cc2
import
fs
,
{
PathLike
}
from
'
fs
'
import
path
from
'
path
'
import
{
EXTNAME_VUE
,
resolveBuiltIn
}
from
'
@dcloudio/uni-cli-shared
'
import
{
EXTNAME_VUE
,
isInHBuilderX
,
normalizePath
,
resolveBuiltIn
,
}
from
'
@dcloudio/uni-cli-shared
'
import
{
SFCParseOptions
}
from
'
@vue/compiler-sfc
'
import
{
Plugin
}
from
'
vite
'
import
{
isString
}
from
'
@vue/shared
'
/**
* TODO 临时重写,解决 @vitejs/plugin-vue 的 Bug
*/
...
...
@@ -20,3 +28,45 @@ export function rewriteCompilerSfcParse() {
return
parse
(
source
,
options
)
}
}
/**
* 解决 HBuilderX 项目未包含 package.json 时,initTSConfck 可能导致查找过慢,或递归目录时权限不足报错
* 即:未包含 package.json 时,直接移除 initTSConfck 相关逻辑
* @param inputDir
* @returns
*/
export
function
initFixedEsbuildInitTSConfck
(
inputDir
:
string
):
Plugin
[]
{
if
(
!
isInHBuilderX
())
{
return
[]
}
if
(
fs
.
existsSync
(
path
.
resolve
(
inputDir
,
'
package.json
'
)))
{
return
[]
}
// 'vite:esbuild', 'vite:esbuild-transpile' initTSConfck
const
existsSync
=
fs
.
existsSync
// 根目录 lerna.json 路径
const
lernaJsonPath
=
normalizePath
(
path
.
resolve
(
inputDir
,
'
lerna.json
'
))
return
[
{
name
:
'
uni:fixed-HBuilderX-initTSConfck-before
'
,
enforce
:
'
pre
'
,
configResolved
()
{
// 在 HBuilderX 项目中,缺少 package.json 时, 确保 searchForWorkspaceRoot 使用项目根目录, 否则 initTSConfck 会查找很费时,且可能访问目录权限报错
// https://github.com/vitejs/vite/blob/43b7b78b1834a4c7128d8a5d987f66a4defcbd93/packages/vite/src/node/plugins/esbuild.ts#L407
fs
.
existsSync
=
(
p
:
PathLike
)
=>
{
if
(
isString
(
p
))
{
// 访问根目录 lerna.json 时,直接返回 true
// https://github.com/vitejs/vite/blob/43b7b78b1834a4c7128d8a5d987f66a4defcbd93/packages/vite/src/node/server/searchRoot.ts#L35
if
(
p
.
endsWith
(
'
lerna.json
'
)
&&
lernaJsonPath
===
normalizePath
(
p
)
)
{
return
true
}
}
return
existsSync
(
p
)
}
},
},
]
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录