From 1990a54a2d27f79bec2689e024cc288015555da0 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 5 Feb 2022 15:34:47 +0800 Subject: [PATCH] fix: Webview --- readme.md | 33 ++++++++++++++----------------- tools/fix-package-name-node | 4 ++-- tools/fix-webview-manager | 11 +++++++++++ tools/rebuild-node-modules | 7 ++++--- tools/update-wechat-devtools-node | 14 ++++++++++++- 5 files changed, 45 insertions(+), 24 deletions(-) create mode 100755 tools/fix-webview-manager diff --git a/readme.md b/readme.md index 5a4fb31..4094975 100644 --- a/readme.md +++ b/readme.md @@ -9,7 +9,7 @@ 本项目修改自:https://github.com/dragonation/wechat-devtools/ # 项目地址 -* https://github.com/msojocs/wechat-devtools +* https://github.com/msojocs/wechat-devtools-linux # 进度 @@ -18,20 +18,18 @@ # 使用方法 -可以在本项目的[发布](https://github.com/msojocs/wechat-devtools/releases)中,寻找已经构筑好了的`.tar.gz`包(发布里也有度盘链接),下载解压后,运行其中的`bin/wechat-devtools`即可运行。 +可以在本项目的[发布](https://github.com/msojocs/wechat-devtools-linux/releases)中,寻找已经构筑好了的`.tar.xz`包(发布里也有度盘链接),下载解压后,运行其中的`bin/wechat-devtools`即可运行。 -注:gitee上原来我也想放发布包的,但是文件太大了,附件最大只允许100M,而且总体积不能超过1G。所以目前暂时先只放github,如果大家发现下载速度慢的话,可以考虑科学上网或者度盘链接,速度快也稳定上传和下载。 # 系统要求 * 基于Linux的桌面系统,首选GNOME(其他的桌面环境可能会有问题,未测试) -* 安装有wine和wine-binfmt支持,建议版本在5.0以上,低版本可能会存在有问题 +* 安装有wine支持,建议版本在5.0以上,低版本可能会存在有问题 * 非兼容版对glibc和libstdc++有一定的版本要求,glibc的版本要求2.3,libstdc++的版本要求3.4.26,发布包里已经预编译了的Linux原生Node模块有这个依赖。兼容版本对这两个系统库的要求则较低,如果发现非兼容版本运行有问题可以考虑尝试切换到兼容版本 -* 如果运行的是Docker镜像版本,请自行安装和编译Docker镜像(仅用于测试) # CLI支持 -在项目的`bin`目录中有`wechat-devtools-cli`命令,是微信开发者工具的命令行支持Linux版本。相关材料可以在[微信CLI命令行V2](https://developers.weixin.qq.com/miniprogram/dev/devtools/cli.html)上找到。 +在项目的`bin`目录中有`wechat-devtools-cli`命令,是微信开发者工具的命令行支持Linux版本。相关资料可以在[微信CLI命令行V2](https://developers.weixin.qq.com/miniprogram/dev/devtools/cli.html)上找到。 # Docker支持 @@ -46,15 +44,15 @@ Docker容器启动方法 如需要映射外部目录,请自行修改Docker启动命令 -# 构筑方法0(推荐,支持断点续传) +# 构筑方法0(推荐) 理论上此方法99%成功;在网络不稳定时容易失败(原因懂得都懂) -1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`; +1. 请先在Linux环境中自行安装`wine`; 2. 请安装`docker` `docker-compose` 3. 克隆本项目: ``` -git clone https://github.com/msojocs/wechat-devtools.git +git clone https://github.com/msojocs/wechat-devtools-linux.git ``` 4. 在本地项目目录中执行如下的语句,构筑开发者工具: ``` @@ -67,15 +65,15 @@ docker-compose up 之后即可通过点击应用图标启动微信开发者工具,也可以运行`bin/wechat-devtools`通过命令行启动 -# 构筑方法1(支持断点续传) +# 构筑方法1 -由于使用到`node-gyp`,此方法会受`python`、`node`版本影响出现一些难以预料的异常(比如使用`node15.0.1`时,大部分模块构建会被忽略,但没有任何报错信息)。但是,`Docker`构建方式会帮你处理好这些问题。 +由于使用到`node-gyp` `nw-gyp`,此方法会受`python`、`node`版本影响出现一些难以预料的异常(比如使用`node15.0.1`时,大部分模块构建会被忽略,但没有任何报错信息)。但是,`Docker`构建方式会帮你处理好这些问题。 -1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`; -2. 请安装nodejs,并配置到PATH环境变量中; +1. 请先在Linux环境中自行安装`wine`; +2. 请安装nodejs,并配置到PATH环境变量中,版本不限; 3. 克隆本项目: ``` -git clone https://github.com/msojocs/wechat-devtools.git +git clone https://github.com/msojocs/wechat-devtools-linux.git ``` 4. 在本地项目目录中执行如下的语句,构筑开发者工具: ``` @@ -90,20 +88,19 @@ git clone https://github.com/msojocs/wechat-devtools.git # 与其他Linux下的微信开发者工具版本区别 -1. 支持最新版本,并个人会持续更新,确保运行和测试OK才会上传Release; +1. 支持最新版本,并个人会持续更新,在添加新的tag时,actions会自动构建并上传Release; 2. 自己制作了一个看得过去的图标,官方的太丑了; 3. 核心构筑过程完全开源,可以自行修改; 4. 修复了nwjs上关于Menu的段错误,确保最新版本可以正常启动; 5. 在构筑过程中会重新编译node_modules,确保原生模块可以在Linux上正确运行; 6. 可以随时更新开发者工具中的node和nwjs版本; 7. 下载更新可以支持断点再续,并使用了taobao国内的npm源,加速下载; -8. 使用了更为严谨的JS代码来控制整个构筑过程,避免Shell中出现的各类异常; -9. 手工做了一些VSCode编辑器界面的文字汉化(有些菜单很奇怪的腾讯没有汉化掉)。 +8. 使用了更为严谨的JS代码来控制整个构筑过程,避免Shell中出现的各类异常。 # 后续计划 1. 增加Docker镜像的稳定性(对Host要求比较高) -2. [处理计划](https://github.com/msojocs/wechat-devtools/projects?type=beta) +2. [处理计划](https://github.com/msojocs/wechat-devtools-linux/projects?type=beta) # FAQ [GO](docs/FAQ.MD) diff --git a/tools/fix-package-name-node b/tools/fix-package-name-node index a980acf..73acd27 100755 --- a/tools/fix-package-name-node +++ b/tools/fix-package-name-node @@ -14,8 +14,8 @@ const parseFile = function (path) { content.name = "wechat_devtools"; // 开启调试,更新参数 - content['chromium-args'] = content['chromium-args'].replace('--disable-devtools', '').replace('--ignore-gpu-blacklist', '--ignore-gpu-blocklist') + ' --mixed-context' - content.window.height = content.window.width = 500 + content['chromium-args'] = content['chromium-args'].replace('--disable-devtools', '').replace('--ignore-gpu-blacklist', '--ignore-gpu-blocklist') + ' --mixed-context' + content.window.height = content.window.width = 1000 fs.writeFileSync(path, JSON.stringify(content)); }; diff --git a/tools/fix-webview-manager b/tools/fix-webview-manager new file mode 100755 index 0000000..40ced5b --- /dev/null +++ b/tools/fix-webview-manager @@ -0,0 +1,11 @@ +#!/bin/bash + +# 修复 webview manager +# 此bug导致一下功能异常: +# 1. 代码依赖分析不可用 +# 2. 拓展中的“SERVICE MARKET RECOMMENDS”功能不可用 + + +root_dir=$(cd `dirname $0`/.. && pwd -P) +package_dir="$root_dir/package.nw" +sed -i 's#module.exports = createWebviewManager;#module.exports = createWebviewManager,( /** @type {any} */ (window)).createWebviewManager = createWebviewManager;#g' "$package_dir/js/libs/vseditor/webview-resource/main.js" \ No newline at end of file diff --git a/tools/rebuild-node-modules b/tools/rebuild-node-modules index 3003438..16d283b 100755 --- a/tools/rebuild-node-modules +++ b/tools/rebuild-node-modules @@ -102,12 +102,13 @@ cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${p # wcc wcsc # 预览编译 -# cd "${package_dir}/js/vendor/" && rm -rf "wcc.exe" "wcsc.exe" +# cd "${package_dir}/js/vendor/" && rm -rf "wcc.exe" # cp "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcc" "${package_dir}/js/vendor/wcc.exe" +# wcc_md5=$( md5sum wcc.exe|cut -d ' ' -f1 ) && \ +# sed -i 's/wcc.exe": ".*"/wcc.exe": "'"${wcc_md5}"'"/g' "config.json" +# cd "${package_dir}/js/vendor/" && rm -rf "wcsc.exe" # cp "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcsc" "${package_dir}/js/vendor/wcsc.exe" # cd "${package_dir}/js/vendor" && \ -# wcc_md5=$( md5sum wcc.exe|cut -d ' ' -f1 ) && \ -# sed -i 's/wcc.exe": ".*"/wcc.exe": "'"${wcc_md5}"'"/g' "config.json" && \ # wcsc_md5=$( md5sum wcsc.exe|cut -d ' ' -f1 ) && \ # sed -i 's/wcsc.exe": ".*"/wcsc.exe": "'"${wcsc_md5}"'"/g' "config.json" diff --git a/tools/update-wechat-devtools-node b/tools/update-wechat-devtools-node index 046e175..4a232f7 100755 --- a/tools/update-wechat-devtools-node +++ b/tools/update-wechat-devtools-node @@ -232,7 +232,7 @@ const patch_wechat_devtools_CLI = function () { }); }; const patch_wechat_devtools_core = function () { - info("Patching wechat-devtools CLI supports"); + info("Patching wechat-devtools cloud console supports"); return new Promise((resolve, reject) => { spawn(path.resolve(__dirname, "fix-cloudconsole"), [], { @@ -242,6 +242,17 @@ const patch_wechat_devtools_core = function () { }); }); }; +const patch_wechat_devtools_webview = function () { + info("Patching wechat-devtools webview supports"); + + return new Promise((resolve, reject) => { + spawn(path.resolve(__dirname, "fix-webview-manager"), [], { + stdio: "inherit", + }).on("close", (code) => { + resolve(); + }); + }); +}; const rebuild_wechat_devtools_node_modules = function () { info("Rebuilding wechat-devtools node modules"); @@ -306,6 +317,7 @@ const start = async () => { await patch_wechat_devtools_editor_selection_autocopy(); await patch_wechat_devtools_CLI(); await patch_wechat_devtools_core(); + await patch_wechat_devtools_webview(); await rebuild_wechat_devtools_node_modules(); await patch_wechat_devtools(); await patch_wcc_wcsc();