Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
a4632447
U
uni-app
项目概览
DCloud
/
uni-app
13 天 前同步成功
通知
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看板
提交
a4632447
编写于
6月 25, 2024
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(harmony): 支持在非uni_modules uts api内引用鸿蒙原生包
上级
3719024c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
76 addition
and
10 deletion
+76
-10
packages/uni-app-harmony/src/compiler/plugin.ts
packages/uni-app-harmony/src/compiler/plugin.ts
+75
-1
packages/uni-app-vite/src/vue/plugin/index.ts
packages/uni-app-vite/src/vue/plugin/index.ts
+1
-9
未找到文件。
packages/uni-app-harmony/src/compiler/plugin.ts
浏览文件 @
a4632447
...
...
@@ -9,15 +9,89 @@ import {
parseUniExtApi
,
resolveUTSCompiler
,
}
from
'
@dcloudio/uni-cli-shared
'
import
type
{
OutputChunk
}
from
'
rollup
'
const
commondGlobals
:
Record
<
string
,
string
>
=
{
vue
:
'
Vue
'
,
'
@vue/shared
'
:
'
uni.VueShared
'
,
}
const
harmonyGlobals
:
(
string
|
RegExp
)[]
=
[
/^@ohos
\.
/
,
/^@kit
\.
/
,
/^@hms
\.
/
,
'
@ohos/hypium
'
,
'
@ohos/hamock
'
,
]
function
isHarmoneyGlobal
(
id
:
string
)
{
return
harmonyGlobals
.
some
((
harmonyGlobal
)
=>
typeof
harmonyGlobal
===
'
string
'
?
harmonyGlobal
===
id
:
harmonyGlobal
.
test
(
id
)
)
}
function
generateHarmonyImportSpecifier
(
id
:
string
)
{
return
id
.
replace
(
/
([
@
\.])
/g
,
function
(
_
,
$1
)
{
switch
(
$1
)
{
case
'
.
'
:
return
'
_
'
case
'
/
'
:
return
'
__
'
default
:
return
''
}
})
}
function
generateHarmonyImportExternalCode
(
hamonyPackageNames
:
string
[])
{
return
hamonyPackageNames
.
filter
((
hamonyPackageName
)
=>
isHarmoneyGlobal
(
hamonyPackageName
))
.
map
(
(
hamonyPackageName
)
=>
`import
${
generateHarmonyImportSpecifier
(
hamonyPackageName
)}
from '
${
hamonyPackageName
}
';`
)
}
export
function
uniAppHarmonyPlugin
():
UniVitePlugin
{
return
{
name
:
'
uni:app-harmony
'
,
apply
:
'
build
'
,
async
generateBundle
()
{
config
()
{
return
{
build
:
{
rollupOptions
:
{
external
:
[...
Object
.
keys
(
commondGlobals
),
...
harmonyGlobals
],
output
:
{
globals
:
function
(
id
:
string
)
{
return
(
commondGlobals
[
id
]
||
(
isHarmoneyGlobal
(
id
)
?
generateHarmonyImportSpecifier
(
id
)
:
''
)
)
},
},
},
},
}
},
async
generateBundle
(
_
,
bundle
)
{
genAppHarmonyIndex
(
process
.
env
.
UNI_INPUT_DIR
,
getCurrentCompiledUTSPlugins
()
)
for
(
const
key
in
bundle
)
{
const
serviceBundle
=
bundle
[
key
]
as
OutputChunk
if
(
serviceBundle
.
code
)
{
serviceBundle
.
code
=
generateHarmonyImportExternalCode
(
serviceBundle
.
imports
)
+
serviceBundle
.
code
}
}
},
async
writeBundle
()
{
if
(
process
.
env
.
UNI_COMPILE_TARGET
===
'
uni_modules
'
)
{
...
...
packages/uni-app-vite/src/vue/plugin/index.ts
浏览文件 @
a4632447
...
...
@@ -44,15 +44,7 @@ export function uniAppVuePlugin(): UniVitePlugin {
},
build
:
{
rollupOptions
:
{
external
:
[
'
vue
'
,
'
@vue/shared
'
,
/^@ohos
\.
/
,
/^@kit
\.
/
,
/^@hms
\.
/
,
'
@ohos/hypium
'
,
'
@ohos/hamock
'
,
],
external
:
[
'
vue
'
,
'
@vue/shared
'
],
output
:
{
name
:
'
AppService
'
,
banner
:
polyfillCode
+
restoreGlobalCode
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录