Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-starter
提交
4e19b4cf
U
uni-starter
项目概览
DCloud
/
uni-starter
通知
4673
Star
229
Fork
210
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
3
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-starter
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
3
Issue
3
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4e19b4cf
编写于
10月 26, 2024
作者:
Anne_LXM
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
删除uni_modules_tools辅助工具
上级
f49c77aa
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
0 addition
and
315 deletion
+0
-315
uni_modules_tools/change_after.js
uni_modules_tools/change_after.js
+0
-26
uni_modules_tools/config.js
uni_modules_tools/config.js
+0
-84
uni_modules_tools/main.js
uni_modules_tools/main.js
+0
-107
uni_modules_tools/package.json
uni_modules_tools/package.json
+0
-14
uni_modules_tools/readme.md
uni_modules_tools/readme.md
+0
-84
未找到文件。
uni_modules_tools/change_after.js
已删除
100644 → 0
浏览文件 @
f49c77aa
const
fs
=
require
(
'
fs
'
);
module
.
exports
=
function
(){
console
.
log
(
'
开始执行脚本change_after
'
);
let
changelog
=
fs
.
readFileSync
(
process
.
cwd
()
+
'
/changelog.md
'
,
'
utf-8
'
).
split
(
"
##
"
)[
1
].
split
(
"
\n
"
).
slice
(
1
).
join
(
'
'
);
console
.
log
(
changelog
);
// 这里是修改完相关敏感配置后执行的脚本,你可以在这里自定义逻辑,
// 比如执行git提交命令
var
shell
=
require
(
"
shelljs
"
);
var
exec
=
shell
.
exec
;
if
(
exec
(
'
git add .
'
).
code
!==
0
)
{
shell
.
echo
(
'
Error: Git add failed
'
);
shell
.
exit
(
1
);
}
if
(
exec
(
`git commit -a -m "
${
changelog
}
"`
).
code
!==
0
)
{
shell
.
echo
(
'
Error: Git commit failed
'
);
shell
.
exit
(
1
);
}
if
(
exec
(
'
git push
'
).
code
!==
0
)
{
shell
.
echo
(
'
Error: Git commit failed
'
);
shell
.
exit
(
1
);
}
shell
.
exec
(
`echo git success
${
changelog
}
`
);
}
\ No newline at end of file
uni_modules_tools/config.js
已删除
100644 → 0
浏览文件 @
f49c77aa
// "文件路径" : {"键名":"改成什么"}
{
"
/manifest.json
"
:
{
"
appid
"
:
""
,
"
name
"
:
""
,
"
versionName
"
:
""
,
"
mp-weixin
"
:
{
"
appid
"
:
""
},
"
vueVersion
"
:
"
2
"
,
"
app-plus
"
:
{
"
modules
"
:
{
"
OAuth
"
:
{}
},
"
distribute
"
:
{
"
sdkConfigs
"
:
{
"
oauth
"
:
{
"
univerify
"
:
{},
"
weixin
"
:
{
"
appid
"
:
""
,
"
appsecret
"
:
""
,
"
UniversalLinks
"
:
""
},
"
apple
"
:
{}
}
}
}
}
},
"
/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json
"
:
{
"
tokenExpiresIn
"
:
7200
,
"
app
"
:
{
"
oauth
"
:
{
"
weixin
"
:
{
"
appid
"
:
"
填写来源微信开放平台https://open.weixin.qq.com/创建的应用的appid
"
,
"
appsecret
"
:
"
填写来源微信开放平台https://open.weixin.qq.com/创建的应用的appsecret
"
},
"
apple
"
:
{
"
bundleId
"
:
"
苹果开发者后台获取的bundleId
"
}
}
},
"
web
"
:
{
"
oauth
"
:
{
"
weixin-h5
"
:
{
"
appid
"
:
"
微信浏览器内微信登录,所用的微信公众号appid
"
,
"
appsecret
"
:
"
微信公众号后台获取的appsecret
"
},
"
weixin-web
"
:
{
"
appid
"
:
"
手机微信扫码登录,所用的微信开放平台(https://open.weixin.qq.com/)-网站应用的appid
"
,
"
appsecret
"
:
"
微信开放平台-网站应用的appsecret
"
}
}
},
"
mp-weixin
"
:
{
"
oauth
"
:
{
"
weixin
"
:
{
"
appid
"
:
"
微信小程序登录所用的appid、appsecret需要在对应的小程序管理控制台获取
"
,
"
appsecret
"
:
"
微信小程序后台获取的appsecret
"
}
}
},
"
mp-alipay
"
:
{
"
oauth
"
:
{
"
alipay
"
:
{
"
appid
"
:
"
支付宝小程序登录用到的appid、privateKey请参考支付宝小程序的文档进行设置或者获取,https://opendocs.alipay.com/open/291/105971#LDsXr
"
,
"
privateKey
"
:
"
支付宝小程序登录用到的appid、privateKey请参考支付宝小程序的文档进行设置或者获取,https://opendocs.alipay.com/open/291/105971#LDsXr
"
}
}
},
"
service
"
:
{
"
sms
"
:
{
"
name
"
:
"
应用名称,对应短信模版的name
"
,
"
smsKey
"
:
"
短信密钥key,开通短信服务处可以看到
"
,
"
smsSecret
"
:
"
短信密钥secret,开通短信服务处可以看到
"
},
"
univerify
"
:
{
"
appid
"
:
"
当前应用的appid,使用云函数URL化,此项必须配置
"
,
"
apiKey
"
:
"
apiKey 和 apiSecret 在开发者中心获取,开发者中心:https://dev.dcloud.net.cn/uniLogin/index?type=0,文档:https://ask.dcloud.net.cn/article/37965
"
,
"
apiSecret
"
:
""
}
}
}
}
uni_modules_tools/main.js
已删除
100644 → 0
浏览文件 @
f49c77aa
//脚本文件目录 __dirname
//运行脚本的目录,即:项目的目录 process.cwd()
//配置文件
const
fs
=
require
(
'
fs
'
),
Hjson
=
require
(
'
hjson
'
),
config
=
Hjson
.
rt
.
parse
(
fs
.
readFileSync
(
__dirname
+
'
/config.js
'
,
'
utf-8
'
))
const
change_after
=
require
(
'
./change_after
'
)
if
(
process
.
argv
[
2
]
==
'
change
'
)
{
change
(
config
,
()
=>
{
console
.
log
(
'
脚本change已经执行成功
'
);
change_after
()
})
}
else
{
recovery
(
config
)
}
function
change
(
config
,
callback
)
{
const
total
=
Object
.
keys
(
config
).
length
let
index
=
0
;
for
(
let
fileName
in
config
)
{
let
path
=
process
.
cwd
()
+
fileName
let
copyPath
=
__dirname
+
'
/copy
'
+
fileName
let
fileText
=
fs
.
readFileSync
(
path
,
'
utf-8
'
)
//保持原文件名先备份一份到/uni_modules_tools/copy目录下,然后再覆盖
writeFileRecursive
(
copyPath
,
fileText
,
function
(
err
)
{
//创建目录并写入文件
if
(
err
)
{
return
console
.
log
(
err
);
}
//改写
let
HfileObj
=
Hjson
.
rt
.
parse
(
fileText
)
//递归合并,为了保留注释内容
mergeJSON
(
HfileObj
,
config
[
fileName
])
fs
.
writeFile
(
path
,
Hjson
.
rt
.
stringify
(
HfileObj
,
{
quotes
:
'
all
'
,
separator
:
true
,
multiline
:
"
off
"
,
bracesSameLine
:
true
}),
function
(
err
)
{
if
(
err
)
{
return
console
.
log
(
err
);
}
index
++
if
(
index
==
total
)
{
callback
()
}
})
})
}
}
function
recovery
()
{
let
paths
=
Object
.
keys
(
config
)
console
.
log
(
paths
);
paths
.
forEach
(
path
=>
{
console
.
log
(
__dirname
+
'
/copy
'
+
path
);
let
oldFile
=
fs
.
readFileSync
(
__dirname
+
'
/copy
'
+
path
)
console
.
log
(
process
.
cwd
()
+
path
);
fs
.
writeFile
(
process
.
cwd
()
+
path
,
oldFile
,
function
(
err
)
{
if
(
err
)
{
console
.
log
(
err
);
return
}
// fs.unlinkSync(__dirname + path+'.lock')
})
})
}
//创建目录并写入文件
function
writeFileRecursive
(
path
,
buffer
,
callback
)
{
let
lastPath
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
"
/
"
));
fs
.
mkdir
(
lastPath
,
{
recursive
:
true
},
(
err
)
=>
{
if
(
err
)
return
callback
(
err
);
fs
.
writeFile
(
path
,
buffer
,
function
(
err
)
{
if
(
err
)
return
callback
(
err
);
return
callback
(
null
);
});
});
}
//递归合并,为了保留注释内容
function
mergeJSON
(
minor
,
main
)
{
for
(
var
key
in
main
)
{
if
(
typeof
(
main
[
key
])
!=
'
object
'
)
{
minor
[
key
]
=
main
[
key
];
}
else
{
if
(
minor
&&
main
){
console
.
log
(
'
[
'
,
minor
[
key
],
main
[
key
],
'
]
'
);
mergeJSON
(
minor
[
key
],
main
[
key
]);
}
else
{
console
.
log
({
minor
,
main
});
}
}
}
}
uni_modules_tools/package.json
已删除
100644 → 0
浏览文件 @
f49c77aa
{
"name"
:
"uni_modules_tools"
,
"version"
:
"1.0.0"
,
"description"
:
"本插件是一个[uni_modules钩子脚本](https://uniapp.dcloud.io/uni_modules?id=uni_modulesconfigjson),仅限uni_modules插件使用 #### 为什么使用 uni_modules_tools 在实际开发中很多插件需要配置文件才可以正常运行,比如uni-id、uni-pay等; 有些配置内容属于密钥,在发表到插件市场的时候我们通常不希望这些配置被暴露。 传统的方式你需要手动备份密钥内容,上传结束后再将配置填回。这样插件作者发表插件会比较不便。"
,
"main"
:
"main.js"
,
"scripts"
:
{
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 1"
},
"author"
:
""
,
"license"
:
"ISC"
,
"dependencies"
:
{
"hjson"
:
"^3.2.2"
}
}
uni_modules_tools/readme.md
已删除
100644 → 0
浏览文件 @
f49c77aa
本插件是一个
[
uni_modules钩子脚本
](
https://uniapp.dcloud.io/uni_modules?id=uni_modulesconfigjson
)
,仅限uni_modules插件使用
#### 为什么使用 uni_modules_tools
在实际开发中很多插件需要配置文件才可以正常运行,比如uni-id、uni-pay等;
有些配置内容属于密钥,在发表到插件市场的时候我们通常不希望这些配置被暴露。
传统的方式你需要手动备份密钥内容,上传结束后再将配置填回。这样插件作者发表插件会比较不便。
而现在有了
`uni_modules_tools`
只需配置
`/uni_modules_tools/config.js`
即实现
-
在插件上传之前,自动根据配置改写项目中对应配置。
-
上传结束(成功和失败都触发)后自动恢复项目中的配置。
#### 示例目录结构
<pre>
├─ uni_modules // 存放uni_module规范的插件。
│ └─uni-config-center
│ └─uniCloud
│ └─cloudfunctions
│ └─common
│ └─uni-config-center
│ └─uni-id
│ └─config.json
├─ manifest.json
├─ uni_modules.config.json //uni_modules的配置文件
└─ uni_modules_tools
├─ copy //用于自动修改配置文件时的,临时备份目录
├─ config.js //插件配置文件,下面会有示例说明
├─ main.js //插件核心代码,入口文件;你无需修改此文件中的代码,除非你了解内部逻辑
└─ readme.md //插件文档
</pre>
#### 使用方式
`/uni_modules_tools/config.js`
的格式为:
```
{
"文件路径" : {"键名":"改后的内容"}
}
```
-
文件仅支持json格式,如:
`manifest.json`
、
`uni-config-center`
下的
`config.json`
等
使用示例,比如你需要:
-
修改manifest.json文件的appid内容改为:请重新获取appid
-
修改uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 文件的内容app-plus -> oauth -> weixin 和 apple 下的
`appid`
`appsecret`
`apple`
值为:
`请填写你的自己的appid`
`请填写你的自己的appsecret`
`请填写你的自己的bundleId`
1.
配置,根目录下的
`/uni_modules_tools/config.js`
文件,如下:
```
{
"/manifest.json": {
"appid": "请重新获取appid"
},
"/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json": {
"app-plus": {
"oauth": {
"weixin": {
"appid": "请填写你的自己的appid",
"appsecret": "请填写你的自己的appsecret"
},
"apple": {
"bundleId": "请填写你的自己的bundleId"
}
}
}
}
}
```
2.
根目录下的
`/uni_modules.config.json`
配置如下:
```
{
"scripts":{
"preupload": "node uni_modules_tools/main.js change",
"postupload": "node uni_modules_tools/main.js recovery"
}
}
```
3.
项目依赖hjson-js需要在uni_modules_tools目录,执行npm install完成依赖的安装
#### 测试方式
-
在项目根目录直接执行
`node uni_modules_tools/main.js change`
即可测试修改相关配置的效果
-
在项目根目录直接执行
`node uni_modules_tools/main.js recovery`
即可测试恢复相关配置的效果
> 本插件中使用了[hjson-js](https://www.npmjs.com/package/hjson) 感谢@hjson-js的作者
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录