mirror of
https://github.com/msojocs/wechat-web-devtools-linux.git
synced 2025-07-22 00:00:04 +08:00
feat(docker): docker构建支持
This commit is contained in:
parent
e92e107512
commit
40ea14f4e3
@ -1,27 +1,19 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
root_dir=$(cd `dirname $0`/.. && pwd -P)
|
||||||
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
|
||||||
SOURCE="$(readlink "$SOURCE")"
|
|
||||||
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
||||||
done
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
|
||||||
|
|
||||||
cd $DIR/..
|
export WECHAT_DEVTOOLS_DIR="$root_dir/nwjs"
|
||||||
|
|
||||||
export WECHAT_DEVTOOLS_DIR="$DIR/../nwjs"
|
|
||||||
export APPDATA="$( echo ~ )/.config/wechat_devtools"
|
export APPDATA="$( echo ~ )/.config/wechat_devtools"
|
||||||
export PATH="$DIR/../wine:$DIR/../node/bin:$DIR/../nwjs:$PATH"
|
export PATH="$root_dir/wine:$root_dir/node/bin:$root_dir/nwjs:$PATH"
|
||||||
|
|
||||||
# LANG=zh_CN.UTF-8 exec "$DIR"/../nwjs/nw --load-extension="$DIR"/../nwjs/package.nw/js/ideplugin "$@"
|
# LANG=zh_CN.UTF-8 exec "$DIR"/../nwjs/nw --load-extension="$DIR"/../nwjs/package.nw/js/ideplugin "$@"
|
||||||
|
|
||||||
EXTENSION1="--load-extension=$DIR/../nwjs/package.nw/js/ideplugin"
|
EXTENSION1="--load-extension=$root_dir/nwjs/package.nw/js/ideplugin"
|
||||||
EXTENSION2="--load-extension=$( echo ~ )/.config/wechat_devtools/WeappPlugin" # 调试器AppData与Storage可用
|
EXTENSION2="--load-extension=$( echo ~ )/.config/wechat_devtools/WeappPlugin" # 调试器AppData与Storage可用
|
||||||
INSPECTOR1="--custom-devtools-frontend=file://$DIR/../nwjs/package.nw/js/ideplugin/inspector" # 要加file://指明为本地文件路径
|
INSPECTOR1="--custom-devtools-frontend=file://$root_dir/package.nw/js/ideplugin/inspector" # 要加file://指明为本地文件路径
|
||||||
INSPECTOR2="--custom-devtools-frontend=file://$( echo ~ )/.config/wechat_devtools/WeappPlugin/inspector/"
|
INSPECTOR2="--custom-devtools-frontend=file://$( echo ~ )/.config/wechat_devtools/WeappPlugin/inspector/"
|
||||||
USERDATADIR="$( echo ~ )/.config/wechat_devtools"
|
USERDATADIR="$( echo ~ )/.config/wechat_devtools"
|
||||||
|
|
||||||
# "$@"参数
|
# "$@"参数
|
||||||
LANG=zh_CN.UTF-8
|
LANG=zh_CN.UTF-8
|
||||||
exec "$DIR"/../nwjs/nw $DIR/../package.nw $EXTENSION2 $INSPECTOR1 "$@"
|
exec "$root_dir/nwjs/nw" $root_dir/package.nw $EXTENSION1 $INSPECTOR1 "$@"
|
7
docker-compose.yml
Normal file
7
docker-compose.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: node:16.13.1
|
||||||
|
volumes:
|
||||||
|
- .:/workspace
|
||||||
|
entrypoint: /workspace/docker/entrypoint
|
64
docker/entrypoint
Normal file
64
docker/entrypoint
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e # 命令出错就退出
|
||||||
|
trap 'catchError $LINENO $BASH_COMMAND' SIGHUP SIGINT SIGQUIT EXIT # 捕获错误情况
|
||||||
|
|
||||||
|
catchError() {
|
||||||
|
exit_code=$?
|
||||||
|
if [ $exit_code -ne 0 ]; then
|
||||||
|
fail "\033[31mcommand: $2\n at $0:$1\n at $STEP\033[0m"
|
||||||
|
fi
|
||||||
|
exit $exit_code
|
||||||
|
}
|
||||||
|
|
||||||
|
success() {
|
||||||
|
echo -e "\033[42;37m 成功 \033[0m $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo -e "\033[41;37m 失败 \033[0m $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "start"
|
||||||
|
python --version
|
||||||
|
node --version
|
||||||
|
|
||||||
|
echo "\
|
||||||
|
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free\
|
||||||
|
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
|
||||||
|
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free\
|
||||||
|
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
|
||||||
|
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free\
|
||||||
|
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
|
||||||
|
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free\
|
||||||
|
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
|
||||||
|
"> /etc/apt/sources.list
|
||||||
|
|
||||||
|
apt-get clean; # 清空缓存
|
||||||
|
apt-get update; # 更新
|
||||||
|
apt-get install -y libx11-dev libxkbfile-dev
|
||||||
|
|
||||||
|
hash node-gyp 2>/dev/null || {
|
||||||
|
echo >&2 "I require node-gyp but it's not installed. Installing.";
|
||||||
|
npm install -g node-gyp
|
||||||
|
}
|
||||||
|
node-gyp list
|
||||||
|
|
||||||
|
|
||||||
|
# test
|
||||||
|
# cd /
|
||||||
|
# mkdir -p test
|
||||||
|
# rm -rf test.a
|
||||||
|
# exec /workspace/tools/rebuild-node-modules
|
||||||
|
|
||||||
|
# exit 0;
|
||||||
|
# end test
|
||||||
|
|
||||||
|
cd /workspace
|
||||||
|
hash 7z 2>/dev/null || {
|
||||||
|
echo >&2 "I require 7z but it's not installed. Installing.";
|
||||||
|
apt-get update
|
||||||
|
apt-get install p7zip-full -y
|
||||||
|
}
|
||||||
|
export https_proxy="http://192.168.249.236:7890"
|
||||||
|
exec ./tools/setup-wechat-devtools-bash
|
21
readme.md
21
readme.md
@ -42,7 +42,26 @@ Docker容器启动方法
|
|||||||
|
|
||||||
如需要映射外部目录,请自行修改Docker启动命令
|
如需要映射外部目录,请自行修改Docker启动命令
|
||||||
|
|
||||||
# 构筑方法1(推荐,支持断点续传)
|
# 构筑方法0(推荐,支持断点续传)
|
||||||
|
|
||||||
|
1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`;
|
||||||
|
2. 请安装`docker` `docker-compose`
|
||||||
|
3. 克隆本项目:
|
||||||
|
```
|
||||||
|
git clone https://github.com/jiyeme/wechat-devtools.git
|
||||||
|
```
|
||||||
|
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
||||||
|
```
|
||||||
|
docker-compose up
|
||||||
|
```
|
||||||
|
5. 在本地项目目录中执行如下的语句,可以安装应用图标(非必须):
|
||||||
|
```
|
||||||
|
./tools/install-desktop-icon-node
|
||||||
|
```
|
||||||
|
|
||||||
|
之后即可通过点击应用图标启动微信开发者工具,也可以运行`bin/wechat-devtools`通过命令行启动
|
||||||
|
|
||||||
|
# 构筑方法1(支持断点续传)
|
||||||
|
|
||||||
1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`;
|
1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`;
|
||||||
2. 请安装nodejs,并配置到PATH环境变量中;
|
2. 请安装nodejs,并配置到PATH环境变量中;
|
||||||
|
9
test/linkDir
Normal file
9
test/linkDir
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
const path = require("path")
|
||||||
|
const fs = require("fs")
|
||||||
|
|
||||||
|
fs.symlinkSync(
|
||||||
|
path.resolve(__dirname, "../package.nw"),
|
||||||
|
path.resolve(__dirname, "../nwjs/package.nw")
|
||||||
|
|
||||||
|
)
|
@ -54,11 +54,12 @@ rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node"
|
|||||||
(cp -fr "${package_dir}/node_modules_tmp/node_modules/oniguruma" "${package_dir}/node_modules_tmp/node_modules/oniguruma-node")
|
(cp -fr "${package_dir}/node_modules_tmp/node_modules/oniguruma" "${package_dir}/node_modules_tmp/node_modules/oniguruma-node")
|
||||||
(cp -fr "${package_dir}/node_modules_tmp/node_modules/spdlog" "${package_dir}/node_modules_tmp/node_modules/spdlog-node")
|
(cp -fr "${package_dir}/node_modules_tmp/node_modules/spdlog" "${package_dir}/node_modules_tmp/node_modules/spdlog-node")
|
||||||
|
|
||||||
(cd "${package_dir}/node_modules_tmp/node_modules" && find -name *.node | xargs -I{} cp -r {} ${package_dir}/node_modules/{})
|
(cd "${package_dir}/node_modules_tmp/node_modules" && find -name "*.node" | xargs -I{} cp -r {} ${package_dir}/node_modules/{})
|
||||||
|
|
||||||
mkdir -p "${package_dir}/node_modules/vscode-ripgrep/bin"
|
mkdir -p "${package_dir}/node_modules/vscode-ripgrep/bin"
|
||||||
cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${package_dir}/node_modules/vscode-ripgrep/bin/rg"
|
cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${package_dir}/node_modules/vscode-ripgrep/bin/rg"
|
||||||
|
|
||||||
rm -fr "${package_dir}/node_modules_tmp"
|
rm -rf "${package_dir}/node_modules_tmp"
|
||||||
|
|
||||||
# 移除旧配置
|
# 移除旧配置
|
||||||
rm -fr ~/.config/wechat_devtools
|
# rm -fr ~/.config/wechat_devtools
|
||||||
|
@ -1,17 +1,38 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e # 命令出错就退出
|
||||||
|
trap 'catchError $LINENO $BASH_COMMAND' SIGHUP SIGINT SIGQUIT EXIT # 捕获错误情况
|
||||||
|
|
||||||
|
catchError() {
|
||||||
|
exit_code=$?
|
||||||
|
if [ $exit_code -ne 0 ]; then
|
||||||
|
fail "\033[31mcommand: $2\n at $0:$1\n at $STEP\033[0m"
|
||||||
|
fi
|
||||||
|
exit $exit_code
|
||||||
|
}
|
||||||
|
|
||||||
|
success() {
|
||||||
|
echo -e "\033[42;37m 成功 \033[0m $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo -e "\033[41;37m 失败 \033[0m $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
root_dir=$(cd `dirname $0`/.. && pwd -P)
|
root_dir=$(cd `dirname $0`/.. && pwd -P)
|
||||||
|
|
||||||
echo "==========Initializing node=========="
|
echo "==========Initializing node=========="
|
||||||
|
|
||||||
if [ -f "$root_dir/node/bin/node" ]; then
|
if [ -f "$root_dir/node/bin/node" ]; then
|
||||||
echo "node安装完毕"
|
success "node安装完毕"
|
||||||
else
|
else
|
||||||
exec "$root_dir/tools/update-node-node"
|
node "$root_dir/tools/update-node-node"
|
||||||
|
success "node ok"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$root_dir/node/bin/node" ]; then
|
if [ ! -f "$root_dir/node/bin/node" ]; then
|
||||||
echo "Node安装失败"
|
fail "Node安装失败"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -20,14 +41,14 @@ export PATH="$root_dir/node/bin":$PATH
|
|||||||
|
|
||||||
echo "==========Initializing nwjs=========="
|
echo "==========Initializing nwjs=========="
|
||||||
if [ -f "$root_dir/nwjs/nw" ]; then
|
if [ -f "$root_dir/nwjs/nw" ]; then
|
||||||
echo "nwjs安装完毕"
|
success "nwjs安装完毕"
|
||||||
else
|
else
|
||||||
exec "$root_dir/tools/update-nwjs-node"
|
node "$root_dir/tools/update-nwjs-node"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==========Initializing wechat-devtools package=========="
|
echo "==========Initializing wechat-devtools package=========="
|
||||||
if [ -f "$root_dir/package.nw/package.json" ]; then
|
if [ -f "$root_dir/package.nw/package.json" ]; then
|
||||||
echo "微信开发者工具安装完毕"
|
success "微信开发者工具安装完毕"
|
||||||
else
|
else
|
||||||
exec "$root_dir/tools/update-wechat-devtools-node"
|
node "$root_dir/tools/update-wechat-devtools-node"
|
||||||
fi
|
fi
|
@ -6,6 +6,7 @@ const fs = require("fs");
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
const { info } = require("console");
|
const { info } = require("console");
|
||||||
const util = require("util");
|
const util = require("util");
|
||||||
|
const {exit} = require("process")
|
||||||
|
|
||||||
const urls = {
|
const urls = {
|
||||||
stable: "https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html",
|
stable: "https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html",
|
||||||
@ -155,6 +156,9 @@ const extract = function (localPath) {
|
|||||||
stdio: "inherit",
|
stdio: "inherit",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
ext.on("error", code=>{
|
||||||
|
reject(code)
|
||||||
|
})
|
||||||
ext.on("close", (code) => {
|
ext.on("close", (code) => {
|
||||||
info(`解压完毕:${code}`);
|
info(`解压完毕:${code}`);
|
||||||
resolve(extractPath);
|
resolve(extractPath);
|
||||||
@ -179,7 +183,9 @@ const upgrade = function (extractPath) {
|
|||||||
execSync(`rm -rf ${extractPath}`);
|
execSync(`rm -rf ${extractPath}`);
|
||||||
|
|
||||||
if (fs.existsSync(path.resolve(__dirname, "../nwjs"))) {
|
if (fs.existsSync(path.resolve(__dirname, "../nwjs"))) {
|
||||||
if (!fs.existsSync(path.resolve(__dirname, "../nwjs/package.nw"))) {
|
if (!fs.statSync(__dirname, "../nwjs/package.nw").isSymbolicLink()) {
|
||||||
|
execSync(`rm -rf ${path.resolve(__dirname, "../nwjs/package.nw")}`)
|
||||||
|
console.log(`创建链接 ${path.resolve(__dirname, "../package.nw")}--->${path.resolve(__dirname, "../nwjs/package.nw")}`)
|
||||||
// 链接
|
// 链接
|
||||||
fs.symlinkSync(
|
fs.symlinkSync(
|
||||||
path.resolve(__dirname, "../package.nw"),
|
path.resolve(__dirname, "../package.nw"),
|
||||||
@ -229,14 +235,18 @@ const rebuild_wechat_devtools_node_modules = function () {
|
|||||||
info("Rebuilding wechat-devtools node modules");
|
info("Rebuilding wechat-devtools node modules");
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
spawn(path.resolve(__dirname, "rebuild-node-modules"), [], {
|
const e = spawn(path.resolve(__dirname, "rebuild-node-modules"), [], {
|
||||||
stdio: "inherit",
|
stdio: "inherit",
|
||||||
}).on("close", (code) => {
|
})
|
||||||
|
e.on("error", code=>{
|
||||||
|
reject(code)
|
||||||
|
})
|
||||||
|
e.on("close", (code) => {
|
||||||
console.info(`Rebuilding wechat-devtools node modules Result Code: ${code}`)
|
console.info(`Rebuilding wechat-devtools node modules Result Code: ${code}`)
|
||||||
if(0 === code)
|
if(0 === code)
|
||||||
resolve();
|
resolve();
|
||||||
else{
|
else{
|
||||||
reject()
|
reject(code)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user