Compare commits

..

No commits in common. "master" and "v1.05.2203070-10" have entirely different histories.

200 changed files with 81796 additions and 1933 deletions

View File

@ -1,41 +0,0 @@
---
name: 报告Bug
about: 如果阁下提交的 `issue` 属于bug但没有按模板提交那么将会被忽略或删除
title: ''
labels: bug
assignees: ''
---
**预先准备**
1. 删除 `~/.config/wechat-devtools` 目录,重新打开项目(若发布 `issue` 即默认阁下执行了此操作且问题没有解决);
2. HelloWorld是否正常登录状态新建默认项目,执行复现步骤):正常/不正常
3. ***注意如果你的问题是编译器错误那么请提供可复现的demo否则会被直接关闭。***
**问题描述**
<!-- 请对问题做一个简单描述。 -->
**问题复现**
<!-- 复现问题需要进行的操作: -->
1. 打开项目
2. 点击 '....'
3. 看到问题
**期望的效果**
<!-- 经过上述操作你希望得到的结果. -->
**截屏**
<!-- 添加截图图片有助于解释您的问题,请尽量将整个开发工具都涵括在截图在(复制图片后直接粘贴将自动上传图片)。 -->
**版本信息 (这是必要的):**
- OS: e.g. manjaro
- Package: e.g. xxx_wine.tar.gz
- Wine Version: e.g. 7 可选
**代码片段**
<!-- 提供代码片段对维护者定位与修复问题有极大帮助;
若阁下不能提供,且维护者不能复现问题,那么阁下的`issue`将被搁置或者关闭。
[查看创建代码片段的教程](https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html) -->
**额外的信息**
<!-- 一些关于此问题的额外信息。 -->

40
.github/ISSUE_TEMPLATE/bug_report_cn.md vendored Normal file
View File

@ -0,0 +1,40 @@
---
name: 报告Bug
about: 如果阁下提交的`issue`属于bug但没有按模板提交那么将会被忽略或删除
title: ''
labels: bug
assignees: ''
---
**预先准备**
1. 删除`~/.config/wechat-devtools`目录,重新打开项目(若发布`issue`即默认阁下执行了此操作且问题没有解决);
2. HelloWorld是否正常登录状态新建默认项目,执行复现步骤):正常/不正常
**问题描述**
请对问题做一个简单描述。
**问题复现**
复现问题需要进行的操作:
1. 打开项目
2. 点击 '....'
3. 看到问题
**期望的效果**
经过上述操作你希望得到的结果.
**截屏**
添加截图图片有助于解释您的问题,请尽量将整个开发工具都涵括在截图在(复制图片后直接粘贴将自动上传图片)。
**版本信息 (这是必要的):**
- OS: e.g. manjaro
- Package: e.g. xxx_wine.tar.gz
- Wine Version: e.g. 7 可选
**代码片段**
提供代码片段对维护者定位与修复问题有极大帮助;
若阁下不能提供,且维护者不能复现问题,那么阁下的`issue`将被搁置或者关闭。
[查看创建代码片段的教程](https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
**额外的信息**
一些关于此问题的额外信息。

View File

@ -1,66 +0,0 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build DEB Package
on:
workflow_dispatch:
workflow_call:
jobs:
build-deb:
name: Build DEB Package
runs-on: ubuntu-latest
strategy:
matrix:
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
# https://stackoverflow.com/questions/61096521/how-to-use-gpg-key-in-github-actions
# gpg --generate-key
# gpg --export-secret-keys YOUR_ID_HERE | base64 > private.key
- name: Configure GPG Key
run: |
echo -n "$GPG_SIGNING_KEY" | base64 --decode | gpg --import
gpg --list-secret-keys jiyecafe@gmail.com
env:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
- name: Prepare
run: |
sudo apt update -y
sudo apt-get install -y build-essential fakeroot devscripts debhelper # debmake lintian pbuilder
- name: Build Deb Package
run: |
export BUILD_VERSION=${{ steps.tag.outputs.tag }}
ls -l
mkdir -p tmp/build
export WINE=false
tools/build-prepare.sh
env WINE=false tools/build-deepin.sh ${{ steps.tag.outputs.tag }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
# Artifact name
name: wechat-devtools-deb-${{ matrix.ARCH }}.build
path: tmp/build

View File

@ -1,88 +0,0 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build Base Packages
on:
workflow_dispatch:
workflow_call:
jobs:
build-src:
name: Build Base Packages
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
- name: Prepare
run: |
echo "$UID, $GID"
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
- name: Build
run: |
export ACTION_MODE=true
ls -l
export WINE=false
tools/build-with-docker.sh
- name: Compress Resources
run: |
ls -l
mkdir -p tmp/src
rm -rf nwjs/node nwjs/node.exe
cp node/bin/node nwjs/node
cd nwjs && ln -s node node.exe
cd ..
tar -zcf tmp/src/src-linux.tar.gz bin nwjs package.nw tools
- name: Compress nodegit
run: |
ls -l
mkdir -p tmp/build
cp -r package.nw/node_modules/nodegit .
tar -zcf nodegit.tar.gz nodegit
mv nodegit.tar.gz tmp/build
cd tmp/build
ls -l
- name: View Directory
run: |
ls -l
- name: Upload src artifact
uses: actions/upload-artifact@v4
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.src
path: tmp/src
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.build
path: tmp/build

View File

@ -1,66 +0,0 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build tar.gz AppImage
on:
workflow_dispatch:
workflow_call:
jobs:
build-tar:
name: Build tar.gz AppImage
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Inspect directory after downloading artifacts
run: |
ls -alFR wechat-devtools-*.build
ls -alFR wechat-devtools-*.src
- name: Prepare
run: |
sudo apt install -y fuse
echo "$UID, $GID"
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
- name: Build
run: |
export WINE=false
export ACTION_MODE=true
# tar.gz AppImage
ls -l
mkdir -p tmp/build
tools/build-prepare.sh
tools/build-release.sh ${{ matrix.ARCH }} ${{ steps.tag.outputs.tag }}
- name: View Directory
run: |
ls -l
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
# Artifact name
name: wechat-devtools-simple-${{ matrix.ARCH }}.build
path: tmp/build

46
.github/workflows/flatpak-verify.yml vendored Normal file
View File

@ -0,0 +1,46 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Flatpak Verify
on:
release:
types: [published]
push:
tags:
- v*
branches: [ master, dev]
pull_request:
branches: [ master ]
# # Allows you to run this workflow manually from the Actions tab
# workflow_dispatch:
jobs:
flatpak:
name: "Flatpak"
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:freedesktop-21.08
options: --privileged
strategy:
matrix:
arch: [x86_64]
# Don't fail the whole workflow if one architecture fails
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Test
run: |
cat /etc/issue
yum install -y p7zip p7zip-plugins
7z
# Docker is required by the docker/setup-qemu-action which enables emulation
- name: Install deps
run: |
dnf -y install docker
- uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4
with:
bundle: wechat-devtools.flatpak
manifest-path: io.github.msojocs.wechat-devtools.yml
cache-key: flatpak-builder-${{ github.sha }}
arch: ${{ matrix.arch }}

View File

@ -1,7 +1,7 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build Packages Linux name: Build Packages
on: on:
release: release:
@ -9,11 +9,7 @@ on:
push: push:
tags: tags:
- v* - v*
branches: [ master, dev, ci, skyline] branches: [ master, dev]
paths-ignore:
- 'README.MD'
- 'CHANGELOG.MD'
- 'docs/**'
pull_request: pull_request:
branches: [ master ] branches: [ master ]
# # Allows you to run this workflow manually from the Actions tab # # Allows you to run this workflow manually from the Actions tab
@ -21,29 +17,328 @@ on:
jobs: jobs:
build-src: build-src:
uses: ./.github/workflows/build-src.yml name: Build Base Packages
secrets: inherit runs-on: ubuntu-latest
strategy:
matrix:
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
- name: Test
run: |
echo "$UID, $GID"
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
- name: Build
run: |
export ACTION_MODE=true
export DOCKER_UID=$UID
export DOCKER_GID=$GID
ls -l
export NO_WINE=false
docker-compose up
- name: Compress Resources
run: |
ls -l
mkdir -p tmp/src
rm -rf nwjs/node nwjs/node.exe
cp node/bin/node nwjs/node
cd nwjs && ln -s node node.exe
cd ..
tar -zcf tmp/src/src-wine.tar.gz bin nwjs package.nw tools
export NO_WINE=true
"tools/fix-core.sh"
"tools/fix-other.sh"
tar -zcf tmp/src/src-no-wine.tar.gz bin nwjs package.nw tools
- name: Compress nodegit compiler
run: |
ls -l
mkdir -p tmp/build
cp -r package.nw/node_modules/nodegit .
sudo rm -rf compiler/test
tar -zcf compiler.tar.gz compiler
tar -zcf nodegit.tar.gz nodegit
mv nodegit.tar.gz tmp/build
mv compiler.tar.gz tmp/build
cd tmp/build
ls -l
- name: View Directory
run: |
ls -l
- name: Upload artifact
uses: actions/upload-artifact@v2.3.1
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.src
path: tmp/src
- name: Upload artifact
uses: actions/upload-artifact@v2.3.1
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.build
path: tmp/build
build-tar: build-tar:
name: Build tar.gz AppImage
needs: needs:
- build-src - build-src
uses: ./.github/workflows/build-tar.yml runs-on: ubuntu-latest
secrets: inherit
strategy:
matrix:
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v2
- name: Test
run: |
echo "$UID, $GID"
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
- name: Build
run: |
export NO_WINE=false
export ACTION_MODE=true
# tar.gz AppImage
ls -l
mkdir -p tmp/build
tools/build-prepare.sh
tools/build-release.sh ${{ matrix.ARCH }} ${{ steps.tag.outputs.tag }}
- name: View Directory
run: |
ls -l
- name: Upload artifact
uses: actions/upload-artifact@v2.3.1
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.build
path: tmp/build
# build-deb:
# name: Build Deb Package
# needs:
# - build-src
# runs-on: ubuntu-18.04
# strategy:
# matrix:
# ARCH: ['x86_64']
# # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
# steps:
# - uses: actions/checkout@v2
# - name: Download artifacts
# uses: actions/download-artifact@v2
# - name: Generate TAG
# id: Tag
# run: |
# tag='continuous'
# name='Continuous Build'
# if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
# tag='${{ github.ref_name }}'
# name='${{ github.ref_name }}'
# fi
# echo "tag result: $tag - $name"
# echo "::set-output name=tag::$tag"
# echo "::set-output name=name::$name"
# - name: Build Deb Package
# run: |
# export BUILD_VERSION=${{ steps.tag.outputs.tag }}
# ls -l
# mkdir -p tmp/build
# tools/build-prepare.sh
# tools/build-deb.sh ${{ steps.tag.outputs.tag }}
# export NO_WINE=true
# tools/build-prepare.sh
# tools/build-deb.sh ${{ steps.tag.outputs.tag }}
# - name: Upload artifact
# uses: actions/upload-artifact@v2.3.1
# with:
# # Artifact name
# name: wechat-devtools-${{ matrix.ARCH }}.build
# path: tmp/build
build-deb: build-deb:
name: Build DEB Package
needs: needs:
- build-src - build-src
uses: ./.github/workflows/build-deb.yml runs-on: ubuntu-18.04
secrets: inherit
strategy:
matrix:
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v2
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
# https://stackoverflow.com/questions/61096521/how-to-use-gpg-key-in-github-actions
- name: Configure GPG Key
run: |
echo -n "$GPG_SIGNING_KEY" | base64 --decode | gpg --import
env:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
- name: Build Deb Package
run: |
sudo apt-get install -y build-essential fakeroot devscripts git git-buildpackage debhelper debmake lintian pbuilder
export BUILD_VERSION=${{ steps.tag.outputs.tag }}
ls -l
mkdir -p tmp/build
tools/build-prepare.sh
env NO_WINE=false tools/build-deepin.sh ${{ steps.tag.outputs.tag }}
export NO_WINE=true
tools/build-prepare.sh
env NO_WINE=true tools/build-deepin.sh ${{ steps.tag.outputs.tag }}
- name: Upload artifact
uses: actions/upload-artifact@v2.3.1
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.build
path: tmp/build
build-arch:
name: Build ArchLinux Package
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
node-version: [16.x]
ARCH: ['x86_64']
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Prepare
run: |
npm install node-gyp nw-gyp npm -g
node-gyp install
cat /etc/passwd
- name: Generate TAG
id: Tag
run: |
tag='continuous'
name='Continuous Build'
if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then
tag='${{ github.ref_name }}'
name='${{ github.ref_name }}'
fi
echo "tag result: $tag - $name"
echo "::set-output name=tag::$tag"
echo "::set-output name=name::$name"
- name: Build ArchLinux Package
uses: countstarlight/arch-makepkg-action@master
env:
BUILD_VERSION: ${{ steps.tag.outputs.tag }}
with:
repos: >
archlinuxcn=https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
before: "tools/build-aur.sh && sudo pacman -S --noconfirm archlinuxcn-keyring"
packages: >
gconf
p7zip
libxkbfile
python2
openssl
gcc
make
libssh2
krb5
scripts: "cd tmp/AUR && makepkg && ls -l && cd ../../"
- name: Fix Permissions
run: |
sudo chmod -R 0777 tmp
mkdir -p tmp/build
mv tmp/AUR/*.pkg.* tmp/build
cd tmp/build
for file in `ls *.pkg.*`;do mv $file `echo $file|sed 's/:/-/g'`;done;
ls -l
- name: Upload artifact
uses: actions/upload-artifact@v2.3.1
with:
# Artifact name
name: wechat-devtools-${{ matrix.ARCH }}.build
path: tmp/build
upload: upload:
name: Create release and upload artifacts name: Create release and upload artifacts
needs: needs:
- build-tar - build-tar
- build-deb - build-deb
# - build-snap # - build-deepin
# - build-arch - build-arch
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Download artifacts - name: Download artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v2
- name: Inspect directory after downloading artifacts - name: Inspect directory after downloading artifacts
run: ls -alFR run: ls -alFR
@ -65,10 +360,9 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
sudo apt install -y fuse
wget -q https://github.com/TheAssassin/pyuploadtool/releases/download/continuous/pyuploadtool-x86_64.AppImage wget -q https://github.com/TheAssassin/pyuploadtool/releases/download/continuous/pyuploadtool-x86_64.AppImage
chmod +x pyuploadtool-x86_64.AppImage chmod +x pyuploadtool-x86_64.AppImage
./pyuploadtool-x86_64.AppImage **build/WeChat*.AppImage **build/*.tar.gz **build/*.deb ./pyuploadtool-x86_64.AppImage **build/WeChat*.AppImage **build/*.tar.gz **build/*.deb **build/*.pkg.*
- name: Release - name: Release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
@ -82,3 +376,4 @@ jobs:
**build/WeChat*.AppImage **build/WeChat*.AppImage
**build/*.tar.gz **build/*.tar.gz
**build/*.deb **build/*.deb
**build/*.pkg.*

1
.gitignore vendored
View File

@ -19,3 +19,4 @@ temp.sh
.flatpak-builder .flatpak-builder
build-dir build-dir
__pycache__ __pycache__
*.txt

6
.vscode/launch.json vendored
View File

@ -8,8 +8,8 @@
"type": "nwjs", "type": "nwjs",
"request": "launch", "request": "launch",
"name": "Launch NWjs", "name": "Launch NWjs",
"nwjsVersion": "0.55.0", "nwjsVersion": "0.49.3",
"webRoot": "${workspaceFolder}/package.nw", "webRoot": "${workspaceFolder}/compiler/test/package.nw",
"reloadAfterAttached": true, "reloadAfterAttached": true,
"runtimeArgs": [ "runtimeArgs": [
// "--load-extension=${workspaceFolder}/tmp/data/WeappPlugin", // "--load-extension=${workspaceFolder}/tmp/data/WeappPlugin",
@ -21,7 +21,7 @@
"LANG": "zh_CN.UTF-8" "LANG": "zh_CN.UTF-8"
}, },
"userDataDir": false, "userDataDir": false,
"runtimeExecutable": "${workspaceFolder}/nwjs/nw" "runtimeExecutable": "${workspaceFolder}/cache/wechat_devtools_1.05.2203070_x64/wechatdevtools.exe"
} }
] ]
} }

View File

@ -1,261 +0,0 @@
# 1.06.2504010-3 / 2025-07-
- refactor: 重构主题监听处理方案
# 1.06.2504010-2 / 2025-07-15
- fix: cli使用异常。#147
# 1.06.2504010-1 / 2025-07-05
- fix: 更新弹窗无法关闭。
- update: devtools to v1.06.2504010
# 1.06.2503290-3 / 2025-05-23
- update: compiler(Linux) v0.1.5
- fix: worker无法使用 #145
# 1.06.2503290-2 / 2025-05-02
- update: compiler(Linux) v0.1.4
# 1.06.2503290-1 / 2025-04-30
- update: node v16.11.0 (解决codebuddy无法使用。)
- perf: 替换float-pigment。
- update: devtools to v1.06.2503290
# 1.06.2412050-2 / 2025-02-17
- update: compiler(Linux) v0.1.3
# 1.06.2412050-1 / 2025-02-16
- update: devtools to v1.06.2412050
- update: compiler(Linux) v0.1.2
# 1.06.2412040-1 / 2025-01-16
- update: devtools to v1.06.2412040
# 1.06.2409140-3 / 2024-11-16
- fix: 多开实例会出现卡死的情况
# 1.06.2409140-2 / 2024-11-15
- perf: 不对Skyline插件进行初始化不会弹窗
# 1.06.2409140-1 / 2024-10-26
- update: devtools to v1.06.2409140
# 1.06.2407120-1 / 2024-09-28
- update: devtools to v1.06.2407120
# 1.06.2405020-4 / 2024-09-28
- fix: 视频无法播放的问题(#118
# 1.06.2405020-3 / 2024-08-10
- update: compiler(Linux) v0.1.1
# 1.06.2405020-2 / 2024-07-13
- fix: mock 面板按钮点击无反应
- update: compiler(Linux) v0.1.0
# 1.06.2405020-1 / 2024-07-07
- update: devtools to v1.06.2405020
- update: compiler(Linux) v0.0.9
# 1.06.2402040-1 / 2024-05-03
- update: devtools to v1.06.2402040
# 1.06.2310080-2 / 2024-01-02
- fix: AppImage的cli使用会闪退
# 1.06.2310080-1 / 2023-12-30
- fix: AppImage的cli使用会闪退
- update: devtools to v1.06.2310080
# 1.06.2308310-3 / 2023-12-24
- update: compiler(Linux) v0.0.7
# 1.06.2308310-2 / 2023-11-10
- update: compiler(Linux) v0.0.6
# 1.06.2308310-1 / 2023-09-30
- update: devtools to v1.06.2308310
# 1.06.2307260-2 / 2023-09-23
- update: compiler(Linux) v0.0.5
# 1.06.2307260-1 / 2023-09-09
- update: node-pty to v1.0.0
- update: devtools to v1.06.2307260
- update: compiler(Linux) v0.0.4
- dprecated: wine version
# 1.06.2306020-1 / 2023-06-04
- update: devtools to v1.06.2306020
# 1.06.2301040-1 / 2023-01-21
- update: devtools to v1.06.2301040
# 1.06.2209070-1 / 2022-09-09
- update: devtools to v1.06.2209070
# 1.06.2208010-1 / 2022-09-04
- update: devtools to v1.06.2208010
# 1.06.2207210-1 / 2022-09-03
- update: devtools to v1.06.2207210
- update: compiler
# 1.06.2206090-2 / 2022-06-15
- fix: deepin icon
# 1.06.2206090-1 / 2022-06-13
- update: devtools to v1.06.2206090
# 1.06.2206020-1 / 2022-06-03
- update: devtools to v1.06.2206020
# 1.05.2204250-2 / 2022-05-11
- fix: 修复wcc编译器不支持单文件编译的bug感谢 @2715851270 反馈)
- fix: 修复cli异常
# 1.05.2204250-1 / 2022-04-26
- update: devtools 1.05.2204250
- update: 跟进wcc编译器变更
# 1.05.2204180-2 / 2022-04-26
- feat: wcc,wcsc node模块懒加载template解析支持
- feat: wcc,wcsc node模块懒加载cut参数支持
# 1.05.2204180-1 / 2022-04-24
- update: devtools 1.05.2204180
- update: 跟进更新 wcc,wcsc node模块逻辑
- feat: wcc,wcsc编译器template解析支持
# 1.05.2203070-10 / 2022-04-22
- fix: 修正命令行入口
- fix: gsettings子进程未退出转为孤儿进程
- update: 优化主题监听
# 1.05.2203070-8 / 2022-04-10
- fix: 国内网络vscode-ripgrep安装失败的问题
- fix: 内部的更新检查界面无法正常使用(这个更新用处不大,仅用于让维护者知道存在更新)
- fix: 修复可能出现扩展宿主意外终止的问题
- feat: 主题深浅跟随系统变化感谢icepie的参与
- update: 更新nwjs与nodejs
# 1.05.2203070-7 / 2022-03-19
- fix: cli
- 兼容ubuntu16.04
# 1.05.2203070-6 / 2022-03-19
- feat: wcc node模块支持wxml引用
- feat: wcc node模块支持自定义函数名
# 1.05.2203070-5 / 2022-03-18
- fix: 增强wcsc编译器
# 1.05.2203070-4 / 2022-03-12
- add: 增加wine版本的deb包
# 1.05.2203070-3 / 2022-03-11
- fix: 修复wcc常量操作问题
- fix: 修复deb打包细节问题
# 1.05.2203070-2 / 2022-03-10
- feat: wcc编译器懒加载支持wxml引用
# 1.05.2203070-1 / 2022-03-08
- upgrade: devtools 1.05.2203070
- fix: 编译器异常信息显示不完全
# 1.05.2203030-2 / 2022-03-07
- refactor: 规范版本号
# 0.24 / 2022-03-05
- fix: 编译异常的问题
- 处理一些包相关细节
# 0.23 / 2022-03-05
- upgrade devtools to 1.05.2203030
# 0.22 / 2022-03-03
- refactor: 使用低版本环境构建deb,提升兼容性
# 0.21 / 2022-03-02
- add: deb aur 打包格式
# 0.20 / 2022-02-28
- fix: node模块中编译器的可执行权限
# 0.19 / 2022-02-28
- 过渡版本,存在问题
# 0.16 / 2022-02-24
- feat: wcc编译器路径异常
# 0.15 / 2022-02-23
- feat: wcc编译器支持`debugWXS`选项
# 0.14 / 2022-02-22
- feat: 正式添加node版本的编译器
# 0.13 / 2022-02-20
- feat: wine弱依赖版本
# 0.12 / 2022-02-16
- fix: 版本管理中的“在终端打开”不可用
# 0.11 / 2022-02-15
- add: appimage打包版本
# 0.10 / 2022-02-06
- fix: 二维码真机调试不可用
# 0.9 / 2022-02-05
- fix: 修复Webview组件涉及代码分析插件商店
# 0.8 / 2022-02-04
- fix: 云开发控制台不可用
# 0.7 / 2022-02-04
- add: 重新使用windows的编译器
# 0.6 / 2022-02-03
- fix: 可视化功能不可用
# 0.5 / 2022-02-02
- fix: 版本管理
- feat: node版本编译器
- remove: windows的编译器
# 0.4 / 2022-01-30
- fix: 创建终端时会崩溃的问题
# 0.3 / 2022-01-28
- 适配nwjs版本至0.53.1
# 0.2 / 2022-01-27
体验版

218
README.MD
View File

@ -1,218 +0,0 @@
<div align="center">
<img src="./res/icons/512x512.png" height="100px" width="100px"/>
<h3>微信开发者工具 Linux版</h3>
<br>
----
[![Node.js CI](https://github.com/msojocs/wechat-devtools-linux/actions/workflows/release.yml/badge.svg)](https://github.com/msojocs/wechat-devtools-linux/actions/workflows/release.yml)
[![wechat-tools](https://img.shields.io/badge/wechat--devtools-1.06.2503290-blue)](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
[![nwjs](https://img.shields.io/badge/nwjs-0.55.0-green)](https://nwjs.io/downloads/)
[![node](https://img.shields.io/badge/node-16.11.0-orange)](https://nodejs.org/en/)
这是微信开发者工具 Linux版
<br>
</div>
# 项目说明
本项目是一个完整的搭建Linux下可用的“微信开发者工具”的脚本和工具集
用于在Linux下的GNOME桌面上搭建可以持续更新和使用的“微信开发者工具”。
本项目修改自https://github.com/dragonation/wechat-devtools/
# 项目地址
* https://github.com/msojocs/wechat-web-devtools-linux
# 进度
当前工具可以在Linux上构筑最新版 `1.06.2503290`支持CLI模式。
另现在已经可以直接在设置界面里面修改字体,手工输入字体名称就可以。
# 功能测试记录
[测试记录](docs/Features.MD)
注意:
此测试仅在修复某项功能时测试通过,并不代表阁下在使用时是正常可用的;因为我没有精力在每个版本发布前进行一次测试。
在阁下遇到任何无法解决的问题时,请新建一个 [issue](https://github.com/msojocs/wechat-web-devtools-linux/issues/new/choose)
# 系统要求
* 基于Linux的桌面系统首选GNOME其他的桌面环境可能会有问题未测试
* CI自动构建的包对 glibc 和 libstdc++ 有一定的版本要求glibc 的版本要求>=2.23libstdc++ 的版本要求>=3.4.21
* ~~如果你下载的是 `wine` 版本,那么你需要安装有 `wine` `wine-binfmt` 支持建议版本在5.0以上,低版本可能会存在有问题~~
# CLI支持
在项目的 `bin` 目录中有 `wechat-devtools-cli` 脚本,是微信开发者工具的命令行支持 的Linux版本。相关资料可以在[微信CLI命令行V2](https://developers.weixin.qq.com/miniprogram/dev/devtools/cli.html)上找到。
# 使用方法
1. [在线安装](#在线安装)
2. 可以在本项目的[Release](https://github.com/msojocs/wechat-web-devtools-linux/releases)中,寻找已经构筑好了的软件包,下载使用。
如果`Release`版本存在问题,可以尝试[Continuous](https://github.com/msojocs/wechat-web-devtools-linux/releases/tag/continuous)版本,这是基于`master`分支的最新提交构建的,会及时修复一些 bug但也可能会带来新的 bug。
3. 你可以 [自行构建](#自行构建)
# 在线安装
目前支持以下平台:
1. 统信应用商店deepin
# 自行构建
> 注:
> 如果想构建 wine 版本,请添加环境变量:`export WINE=true` 。注意:不受支持。
## 方法0推荐
理论上此方法99%成功;在网络不稳定时容易失败(原因懂得都懂,构建过程已经尽量使用镜像源)
1. 如果构建 `wine` 版本请先在Linux环境中自行安装 `wine` `wine-binfmt`
2. 请安装 `docker` `docker-compose`
3. 克隆本项目:
```
git clone --recurse-submodules https://github.com/msojocs/wechat-web-devtools-linux.git
```
4. 在本地项目目录中执行如下的语句,构建开发者工具:
```
tools/build-with-docker.sh
```
5. 在本地项目目录中执行如下的语句,可以安装应用图标(非必须):
```
./tools/install-desktop-icon-node
```
之后即可通过点击应用图标启动微信开发者工具,也可以运行 `bin/wechat-devtools` 通过命令行启动
## 方法1
由于使用到 `node-gyp` `nw-gyp`,此方法会受 `python`、`node` 版本影响出现一些难以预料的异常(比如使用 `node15.0.1` 时,大部分模块构建会被忽略,但没有任何报错信息)。但是,`Docker` 构建方式会帮你处理好这些问题。
1. 如果构建 `wine` 版本请先在Linux环境中自行安装 `wine` `wine-binfmt`
2. 安装编译 `nodegit` 所需的依赖:`python2.7 python3.6及以上 libkrb5-dev gcc openssl libssh2-1-dev g++ make pkg-config`
另外 `7z` 旧版解压可能存在问题未测试最低版本号比如ubuntu16.04 自带的不行),请参考[`Dockerfile`](docker/Dockerfile)
3. 克隆本项目:
```
git clone --recurse-submodules https://github.com/msojocs/wechat-web-devtools-linux.git
```
4. 在本地项目目录中执行以下命令,构建开发者工具:
```
./tools/setup-wechat-devtools-bash
```
5. 在本地项目目录中执行如下的语句,可以安装应用图标(非必须):
```
./tools/install-desktop-icon-bash
```
之后即可通过点击应用图标启动微信开发者工具,也可以运行 `bin/wechat-devtools` 通过命令行启动
# 与其他Linux下的微信开发者工具版本区别
1. 支持最新版本并个人会持续更新在添加新的tag时actions会自动构建并上传Release
2. 核心构筑过程完全开源,可以自行修改;
3. 修复了nwjs上关于Menu的段错误确保最新版本可以正常启动 (by dragonation)
4. 在构筑过程中会重新编译node_modules确保原生模块可以在Linux上正确运行
5. 下载更新可以支持断点再续并使用了taobao国内的npm源加速下载稳定性待测试
6. 纯 Linux 支持,使用 cpp 实现模拟官方编译器。[wx-compiler](https://github.com/msojocs/wx-compiler)
# 后续计划
请参考: [处理计划](https://github.com/msojocs/wechat-devtools-linux/projects?type=beta)
# 移植相关
请参考: [移植流程记录](https://github.com/msojocs/wechat-web-devtools-linux/wiki)
# FAQ
请参考: [FAQ](docs/FAQ.MD)
# 界面截图
版本 1.05.2201240
![screenshot 1.03.2006090](res/screenshots/1.05.2201240.png)
版本 1.03.2006090
![screenshot 1.03.2006090](res/screenshots/1.03.2006090.jpg)
版本 1.02.2001191
![screenshot 1.02.2001191](res/screenshots/1.02.2001191.jpg)
# 赞赏
如果这个仓库让你感到舒适可以点个Star或者请这个 ~~菜鸡大学生~~ 打工人喝杯咖啡请尽量带上github昵称
![赞赏码](https://user-images.githubusercontent.com/20937135/154661198-93854dc1-c8ba-4c97-a7ab-9f8de26c0226.png)
# 感谢赞赏支持
时间倒序
| 赞赏人 | 赞赏 | 时间 |
|-------|---------|-----|
| returning | 10.00¥ | 2025-07-12 |
| 👍 | 10.00¥ | 2025-07-10 |
| hanwor | 20.00¥ | 2025-06-17 |
| 。。。 | 10.00¥ | 2025-03-29 |
| SakuraPuare | 20.00¥ | 2025-03-24 |
| [senseab](https://github.com/senseab) | 50.00¥ | 2024-12-21 |
| l | 10.00¥ | 2024-12-08 |
| lcurk0 | 50.00¥ | 2024-11-29 |
| [stvsl](https://github.com/stvsl) | 10.00¥ | 2024-11-26 |
| 仙人柱 | 50.00¥ | 2024-11-20 |
| [cabbage7th](https://github.com/cabbage7th) | 20.00¥ | 2024-10-06 |
| [shao4598](https://github.com/shao4598) | 50.00¥ | 2024-09-24 |
| [OWALabuy](https://github.com/OWALabuy) | 16.66¥ | 2024-08-28 |
| [wangvation](https://github.com/wangvation) | 50.00¥ | 2024-07-16 |
| 孤泉冷月 | 100.00¥ | 2024-07-12 |
| [liushuai05](https://github.com/liushuai05) | 88.00¥ | 2023-12-26 |
| LGTU | 10.00¥ | 2023-11-25 |
| [WRXinYue](https://github.com/WRXinYue) | 10 | 2023-11-09 |
| silentdoer | 50.00¥ | 2023-09-26 |
| ??? | 20 |2023-08-11 |
| Geequlim | 100 | 2023-07-12 |
| 对方正在输入 | 10 | 2023-04-28 |
| @DaqiongYang | 50 | 2023-03-29 |
| AInoob | 5 | 2023-01-30 |
| ??? | 5 | 2023-01-18 |
| 仙人柱 | 50.00¥ | 2022-08-09 |
| [guanzhengyinqin](https://github.com/guanzhengyinqin) | 20.00¥ | 2022-07-14 |
| [nsfoxer](https://github.com/nsfoxer) | 10.00¥ | 2022-06-30 |
| [chiiihc](https://github.com/chiiihc) | 5.00¥ | 2022-06-17 |
| [younland](https://github.com/younland) | 20.00¥ | 2022-06-15 |
| [chiiihc](https://github.com/chiiihc) | 5.00¥ | 2022-06-14 |
| 陈陈菌 | 10.00¥ | 2022-05-29 |
| WWW | 5.00¥ | 2022-05-26 |
| 南极の短尾猫 | 20.00¥ | 2022-05-22 |
| 猪宝的猪 | 20.00¥ | 2022-05-15 |
| finalwhy | 66.60¥ | 2022-05-09 |
| [CoryByte](https://github.com/Corybyte) | 5.00¥ | 2022-04-23 |
| [Starrah](https://github.com/Starrah) | 50.00¥ | 2022-04-12 |
| [zyk-miao](https://github.com/zyk-miao) | 5.00¥ | 2022-04-12 |
| [icepie](https://github.com/icepie) | 20.00¥ | 2022-04-08 |
| Milder | 50.00¥ | 2022-03-23 |
| . | 20.00¥ | 2022-03-21 |
| shaoxp | 5.00¥ | 2022-03-16 |
| 李喆 | 10.00¥ | 2022-03-05 |
| david | 5.00¥ | ??? |
# 免责声明
微信开发者工具版权归腾讯公司所有本项目旨在交流学习之用。如有不当之处请联系本人邮箱jiyecafe@gmail.com
## Stargazers over time
[![Stargazers over time](https://starchart.cc/msojocs/wechat-web-devtools-linux.svg)](https://starchart.cc/msojocs/wechat-web-devtools-linux)

View File

@ -37,7 +37,6 @@ clean_cache() {
echo "清理缓存"; echo "清理缓存";
rm -rf "$APPDATA/WeappCache"; rm -rf "$APPDATA/WeappCache";
rm -rf "$APPDATA/WeappVendor"; rm -rf "$APPDATA/WeappVendor";
rm -rf "$DATA_DIR/wechat_devtools"
} }
# 检测是否有清除缓存的必要 # 检测是否有清除缓存的必要
@ -53,11 +52,11 @@ else
fi; fi;
EXTENSION1="--load-extension=$root_dir/nwjs/package.nw/js/ideplugin" EXTENSION1="--load-extension=$root_dir/nwjs/package.nw/js/ideplugin"
EXTENSION2="--load-extension=$APPDATA/WeappPlugin/inspector" EXTENSION2=--load-extension=$APPDATA/WeappPlugin
INSPECTOR1="--custom-devtools-frontend=file://$root_dir/package.nw/js/ideplugin/inspector" # 要加file://指明为本地文件路径 INSPECTOR1="--custom-devtools-frontend=file://$root_dir/package.nw/js/ideplugin/inspector" # 要加file://指明为本地文件路径
INSPECTOR2="--custom-devtools-frontend=file://$APPDATA/WeappPlugin/inspector/" INSPECTOR2="--custom-devtools-frontend=file://$APPDATA/WeappPlugin/inspector/"
USERDATADIR="$APPDATA" USERDATADIR="$APPDATA"
# "$@"参数 # "$@"参数
LANG=zh_CN.UTF-8 LANG=zh_CN.UTF-8
exec "$root_dir/nwjs/nw" $root_dir/package.nw $EXTENSION1 $INSPECTOR1 "$@" exec "$root_dir/nwjs/nw" $root_dir/package.nw $EXTENSION2 $INSPECTOR1 "$@"

View File

@ -8,14 +8,12 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli
done done
root_dir="$( cd -P "$( dirname "$SOURCE" )"/.. >/dev/null 2>&1 && pwd )" root_dir="$( cd -P "$( dirname "$SOURCE" )"/.. >/dev/null 2>&1 && pwd )"
cd $root_dir/bin cd $root_dir
export WECHAT_DEVTOOLS_DIR="$root_dir/nwjs" export WECHAT_DEVTOOLS_DIR="$root_dir/nwjs"
export APPDATA="$root_dir/nwjs" export APPDATA="$root_dir/nwjs"
export PATH="$root_dir/node/bin:$root_dir/nwjs:$PATH" export PATH="$root_dir/wine:$root_dir/node/bin:$root_dir/nwjs:$PATH"
node $root_dir/package.nw/js/common/cli/index.js "$@" # node $root_dir/package.nw/js/common/cli/index.js "$@"
if [ ! -z "$APPIMAGE" ];then # const t=e.customScriptName?e.$0:o.basename(e.$0),
# AppImage在程序退出后会删除相关程序文件导致无法启动 echo "process.argv[1]='$root_dir/bin/wechat-devtools-cli';require('$root_dir/package.nw/js/common/cli/index.js')" | node - "$@"
tail -f /etc/issue
fi

27
bin/wechat-devtools-snap Normal file
View File

@ -0,0 +1,27 @@
#!/bin/bash
echo "SNAP 启动"
root_dir=$(cd `dirname $0`/.. && pwd -P)
echo "root_dir: $root_dir"
ls -l "$root_dir"
export WECHAT_DEVTOOLS_DIR="$root_dir/nwjs"
export APPDATA="$SNAP_USER_DATA/.config/wechat_devtools"
export PATH="$root_dir/wine:$root_dir/node/bin:$root_dir/nwjs:$PATH"
export USERPROFILE=$SNAP_USER_DATA
ls -l /usr/lib/x86_64-linux-gnu
ls -l /usr/lib
echo -e "\033[46;37m环境变量: \033[0m"
env
# LANG=zh_CN.UTF-8 exec "$DIR"/../nwjs/nw --load-extension="$DIR"/../nwjs/package.nw/js/ideplugin "$@"
EXTENSION1="--load-extension=$SNAP/package.nw/js/ideplugin"
EXTENSION2="--load-extension=$SNAP_USER_DATA/.config/wechat_devtools/WeappPlugin"
INSPECTOR1="--custom-devtools-frontend=file://$SNAP/package.nw/js/ideplugin/inspector" # 要加file://指明为本地文件路径
INSPECTOR2="--custom-devtools-frontend=file://$SNAP_USER_DATA/.config/wechat_devtools/WeappPlugin/inspector/"
USERDATADIR="$SNAP_USER_DATA/.config/wechat_devtools"
# "$@"参数
LANG=zh_CN.UTF-8
"$SNAP/nw" $EXTENSION2 $INSPECTOR1 "$@"

104
changelog.md Normal file
View File

@ -0,0 +1,104 @@
# 1.05.2203070-10 / 2022-04-
- fix: 修正命令行入口
- update: 优化主题监听
# 1.05.2203070-8 / 2022-04-10
- fix: 国内网络vscode-ripgrep安装失败的问题
- fix: 内部的更新检查界面无法正常使用(这个更新用处不大,仅用于让维护者知道存在更新)
- fix: 修复可能出现扩展宿主意外终止的问题
- feat: 主题深浅跟随系统变化感谢icepie的参与
- update: 更新nwjs与nodejs
# 1.05.2203070-7 / 2022-03-19
- fix: cli
- 兼容ubuntu16.04
# 1.05.2203070-6 / 2022-03-19
- feat: wcc node模块支持wxml引用
- feat: wcc node模块支持自定义函数名
# 1.05.2203070-5 / 2022-03-18
- fix: 增强wcsc编译器
# 1.05.2203070-4 / 2022-03-12
- add: 增加wine版本的deb包
# 1.05.2203070-3 / 2022-03-11
- fix: 修复wcc常量操作问题
- fix: 修复deb打包细节问题
# 1.05.2203070-2 / 2022-03-10
- feat: wcc编译器懒加载支持wxml引用
# 1.05.2203070-1 / 2022-03-08
- upgrade: devtools 1.05.2203070
- fix: 编译器异常信息显示不完全
# 1.05.2203030-2 / 2022-03-07
- refactor: 规范版本号
# 0.24 / 2022-03-05
- fix: 编译异常的问题
- 处理一些包相关细节
# 0.23 / 2022-03-05
- upgrade devtools to 1.05.2203030
# 0.22 / 2022-03-03
- refactor: 使用低版本环境构建deb,提升兼容性
# 0.21 / 2022-03-02
- add: deb aur 打包格式
# 0.20 / 2022-02-28
- fix: node模块中编译器的可执行权限
# 0.19 / 2022-02-28
- 过渡版本,存在问题
# 0.16 / 2022-02-24
- feat: wcc编译器路径异常
# 0.15 / 2022-02-23
- feat: wcc编译器支持`debugWXS`选项
# 0.14 / 2022-02-22
- feat: 正式添加node版本的编译器
# 0.13 / 2022-02-20
- feat: wine弱依赖版本
# 0.12 / 2022-02-16
- fix: 版本管理中的“在终端打开”不可用
# 0.11 / 2022-02-15
- add: appimage打包版本
# 0.10 / 2022-02-06
- fix: 二维码真机调试不可用
# 0.9 / 2022-02-05
- fix: 修复Webview组件涉及代码分析插件商店
# 0.8 / 2022-02-04
- fix: 云开发控制台不可用
# 0.7 / 2022-02-04
- add: 重新使用windows的编译器
# 0.6 / 2022-02-03
- fix: 可视化功能不可用
# 0.5 / 2022-02-02
- fix: 版本管理
- feat: node版本编译器
- remove: windows的编译器
# 0.4 / 2022-01-30
- fix: 创建终端时会崩溃的问题
# 0.3 / 2022-01-28
- 适配nwjs版本至0.53.1
# 0.2 / 2022-01-27
体验版

84
compiler/generatemd5.js Normal file
View File

@ -0,0 +1,84 @@
const path = require('path')
const fs = require('fs')
const crypto = require('crypto')
const os = require('os')
const child_process = require('child_process')
let platform = process.argv[2]
let exeList = []
const macExeList = [
'wcc',
'wcsc',
'wcc.bin',
'wcsc.bin'
]
const winExeList = [
'wcc.exe',
'wcsc.exe'
]
if(platform === 'darwin') {
exeList = macExeList;
} else if(platform === 'win32') {
exeList= winExeList;
} else {
exeList = macExeList.concat(winExeList)
}
function generate(vendorPath) {
let dirList = fs.readdirSync(vendorPath)
let libs = {}
dirList.forEach((item) => {
if (item == 'dev' || item == 'quickstart' || item == 'beta') {
return
}
let itemPath = path.join(vendorPath, item)
let stat = fs.statSync(itemPath)
if (stat.isDirectory()) {
let fileList = fs.readdirSync(itemPath)
let md5Info = {}
fileList.forEach((file) => {
if (fs.statSync(path.join(itemPath, file)).isFile()) {
let fileData = fs.readFileSync(path.join(itemPath, file))
let md5sum = crypto.createHash('md5')
md5sum.update(fileData)
md5Info[file] = md5sum.digest('hex')
}
})
libs[item] = md5Info
}
})
let oldConfig = JSON.parse(fs.readFileSync(path.join(vendorPath, 'config.json'), 'utf8'))
for (var key in oldConfig.libs) {
// libs[key] = Object.assign({}, oldConfig.libs[key], libs[key])
oldConfig.libs[key] = Object.assign({}, oldConfig.libs[key], libs[key])
}
// let newLib = {}
// let keys = Object.keys(libs)
// keys.sort()
// for (var i = 0; i < keys.length; i++) {
// let key = keys[i]
// newLib[key] = libs[key]
// }
// 更新
oldConfig.configVersion = Date.now()
for (let key in exeList) {
let file = exeList[key]
let fileData = fs.readFileSync(path.join(vendorPath, file))
let md5sum = crypto.createHash('md5')
md5sum.update(fileData)
oldConfig[file] = md5sum.digest('hex')
}
fs.writeFileSync(path.join(vendorPath, 'config.json'), JSON.stringify(oldConfig, null, '\t'))
}
generate(__dirname)

564
compiler/nodejs/wcc Executable file

File diff suppressed because one or more lines are too long

81
compiler/nodejs/wcsc Executable file
View File

@ -0,0 +1,81 @@
#!/usr/bin/env node
// wcsc.exe md5 = "3999c590c57c764b152bc6db3b3288c4"
const version = "20220308";
const { spawn } = require("child_process");
const fs = require("fs");
const path = require("path");
const args = process.argv.slice(2);
const wcscPath = path.resolve(__dirname, "./wcsc.bin");
const DEBUG_OUTPUT = process.env["WX_DEBUG_COMPILER_OUTPUT"];
function encode1(s) {
return encodeURI(s).replace(
/%(u[0-9A-F]{4})|(%[0-9A-F]{2})/gm,
function ($0, $1, $2) {
return ($1 && "\\" + $1.toLowerCase()) || decodeURI($2);
}
);
}
if (args.includes("-ll")) {
const wcsc = spawn(wcscPath, args, {
cwd: process.cwd(),
});
const spwanData = [],
errData = [];
wcsc.stdout.on("data", (e) => {
spwanData.push(e);
});
wcsc.stderr.on("data", (e) => {
errData.push(e);
});
wcsc.on("close", (n) => {
if (0 === n) {
let str = Buffer.concat(spwanData).toString();
DEBUG_OUTPUT &&
fs.writeFileSync(`${DEBUG_OUTPUT}/linux_output.js`, str);
const resultSplit = str.split("=");
const tempObj = {};
for (
let i = 0, total = resultSplit.length;
i < total && resultSplit[i + 1];
i += 2
) {
// a=b ---> a: b
const key = resultSplit[i];
if (key === "version") continue;
tempObj[key] = resultSplit[i + 1].replace(
/[^\\]((\\x[\da-f]{2}|\\u[\da-f]{4})){1,}/g,
function ($0, $1, $2) {
return eval('"' + $0 + '"');
}
);
}
const resultObj = {
common: tempObj.comm,
pageWxss: {},
};
for (const key in tempObj) {
if (key.endsWith(".wxss")) {
resultObj.pageWxss[key] = tempObj[key];
}
}
let result = JSON.stringify(resultObj);
result = result.replace(/\\\\/g, "\\");
process.stdout.write(result);
} else {
const err = Buffer.concat(errData).toString();
DEBUG_OUTPUT &&
fs.writeFileSync(`${DEBUG_OUTPUT}/linux_err.js`, err);
process.stderr.write(err);
process.exitCode = n;
}
});
} else {
const wcsc = spawn(wcscPath, args, {
cwd: process.cwd(),
stdio: "inherit",
});
wcsc.on("close", (code) => {
process.exitCode = code;
});
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
1 wcc node
2 wcc node
3 wcc node
4 wcsc node
5 wcc node
6 wcsc node
7 wcc node

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
const fs = require('fs')
const path = require('path')
const wcsc_options1 = {"pageCount":34,"files":["./packageComponent/pages/view/view/view.wxss","./packageComponent/pages/view/scroll-view/scroll-view.wxss","./packageComponent/pages/view/swiper/swiper.wxss","./packageComponent/pages/view/movable-view/movable-view.wxss","./packageComponent/pages/view/cover-view/cover-view.wxss","./packageComponent/pages/content/text/text.wxss","./packageComponent/pages/content/icon/icon.wxss","./packageComponent/pages/content/progress/progress.wxss","./packageComponent/pages/content/rich-text/rich-text.wxss","./packageComponent/pages/form/button/button.wxss","./packageComponent/pages/form/checkbox/checkbox.wxss","./packageComponent/pages/form/form/form.wxss","./packageComponent/pages/form/input/input.wxss","./packageComponent/pages/form/label/label.wxss","./packageComponent/pages/form/picker/picker.wxss","./packageComponent/pages/form/picker-view/picker-view.wxss","./packageComponent/pages/form/radio/radio.wxss","./packageComponent/pages/form/slider/slider.wxss","./packageComponent/pages/form/switch/switch.wxss","./packageComponent/pages/form/textarea/textarea.wxss","./packageComponent/pages/form/editor/editor.wxss","./packageComponent/pages/nav/navigator/navigator.wxss","./packageComponent/pages/media/image/image.wxss","./packageComponent/pages/media/video/video.wxss","./packageComponent/pages/media/camera/camera.wxss","./packageComponent/pages/media/live-pusher/live-pusher.wxss","./packageComponent/pages/media/live-player/live-player.wxss","./packageComponent/pages/map/map/map.wxss","./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxss","./packageComponent/pages/canvas/webgl/webgl.wxss","./packageComponent/pages/open/ad/ad.wxss","./packageComponent/pages/open/open-data/open-data.wxss","./packageComponent/pages/open/web-view/web-view.wxss","./packageComponent/pages/obstacle-free/aria-component/aria-component.wxss","./app.wxss","./common/lib/weui.wxss","./miniprogram_npm/miniprogram-barrage/index.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss","./miniprogram_npm/wxml-to-canvas/index.wxss","./page/API/index.wxss","./page/API/components/set-tab-bar/set-tab-bar.wxss","./page/cloud/index.wxss","./page/common/common.wxss","./page/common/index.wxss","./page/common/lib/weui.wxss","./page/component/index.wxss","./page/extend/index.wxss","./packageComponent/pages/form/editor/assets/iconfont.wxss"],"cwd":"/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/","subPackage":"packageComponent/","replaceContent":{"./packageComponent/pages/camera-scan-code/camera-scan-code.wxss":"\n\ncamera {\n height: 250px;\n}\n\n.btn-area {\n margin-top: 0;\n}\n\nform {\n margin-top: 15px;\n}\n\n.weui-cell__bd {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: 10px 0;\n min-height: 30px;\n}"},"debug":true}
const wcsc_options2 = {"pageCount":9,"files":["./page/component/index.wxss","./page/API/index.wxss","./page/cloud/index.wxss","./page/extend/index.wxss","./miniprogram_npm/miniprogram-barrage/index.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss","./miniprogram_npm/wxml-to-canvas/index.wxss","./page/API/components/set-tab-bar/set-tab-bar.wxss","./app.wxss","./common/lib/weui.wxss","./page/common/common.wxss","./page/common/index.wxss","./page/common/lib/weui.wxss"],"cwd":"/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/","replaceContent":{"./packageComponent/pages/camera-scan-code/camera-scan-code.wxss":"\n\ncamera {\n height: 250px;\n}\n\n.btn-area {\n margin-top: 0;\n}\n\nform {\n margin-top: 15px;\n}\n\n.weui-cell__bd {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: 10px 0;\n min-height: 30px;\n}"},"debug":true}
// const wcc_options6 =
// const wcc_options7 =
const test = async (options, id) => {
console.log("============")
const wcsc = require("wcsc");
const wcsc_result = await wcsc(options);
fs.writeFileSync(path.resolve(__dirname, `wcsc_node${id}.txt`), JSON.stringify(wcsc_result, null, 4))
// const win_result = fs.readFileSync(path.resolve(__dirname, '../package.nw/win.txt'))
// console.log(wcsc_result == win_result)
};
test(wcsc_options1, 1);
test(wcsc_options2, 2);

View File

@ -0,0 +1,26 @@
{
"files": [
"./pages/index/index.wxml",
"./pages/logs/logs.wxml"
],
"contents": [
"<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n",
"<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:key=\"timeStamp\" wx:for-item=\"log\">\n <text class=\"log-item\">{{index + 1}}. {{log.date}}</text>\n </block>\n</view>\n"
],
"replaceContent": {
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
},
"verbose": false,
"debug": true,
"debugWXS": false,
"showNewTree": false,
"addTestAttre": false,
"independent": false,
"genfuncname": "$gwx",
"isCut": false,
"cwd": "C:/users/msojocs/Documents/we1",
"lazyload": false,
"lazyloadConfig": "",
"wxmlCompileConfig": "2>_<4679./pages/index/index.wxml>_<46790>_<4679./pages/logs/logs.wxml>_<46790",
"wxmlCompileConfigSplit": ">_<4679"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
{
"files": [
"./pages/index/index.wxml",
"./pages/logs/logs.wxml"
],
"contents": [
"<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n",
"<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:key=\"timeStamp\" wx:for-item=\"log\">\n <text class=\"log-item\">{{index + 1}}. {{log.date}}</text>\n </block>\n</view>\n"
],
"replaceContent": {
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
},
"verbose": false,
"debug": true,
"debugWXS": false,
"showNewTree": false,
"addTestAttre": false,
"independent": false,
"genfuncname": "$gwx",
"cwd": "C:/users/msojocs/Documents/we1",
"lazyload": false,
"lazyloadConfig": "",
"wxmlCompileConfig": "2>_<5795./pages/index/index.wxml>_<57950>_<5795./pages/logs/logs.wxml>_<57950",
"wxmlCompileConfigSplit": ">_<5795"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
{
"files": [
"./pages/index/index.wxml",
"./pages/logs/logs.wxml"
],
"contents": [
"<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n",
"<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:key=\"timeStamp\" wx:for-item=\"log\">\n <text class=\"log-item\">{{index + 1}}. {{log.date}}</text>\n </block>\n</view>\n"
],
"replaceContent": {
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
},
"verbose": false,
"debug": true,
"debugWXS": false,
"showNewTree": false,
"addTestAttre": false,
"independent": false,
"genfuncname": "$gwx",
"isCut": false,
"cwd": "C:/users/msojocs/Documents/we1",
"lazyload": false,
"lazyloadConfig": "",
"wxmlCompileConfig": "2>_<3233./pages/index/index.wxml>_<32330>_<3233./pages/logs/logs.wxml>_<32330",
"wxmlCompileConfigSplit": ">_<3233"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1023
compiler/test/wcc/common.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
x 大小13
引用文件 6,7 下标5,6
9,10
m0 - m9
gz1 - gz11
var x=[
'./miniprogram_npm/miniprogram-barrage/index.wxml',
'./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml',
'./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml',
'./miniprogram_npm/wxml-to-canvas/index.wxml',
'./page/API/components/set-tab-bar/set-tab-bar.wxml',
'../../../common/head.wxml',
'../../../common/foot.wxml',
'./page/API/index.wxml',
'./page/cloud/index.wxml',
'./page/common/foot.wxml',
'./page/common/head.wxml',
'./page/component/index.wxml',
'./page/extend/index.wxml'];
d_[x[0]]={}

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,86 @@
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
COMMON=====./miniprogram_npm/miniprogram-barrage/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_1\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_1
}
COMMON=====./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml----function gz\$7061636b616765436f6d706f6e656e742f_2\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_2
}
COMMON=====./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml----function gz\$7061636b616765436f6d706f6e656e742f_3\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_3
}
COMMON=====./miniprogram_npm/wxml-to-canvas/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_4\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_4
}
COMMON=====./page/API/components/set-tab-bar/set-tab-bar.wxml----function gz\$7061636b616765436f6d706f6e656e742f_39\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_39
}
COMMON=====./page/API/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_40\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_40
}
COMMON=====./page/cloud/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_41\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_41
}
COMMON=====./page/common/foot.wxml----function gz\$7061636b616765436f6d706f6e656e742f_42\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_42
}
COMMON=====./page/common/head.wxml----function gz\$7061636b616765436f6d706f6e656e742f_43\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_43
}
COMMON=====./page/component/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_44\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_44
}
COMMON=====./page/extend/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_45\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_45
}

File diff suppressed because one or more lines are too long

View File

View File

@ -0,0 +1,138 @@
#!/usr/bin/env node
const { spawn, spawnSync } = require("child_process");
const path = require("path");
const fs = require("fs");
const { exit } = require("process");
const projectPath = "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/";
const config = [
"-d",
"--split",
">_<109",
"-xc",
"9>_<109./miniprogram_npm/miniprogram-barrage/index.wxml>_<1090>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<1090>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<1090>_<109./miniprogram_npm/wxml-to-canvas/index.wxml>_<1090>_<109./page/API/index.wxml>_<1091>_<109set-tab-bar>_<109./page/API/components/set-tab-bar/set-tab-bar.wxml>_<1090>_<109./page/cloud/index.wxml>_<1090>_<109./page/component/index.wxml>_<1090>_<109./page/extend/index.wxml>_<1090",
"-lla",
"./miniprogram_npm/miniprogram-barrage/index>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<109./miniprogram_npm/wxml-to-canvas/index>_<109./page/API/index>_<109./page/API/components/set-tab-bar/set-tab-bar>_<109./page/cloud/index>_<109./page/component/index>_<109./page/extend/index",
"./miniprogram_npm/miniprogram-barrage/index.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml",
"./miniprogram_npm/wxml-to-canvas/index.wxml",
"./page/API/index.wxml",
"./page/API/components/set-tab-bar/set-tab-bar.wxml",
"./page/cloud/index.wxml",
"./page/common/foot.wxml",
"./page/common/head.wxml",
"./page/component/index.wxml",
"./page/extend/index.wxml",
"-gn",
"$gwx",
];
const test_wine = () => {
const wine = spawn(
path.resolve(__dirname, "../../../../package.nw/js/vendor/wcc.exe"),
config,
{
cwd: projectPath,
}
);
const spwanData = [],
errData = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
console.log("wine n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
result = JSON.parse(result);
// result = result.generateFunctionContent["__COMMON__"];
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4)
fs.writeFileSync(
path.resolve(__dirname, "./3/wine_output.json"),
result
);
// process.stdout.write(result);
resolve(result);
} else {
process.stderr.write(
"wine error:",
Buffer.concat(errData).toString()
);
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test_node = () => {
const node_exec = spawn(
path.resolve(__dirname, "../../../nodejs/wcc"),
config,
{
cwd: projectPath,
env: {
WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, "./3"),
},
// stdio: 'inherit'
}
);
const spwanData = [],
errData = [];
node_exec.stdout.on("data", (e) => {
spwanData.push(e);
// console.log(e.toString())
});
node_exec.stderr.on("data", (e) => {
errData.push(e);
// console.log(e.toString())
});
return new Promise((resolve, reject) => {
node_exec.on("close", (n) => {
console.log("node n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
// require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result)
// process.stdout.write(result);
result = JSON.parse(result);
// fs.writeFileSync(
// path.resolve(__dirname, "./3/node_output1.json"),
// JSON.stringify(result, null, 4)
// );
// result = result.generateFunctionContent["__COMMON__"];
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4)
fs.writeFileSync(
path.resolve(__dirname, "./3/node_output.json"),
result
);
fs.writeFileSync(
path.resolve(__dirname, "./3/node_stderr.json"),
Buffer.concat(errData)
);
resolve(result);
} else {
process.stderr.write(Buffer.concat(errData).toString());
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test = async () => {
try {
const node_result = await test_node();
const wine_result = await test_wine();
console.log("结果是否一致:", wine_result.trim() === node_result);
} catch (err) {
console.error("错误:", err);
}
};
test();

View File

@ -0,0 +1,172 @@
#!/usr/bin/env node
const { spawn, spawnSync } = require("child_process");
const path = require("path");
const fs = require("fs");
const { exit } = require("process");
const projectPath = "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/";
const config = [
"-d",
"--split",
">_<4362",
"-xc",
"34>_<4362./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml>_<43620>_<4362./packageComponent/pages/canvas/webgl/webgl.wxml>_<43620>_<4362./packageComponent/pages/content/icon/icon.wxml>_<43620>_<4362./packageComponent/pages/content/progress/progress.wxml>_<43620>_<4362./packageComponent/pages/content/rich-text/rich-text.wxml>_<43620>_<4362./packageComponent/pages/content/text/text.wxml>_<43620>_<4362./packageComponent/pages/form/button/button.wxml>_<43620>_<4362./packageComponent/pages/form/checkbox/checkbox.wxml>_<43620>_<4362./packageComponent/pages/form/editor/editor.wxml>_<43620>_<4362./packageComponent/pages/form/form/form.wxml>_<43620>_<4362./packageComponent/pages/form/input/input.wxml>_<43620>_<4362./packageComponent/pages/form/label/label.wxml>_<43620>_<4362./packageComponent/pages/form/picker/picker.wxml>_<43620>_<4362./packageComponent/pages/form/picker-view/picker-view.wxml>_<43620>_<4362./packageComponent/pages/form/radio/radio.wxml>_<43620>_<4362./packageComponent/pages/form/slider/slider.wxml>_<43620>_<4362./packageComponent/pages/form/switch/switch.wxml>_<43620>_<4362./packageComponent/pages/form/textarea/textarea.wxml>_<43620>_<4362./packageComponent/pages/map/map/map.wxml>_<43620>_<4362./packageComponent/pages/media/camera/camera.wxml>_<43620>_<4362./packageComponent/pages/media/image/image.wxml>_<43620>_<4362./packageComponent/pages/media/live-player/live-player.wxml>_<43620>_<4362./packageComponent/pages/media/live-pusher/live-pusher.wxml>_<43620>_<4362./packageComponent/pages/media/video/video.wxml>_<43620>_<4362./packageComponent/pages/nav/navigator/navigator.wxml>_<43620>_<4362./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml>_<43620>_<4362./packageComponent/pages/open/ad/ad.wxml>_<43620>_<4362./packageComponent/pages/open/open-data/open-data.wxml>_<43620>_<4362./packageComponent/pages/open/web-view/web-view.wxml>_<43620>_<4362./packageComponent/pages/view/cover-view/cover-view.wxml>_<43620>_<4362./packageComponent/pages/view/movable-view/movable-view.wxml>_<43620>_<4362./packageComponent/pages/view/scroll-view/scroll-view.wxml>_<43620>_<4362./packageComponent/pages/view/swiper/swiper.wxml>_<43620>_<4362./packageComponent/pages/view/view/view.wxml>_<43620",
"-lla",
"./packageComponent/pages/canvas/canvas-2d/canvas-2d>_<4362./packageComponent/pages/canvas/webgl/webgl>_<4362./packageComponent/pages/content/icon/icon>_<4362./packageComponent/pages/content/progress/progress>_<4362./packageComponent/pages/content/rich-text/rich-text>_<4362./packageComponent/pages/content/text/text>_<4362./packageComponent/pages/form/button/button>_<4362./packageComponent/pages/form/checkbox/checkbox>_<4362./packageComponent/pages/form/editor/editor>_<4362./packageComponent/pages/form/form/form>_<4362./packageComponent/pages/form/input/input>_<4362./packageComponent/pages/form/label/label>_<4362./packageComponent/pages/form/picker/picker>_<4362./packageComponent/pages/form/picker-view/picker-view>_<4362./packageComponent/pages/form/radio/radio>_<4362./packageComponent/pages/form/slider/slider>_<4362./packageComponent/pages/form/switch/switch>_<4362./packageComponent/pages/form/textarea/textarea>_<4362./packageComponent/pages/map/map/map>_<4362./packageComponent/pages/media/camera/camera>_<4362./packageComponent/pages/media/image/image>_<4362./packageComponent/pages/media/live-player/live-player>_<4362./packageComponent/pages/media/live-pusher/live-pusher>_<4362./packageComponent/pages/media/video/video>_<4362./packageComponent/pages/nav/navigator/navigator>_<4362./packageComponent/pages/obstacle-free/aria-component/aria-component>_<4362./packageComponent/pages/open/ad/ad>_<4362./packageComponent/pages/open/open-data/open-data>_<4362./packageComponent/pages/open/web-view/web-view>_<4362./packageComponent/pages/view/cover-view/cover-view>_<4362./packageComponent/pages/view/movable-view/movable-view>_<4362./packageComponent/pages/view/scroll-view/scroll-view>_<4362./packageComponent/pages/view/swiper/swiper>_<4362./packageComponent/pages/view/view/view",
"./miniprogram_npm/miniprogram-barrage/index.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml",
"./miniprogram_npm/wxml-to-canvas/index.wxml",
"./page/API/components/set-tab-bar/set-tab-bar.wxml",
"./page/API/index.wxml",
"./page/cloud/index.wxml",
"./page/common/foot.wxml",
"./page/common/head.wxml",
"./page/component/index.wxml",
"./page/extend/index.wxml",
"./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml",
"./packageComponent/pages/canvas/webgl/webgl.wxml",
"./packageComponent/pages/content/icon/icon.wxml",
"./packageComponent/pages/content/progress/progress.wxml",
"./packageComponent/pages/content/rich-text/rich-text.wxml",
"./packageComponent/pages/content/text/text.wxml",
"./packageComponent/pages/form/button/button.wxml",
"./packageComponent/pages/form/checkbox/checkbox.wxml",
"./packageComponent/pages/form/editor/editor.wxml",
"./packageComponent/pages/form/form/form.wxml",
"./packageComponent/pages/form/input/input.wxml",
"./packageComponent/pages/form/label/label.wxml",
"./packageComponent/pages/form/picker/picker.wxml",
"./packageComponent/pages/form/picker-view/picker-view.wxml",
"./packageComponent/pages/form/radio/radio.wxml",
"./packageComponent/pages/form/slider/slider.wxml",
"./packageComponent/pages/form/switch/switch.wxml",
"./packageComponent/pages/form/textarea/textarea.wxml",
"./packageComponent/pages/map/map/map.wxml",
"./packageComponent/pages/media/camera/camera.wxml",
"./packageComponent/pages/media/image/image.wxml",
"./packageComponent/pages/media/live-player/live-player.wxml",
"./packageComponent/pages/media/live-pusher/live-pusher.wxml",
"./packageComponent/pages/media/video/video.wxml",
"./packageComponent/pages/nav/navigator/navigator.wxml",
"./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml",
"./packageComponent/pages/open/ad/ad.wxml",
"./packageComponent/pages/open/open-data/open-data.wxml",
"./packageComponent/pages/open/web-view/web-view.wxml",
"./packageComponent/pages/view/cover-view/cover-view.wxml",
"./packageComponent/pages/view/movable-view/movable-view.wxml",
"./packageComponent/pages/view/scroll-view/scroll-view.wxml",
"./packageComponent/pages/view/swiper/swiper.wxml",
"./packageComponent/pages/view/view/view.wxml",
"-gn",
"$7061636b616765436f6d706f6e656e742f",
];
const test_wine = () => {
const wine = spawn(
path.resolve(__dirname, "../../../../package.nw/js/vendor/wcc.exe"),
config,
{
cwd: projectPath,
}
);
const spwanData = [],
errData = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
console.log("wine n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
result = JSON.parse(result);
// result = result.generateFunctionContent["__COMMON__"];
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4);
fs.writeFileSync(
path.resolve(__dirname, "./4/wine_output.json"),
result
);
// process.stdout.write(result);
resolve(result);
} else {
process.stderr.write(
"wine error:",
Buffer.concat(errData).toString()
);
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test_node = () => {
const node_exec = spawn(
path.resolve(__dirname, "../../../nodejs/wcc"),
config,
{
cwd: projectPath,
env: {
WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, "./4"),
},
// stdio: 'inherit'
}
);
const spwanData = [],
errData = [];
node_exec.stdout.on("data", (e) => {
spwanData.push(e);
// console.log(e.toString())
});
node_exec.stderr.on("data", (e) => {
errData.push(e);
// console.log(e.toString())
});
return new Promise((resolve, reject) => {
node_exec.on("close", (n) => {
console.log("node n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
// require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result)
// process.stdout.write(result);
result = JSON.parse(result);
// fs.writeFileSync(
// path.resolve(__dirname, "./4/node_output1.json"),
// JSON.stringify(result, null, 4)
// );
// result = result.generateFunctionContent["__COMMON__"];
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4);
fs.writeFileSync(
path.resolve(__dirname, "./4/node_output.json"),
result
);
fs.writeFileSync(
path.resolve(__dirname, "./4/node_stderr.json"),
Buffer.concat(errData)
);
resolve(result);
} else {
process.stderr.write(Buffer.concat(errData).toString());
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test = async () => {
try {
const node_result = await test_node();
const wine_result = await test_wine();
console.log("结果是否一致:", wine_result.trim() === node_result);
} catch (err) {
console.error("错误:", err);
}
};
test();

View File

@ -0,0 +1,59 @@
const fs = require("fs");
const path = require("path");
var x = [
"./miniprogram_npm/miniprogram-barrage/index.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml",
"./miniprogram_npm/wxml-to-canvas/index.wxml",
"./page/API/components/set-tab-bar/set-tab-bar.wxml",
"../../../common/head.wxml",
"../../../common/foot.wxml",
"./page/API/index.wxml",
"./page/cloud/index.wxml",
"./page/common/foot.wxml",
"./page/common/head.wxml",
"./page/component/index.wxml",
"./page/extend/index.wxml",
];
const config = {
num: 4,
};
let content = "";
const funcName = "$gwx";
const source = fs
.readFileSync(path.resolve(__dirname, "./3/linux_output.js"))
.toString();
console.log(
path.join(
path.dirname("./page/API/components/set-tab-bar/set-tab-bar.wxml"),
"../../../common/head.wxml"
)
);
// "./page/common/head.wxml"
process.exit(0);
// 引入解析
const deps = source.matchAll(/_ai\(.*?,x\[(\d+)\],.*?,x\[(\d+)\],\d+,\d+\)/g);
console.log(deps);
for (let dep of deps) {
console.log(dep[0]);
console.log(dep[1]);
console.log(dep[2]);
}
// gz函数2
const exp = `function gz\\${funcName}_${
config.num + 1
}\\(\\)\\{[\\s\\S]*?__WXML_GLOBAL__\\.ops_cached\\.\\${funcName}_${
config.num + 1
}\n}`;
// console.log('exp --- ', exp)
const gz = source.match(new RegExp(exp));
// console.log(gz)
content += gz[0].replace(
new RegExp(`\\${funcName}\\_\\d+`, "g"),
`${config.funcName}_1`
);

20
compiler/test/wcc/lla1.sh Normal file
View File

@ -0,0 +1,20 @@
#!/bin/bash
# 本脚本用于测试wcc编译器带lla参数时的编译结果
root_dir=$(cd `dirname $0`/../.. && pwd -P)
pkg_dir="/mnt/disk1/Project/WeCuit-Project/WeCuit-Mini-uni-test_uni_vue-cli/dist/build/mp-weixin"
pkg_dir="/home/msojocs/Documents/we1"
store_dir="$root_dir/test/wcc/lla/1"
cd "$pkg_dir" && \
wine "$root_dir/package.nw/js/vendor/wcc.exe" "-d" "--split" ">_<9657" "-cc" "2>_<9657./pages/index/index.wxml>_<96570>_<9657./pages/logs/logs.wxml>_<96570" "-lla" "./pages/index/index>_<9657./pages/logs/logs" "./pages/index/index.wxml" "./pages/logs/logs.wxml" "-gn" "\$gwx" > "$store_dir/wine.json"
echo "==================="
cd "$pkg_dir" && \
"$root_dir/compiler/nodejs/wcc" "-d" "--split" ">_<9657" "-cc" "2>_<9657./pages/index/index.wxml>_<96570>_<9657./pages/logs/logs.wxml>_<96570" "-lla" "./pages/index/index>_<9657./pages/logs/logs" "./pages/index/index.wxml" "./pages/logs/logs.wxml" "-gn" "\$gwx" > "$store_dir/nodejs.json"
diff "$store_dir/wine.json" "$store_dir/nodejs.json" >/dev/null
if [ "$?" == "0" ];then
echo "the file or dir is same!"
else
echo "the file or dir is different!"
fi

23
compiler/test/wcc/lla2.sh Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
x 元素个数13
第6、7 npm 下标5、6
gz1 - gz11
m0 - m10
XC_0 - XC_

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,86 @@
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
./packageComponent/common/foot.wxmlindex
./packageComponent/common/head.wxmlindex
COMMON=====./miniprogram_npm/miniprogram-barrage/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_1\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_1
}
COMMON=====./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml----function gz\$7061636b616765436f6d706f6e656e742f_2\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_2
}
COMMON=====./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml----function gz\$7061636b616765436f6d706f6e656e742f_3\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_3
}
COMMON=====./miniprogram_npm/wxml-to-canvas/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_4\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_4
}
COMMON=====./page/API/components/set-tab-bar/set-tab-bar.wxml----function gz\$7061636b616765436f6d706f6e656e742f_39\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_39
}
COMMON=====./page/API/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_40\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_40
}
COMMON=====./page/cloud/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_41\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_41
}
COMMON=====./page/common/foot.wxml----function gz\$7061636b616765436f6d706f6e656e742f_42\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_42
}
COMMON=====./page/common/head.wxml----function gz\$7061636b616765436f6d706f6e656e742f_43\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_43
}
COMMON=====./page/component/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_44\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_44
}
COMMON=====./page/extend/index.wxml----function gz\$7061636b616765436f6d706f6e656e742f_45\(\)\{[\s\S]*?__WXML_GLOBAL__\.ops_cached\.\$7061636b616765436f6d706f6e656e742f_45
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,26 @@
# unicode
| 符号 | unicode |
|-----|---------|
| tab | \u0009 |
| t | \u0074 |
# 起始
var cs = cs || [];\u000a$gwx_XC_1=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz,_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_decodeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ixc,_ic,_w,_ev,_tsd){return function(path,global){\u000aif(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}if(typeof __WXML_GLOBAL__ === 'undefined') {__WXML_GLOBAL__={};\u000a}__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};\u000a
#
var e_={}\u000aif(typeof(global.entrys)==='undefined')global.entrys={};e_=global.entrys;\u000avar d_={}\u000aif(typeof(global.defines)==='undefined')global.defines={};d_=global.defines;\u000avar f_={}\u000aif(typeof(global.modules)==='undefined')global.modules={};f_=global.modules || {};\u000avar p_={}\u000avar cs = cs || [];\u000a__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}\u000a__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};\u000a__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};\u000avar z=__WXML_GLOBAL__.ops_set.$gwx_XC_1 || [];\u000a
# 函数
function gz$gwx_XC_0_1(){\u000aif( __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1)return __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1\u000a__WXML_GLOBAL__.ops_cached.$gwx_XC_0_1=[];\u000a(function(z){var a=11;function Z(ops){z.push(ops)}\u000aZ([3,'container'])\u000aZ([3,'userinfo'])\u000aZ([[7],[3,'canIUseOpenData']])\u000aZ([3,'bindViewTap'])\u000aZ([3,'userinfo-avatar'])\u000aZ([3,'width: 183rpx; height: 148rpx; display: block; box-sizing: border-box'])\u000aZ([3,'userAvatarUrl'])\u000aZ([3,'userNickName'])\u000aZ([[2,'!'],[[7],[3,'hasUserInfo']]])\u000aZ([[7],[3,'canIUseGetUserProfile']])\u000aZ([3,'getUserProfile'])\u000aZ([3,' 获取头像昵称 '])\u000aZ([[7],[3,'canIUse']])\u000aZ([3,'getUserInfo'])\u000aZ(z[13])\u000aZ(z[11])\u000aZ([3,' 请使用1.4.4及以上版本基础库 '])\u000aZ(z[3])\u000aZ(z[4])\u000aZ([3,'cover'])\u000aZ([[6],[[7],[3,'userInfo']],[3,'avatarUrl']])\u000aZ([3,'userinfo-nickname'])\u000aZ([a,[[6],[[7],[3,'userInfo']],[3,'nickName']]])\u000aZ([3,'usermotto'])\u000aZ([3,'user-motto'])\u000aZ([a,[[7],[3,'motto']]])\u000a})(__WXML_GLOBAL__.ops_cached.$gwx_XC_0_1);return __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1\u000a}
#
\u000a__WXML_GLOBAL__.ops_set.$gwx_XC_0=z;\u000a__WXML_GLOBAL__.ops_init.$gwx_XC_0=true;\u000avar x=['./pages/index/index.wxml'];d_[x[0]]={}\u000a
var m0=function(e,s,r,gg){\u000avar z=gz$gwx_XC_0_1()\u000acs.push(\u0022./pages/index/index.wxml:view:2:2\u0022)\u000avar oB=_n('view')\u000a_rz(z,oB,'class',0,e,s,gg)\u000acs.push(\u0022./pages/index/index.wxml:view:3:4\u0022)\u000avar xC=_n('view')\u000a_rz(z,xC,'class',1,e,s,gg)\u000avar oD=_v()\u000a_(xC,oD)\u000aif(_oz(z,2,e,s,gg)){oD.wxVkey=1\u000acs.push(\u0022./pages/index/index.wxml:block:4:6\u0022)\u000acs.push(\u0022./pages/index/index.wxml:view:5:8\u0022)\u000avar fE=_mz(z,'view',['bindtap',3,'class',1,'style',2],[],e,s,gg)\u000acs.push(\u0022./pages/index/index.wxml:open-data:6:10\u0022)\u000avar cF=_n('open-data')\u000a_rz(z,cF,'type',6,e,s,gg)\u000acs.pop()\u000a_(fE,cF)\u000acs.pop()\u000a_(oD,fE)\u000acs.push(\u0022./pages/index/index.wxml:open-data:8:8\u0022)\u000avar hG=_n('open-data')\u000a_rz(z,hG,'type',7,e,s,gg)\u000acs.pop()\u000a_(oD,hG)\u000acs.pop()\u000a}\u000aelse if(_oz(z,8,e,s,gg)){oD.wxVkey=2\u000acs.push(\u0022./pages/index/index.wxml:block:10:6\u0022)\u000avar oH=_v()\u000a_(oD,oH)\u000aif(_oz(z,9,e,s,gg)){oH.wxVkey=1\u000acs.push(\u0022./pages/index/index.wxml:button:11:8\u0022)\u000acs.push(\u0022./pages/index/index.wxml:button:11:8\u0022)\u000avar cI=_n('button')\u000a_rz(z,cI,'bindtap',10,e,s,gg)\u000avar oJ=_oz(z,11,e,s,gg)\u000a_(cI,oJ)\u000acs.pop()\u000a_(oH,cI)\u000acs.pop()\u000a}\u000aelse if(_oz(z,12,e,s,gg)){oH.wxVkey=2\u000acs.push(\u0022./pages/index/index.wxml:button:12:8\u0022)\u000acs.push(\u0022./pages/index/index.wxml:button:12:8\u0022)\u000avar lK=_mz(z,'button',['bindgetuserinfo',13,'openType',1],[],e,s,gg)\u000avar aL=_oz(z,15,e,s,gg)\u000a_(lK,aL)\u000acs.pop()\u000a_(oH,lK)\u000acs.pop()\u000a}\u000aelse{oH.wxVkey=3\u000acs.push(\u0022./pages/index/index.wxml:view:13:8\u0022)\u000acs.push(\u0022./pages/index/index.wxml:view:13:8\u0022)\u000avar tM=_n('view')\u000avar eN=_oz(z,16,e,s,gg)\u000a_(tM,eN)\u000acs.pop()\u000a_(oH,tM)\u000acs.pop()\u000a}\u000aoH.wxXCkey=1\u000acs.pop()\u000a}\u000aelse{oD.wxVkey=3\u000acs.push(\u0022./pages/index/index.wxml:block:15:6\u0022)\u000acs.push(\u0022./pages/index/index.wxml:image:16:8\u0022)\u000avar bO=_mz(z,'image',['bindtap',17,'class',1,'mode',2,'src',3],[],e,s,gg)\u000acs.pop()\u000a_(oD,bO)\u000acs.push(\u0022./pages/index/index.wxml:text:17:8\u0022)\u000avar oP=_n('text')\u000a_rz(z,oP,'class',21,e,s,gg)\u000avar xQ=_oz(z,22,e,s,gg)\u000a_(oP,xQ)\u000acs.pop()\u000a_(oD,oP)\u000acs.pop()\u000a}\u000aoD.wxXCkey=1\u000acs.pop()\u000a_(oB,xC)\u000acs.push(\u0022./pages/index/index.wxml:view:20:4\u0022)\u000avar oR=_n('view')\u000a_rz(z,oR,'class',23,e,s,gg)\u000acs.push(\u0022./pages/index/index.wxml:text:21:6\u0022)\u000avar fS=_n('text')\u000a_rz(z,fS,'class',24,e,s,gg)\u000avar cT=_oz(z,25,e,s,gg)\u000a_(fS,cT)\u000acs.pop()\u000a_(oR,fS)\u000acs.pop()\u000a_(oB,oR)\u000acs.pop()\u000a_(r,oB)\u000areturn r\u000a}\u000ae_[x[0]]={f:m0,j:[],i:[],ti:[],ic:[]}\u000a
#
if(path&&e_[path]){\u000aouterGlobal.__wxml_comp_version__=0.02\u000areturn function(env,dd,global){$gwxc=0;var root={\u0022tag\u0022:\u0022wx-page\u0022};root.children=[]\u000a;g=\u0022$gwx_XC_0\u0022;var main=e_[path].f\u000acs=[]\u000aif (typeof global===\u0022undefined\u0022)global={};global.f=$gdc(f_[path],\u0022\u0022,1);\u000aif(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e-6>=0.02+1e-6&&outerGlobal.__mergeData__)\u000a{\u000aenv=outerGlobal.__mergeData__(env,dd);\u000a}\u000atry{\u000amain(env,{},root,global);\u000a_tsd(root)\u000aif(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1e-6<0.01+1e-6){return _ev(root);}\u000a}catch(err){\u000aconsole.log(cs, env);\u000aconsole.log(err)\u000athrow err\u000a}\u000a;g=\u0022\u0022;\u000areturn root;\u000a}\u000a}\u000a}\u000a}
# end
(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g.s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g.L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);if(__vd_version_info__.delayedGwx||false)$gwx_XC_0();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,130 @@
#!/usr/bin/env node
const { spawn, spawnSync } = require("child_process");
const path = require("path");
const fs = require("fs");
const { exit } = require("process");
const projectPath = "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/";
const config = [
"-d",
"--split",
">_<4685",
"-cc",
"9>_<4685./miniprogram_npm/miniprogram-barrage/index.wxml>_<46850>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<46850>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<46850>_<4685./miniprogram_npm/wxml-to-canvas/index.wxml>_<46850>_<4685./page/API/index.wxml>_<46851>_<4685set-tab-bar>_<4685./page/API/components/set-tab-bar/set-tab-bar.wxml>_<46850>_<4685./page/cloud/index.wxml>_<46850>_<4685./page/component/index.wxml>_<46850>_<4685./page/extend/index.wxml>_<46850",
"-llw",
"./miniprogram_npm/miniprogram-barrage/index>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<4685./miniprogram_npm/wxml-to-canvas/index>_<4685./page/API/index>_<4685./page/API/components/set-tab-bar/set-tab-bar>_<4685./page/cloud/index>_<4685./page/component/index>_<4685./page/extend/index",
"./miniprogram_npm/miniprogram-barrage/index.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml",
"./miniprogram_npm/wxml-to-canvas/index.wxml",
"./page/API/index.wxml",
"./page/API/components/set-tab-bar/set-tab-bar.wxml",
"./page/cloud/index.wxml",
"./page/common/foot.wxml",
"./page/common/head.wxml",
"./page/component/index.wxml",
"./page/extend/index.wxml",
"-gn",
"$gwx",
];
const test_wine = () => {
const wine = spawn(
path.resolve(__dirname, "../../../../package.nw/js/vendor/wcc.exe"),
config,
{
cwd: projectPath,
}
);
const spwanData = [],
errData = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
console.log("wine n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
result = JSON.parse(result);
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4)
// result = result.generateFunctionContent["__COMMON__"];
fs.writeFileSync(
path.resolve(__dirname, "./3/wine_output.json"),
result
);
// process.stdout.write(result);
resolve(result);
} else {
process.stderr.write(
"wine error:",
Buffer.concat(errData).toString()
);
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test_node = () => {
const node_exec = spawn(
path.resolve(__dirname, "../../../nodejs/wcc"),
config,
{
cwd: projectPath,
env: {
WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, "./3"),
},
// stdio: 'inherit'
}
);
const spwanData = [],
errData = [];
node_exec.stdout.on("data", (e) => {
spwanData.push(e);
// console.log(e.toString())
});
node_exec.stderr.on("data", (e) => {
errData.push(e);
// console.log(e.toString())
});
return new Promise((resolve, reject) => {
node_exec.on("close", (n) => {
console.log("node n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
// require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result)
// process.stdout.write(result);
result = JSON.parse(result);
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4)
// result = result.generateFunctionContent["__COMMON__"];
fs.writeFileSync(
path.resolve(__dirname, "./3/node_output.json"),
result
);
resolve(result);
} else {
process.stderr.write(Buffer.concat(errData).toString());
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test = async () => {
try {
const node_result = await test_node();
const wine_result = await test_wine();
console.log("结果是否一致:", wine_result.trim() === node_result);
} catch (err) {
console.error("错误:", err);
}
};
test();

View File

@ -0,0 +1,168 @@
#!/usr/bin/env node
const { spawn, spawnSync } = require("child_process");
const path = require("path");
const fs = require("fs");
const { exit } = require("process");
const projectPath = "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/";
const config = [
"-d",
"--split",
">_<3975",
"-cc",
"34>_<3975./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml>_<39750>_<3975./packageComponent/pages/canvas/webgl/webgl.wxml>_<39750>_<3975./packageComponent/pages/content/icon/icon.wxml>_<39750>_<3975./packageComponent/pages/content/progress/progress.wxml>_<39750>_<3975./packageComponent/pages/content/rich-text/rich-text.wxml>_<39750>_<3975./packageComponent/pages/content/text/text.wxml>_<39750>_<3975./packageComponent/pages/form/button/button.wxml>_<39750>_<3975./packageComponent/pages/form/checkbox/checkbox.wxml>_<39750>_<3975./packageComponent/pages/form/editor/editor.wxml>_<39750>_<3975./packageComponent/pages/form/form/form.wxml>_<39750>_<3975./packageComponent/pages/form/input/input.wxml>_<39750>_<3975./packageComponent/pages/form/label/label.wxml>_<39750>_<3975./packageComponent/pages/form/picker/picker.wxml>_<39750>_<3975./packageComponent/pages/form/picker-view/picker-view.wxml>_<39750>_<3975./packageComponent/pages/form/radio/radio.wxml>_<39750>_<3975./packageComponent/pages/form/slider/slider.wxml>_<39750>_<3975./packageComponent/pages/form/switch/switch.wxml>_<39750>_<3975./packageComponent/pages/form/textarea/textarea.wxml>_<39750>_<3975./packageComponent/pages/map/map/map.wxml>_<39750>_<3975./packageComponent/pages/media/camera/camera.wxml>_<39750>_<3975./packageComponent/pages/media/image/image.wxml>_<39750>_<3975./packageComponent/pages/media/live-player/live-player.wxml>_<39750>_<3975./packageComponent/pages/media/live-pusher/live-pusher.wxml>_<39750>_<3975./packageComponent/pages/media/video/video.wxml>_<39750>_<3975./packageComponent/pages/nav/navigator/navigator.wxml>_<39750>_<3975./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml>_<39750>_<3975./packageComponent/pages/open/ad/ad.wxml>_<39750>_<3975./packageComponent/pages/open/open-data/open-data.wxml>_<39750>_<3975./packageComponent/pages/open/web-view/web-view.wxml>_<39750>_<3975./packageComponent/pages/view/cover-view/cover-view.wxml>_<39750>_<3975./packageComponent/pages/view/movable-view/movable-view.wxml>_<39750>_<3975./packageComponent/pages/view/scroll-view/scroll-view.wxml>_<39750>_<3975./packageComponent/pages/view/swiper/swiper.wxml>_<39750>_<3975./packageComponent/pages/view/view/view.wxml>_<39750",
"-llw",
"./packageComponent/pages/canvas/canvas-2d/canvas-2d>_<3975./packageComponent/pages/canvas/webgl/webgl>_<3975./packageComponent/pages/content/icon/icon>_<3975./packageComponent/pages/content/progress/progress>_<3975./packageComponent/pages/content/rich-text/rich-text>_<3975./packageComponent/pages/content/text/text>_<3975./packageComponent/pages/form/button/button>_<3975./packageComponent/pages/form/checkbox/checkbox>_<3975./packageComponent/pages/form/editor/editor>_<3975./packageComponent/pages/form/form/form>_<3975./packageComponent/pages/form/input/input>_<3975./packageComponent/pages/form/label/label>_<3975./packageComponent/pages/form/picker/picker>_<3975./packageComponent/pages/form/picker-view/picker-view>_<3975./packageComponent/pages/form/radio/radio>_<3975./packageComponent/pages/form/slider/slider>_<3975./packageComponent/pages/form/switch/switch>_<3975./packageComponent/pages/form/textarea/textarea>_<3975./packageComponent/pages/map/map/map>_<3975./packageComponent/pages/media/camera/camera>_<3975./packageComponent/pages/media/image/image>_<3975./packageComponent/pages/media/live-player/live-player>_<3975./packageComponent/pages/media/live-pusher/live-pusher>_<3975./packageComponent/pages/media/video/video>_<3975./packageComponent/pages/nav/navigator/navigator>_<3975./packageComponent/pages/obstacle-free/aria-component/aria-component>_<3975./packageComponent/pages/open/ad/ad>_<3975./packageComponent/pages/open/open-data/open-data>_<3975./packageComponent/pages/open/web-view/web-view>_<3975./packageComponent/pages/view/cover-view/cover-view>_<3975./packageComponent/pages/view/movable-view/movable-view>_<3975./packageComponent/pages/view/scroll-view/scroll-view>_<3975./packageComponent/pages/view/swiper/swiper>_<3975./packageComponent/pages/view/view/view",
"./miniprogram_npm/miniprogram-barrage/index.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml",
"./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml",
"./miniprogram_npm/wxml-to-canvas/index.wxml",
"./page/API/components/set-tab-bar/set-tab-bar.wxml",
"./page/API/index.wxml",
"./page/cloud/index.wxml",
"./page/common/foot.wxml",
"./page/common/head.wxml",
"./page/component/index.wxml",
"./page/extend/index.wxml",
"./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml",
"./packageComponent/pages/canvas/webgl/webgl.wxml",
"./packageComponent/pages/content/icon/icon.wxml",
"./packageComponent/pages/content/progress/progress.wxml",
"./packageComponent/pages/content/rich-text/rich-text.wxml",
"./packageComponent/pages/content/text/text.wxml",
"./packageComponent/pages/form/button/button.wxml",
"./packageComponent/pages/form/checkbox/checkbox.wxml",
"./packageComponent/pages/form/editor/editor.wxml",
"./packageComponent/pages/form/form/form.wxml",
"./packageComponent/pages/form/input/input.wxml",
"./packageComponent/pages/form/label/label.wxml",
"./packageComponent/pages/form/picker/picker.wxml",
"./packageComponent/pages/form/picker-view/picker-view.wxml",
"./packageComponent/pages/form/radio/radio.wxml",
"./packageComponent/pages/form/slider/slider.wxml",
"./packageComponent/pages/form/switch/switch.wxml",
"./packageComponent/pages/form/textarea/textarea.wxml",
"./packageComponent/pages/map/map/map.wxml",
"./packageComponent/pages/media/camera/camera.wxml",
"./packageComponent/pages/media/image/image.wxml",
"./packageComponent/pages/media/live-player/live-player.wxml",
"./packageComponent/pages/media/live-pusher/live-pusher.wxml",
"./packageComponent/pages/media/video/video.wxml",
"./packageComponent/pages/nav/navigator/navigator.wxml",
"./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml",
"./packageComponent/pages/open/ad/ad.wxml",
"./packageComponent/pages/open/open-data/open-data.wxml",
"./packageComponent/pages/open/web-view/web-view.wxml",
"./packageComponent/pages/view/cover-view/cover-view.wxml",
"./packageComponent/pages/view/movable-view/movable-view.wxml",
"./packageComponent/pages/view/scroll-view/scroll-view.wxml",
"./packageComponent/pages/view/swiper/swiper.wxml",
"./packageComponent/pages/view/view/view.wxml",
"-gn",
"$7061636b616765436f6d706f6e656e742f",
];
const test_wine = () => {
const wine = spawn(
path.resolve(__dirname, "../../../../package.nw/js/vendor/wcc.exe"),
config,
{
cwd: projectPath,
}
);
const spwanData = [],
errData = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
console.log("wine n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
result = JSON.parse(result);
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4);
// result = result.generateFunctionContent["__COMMON__"];
fs.writeFileSync(
path.resolve(__dirname, "./4/wine_output.json"),
result
);
// process.stdout.write(result);
resolve(result);
} else {
process.stderr.write(
"wine error:",
Buffer.concat(errData).toString()
);
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test_node = () => {
const node_exec = spawn(
path.resolve(__dirname, "../../../nodejs/wcc"),
config,
{
cwd: projectPath,
env: {
WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, "./4"),
},
// stdio: 'inherit'
}
);
const spwanData = [],
errData = [];
node_exec.stdout.on("data", (e) => {
spwanData.push(e);
// console.log(e.toString())
});
node_exec.stderr.on("data", (e) => {
errData.push(e);
// console.log(e.toString())
});
return new Promise((resolve, reject) => {
node_exec.on("close", (n) => {
console.log("node n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
// require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result)
// process.stdout.write(result);
result = JSON.parse(result);
// delete result.generateFunctionContent["__COMMON__"];
result = JSON.stringify(result, null, 4);
// result = result.generateFunctionContent["__COMMON__"];
fs.writeFileSync(
path.resolve(__dirname, "./4/node_output.json"),
result
);
fs.writeFileSync(
path.resolve(__dirname, "./4/node_stderr.json"),
Buffer.concat(errData)
);
resolve(result);
} else {
process.stderr.write(Buffer.concat(errData).toString());
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test = async () => {
try {
const node_result = await test_node();
const wine_result = await test_wine();
console.log("结果是否一致:", wine_result.trim() === node_result);
} catch (err) {
console.error("错误:", err);
}
};
test();

View File

@ -0,0 +1 @@
var cs = cs || [];\u000a$gwx_XC_1=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz,_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_decodeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ixc,_ic,_w,_ev,_tsd){return function(path,global){\u000aif(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}if(typeof __WXML_GLOBAL__ === 'undefined') {__WXML_GLOBAL__={};\u000a}__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};\u000avar e_={}\u000aif(typeof(global.entrys)==='undefined')global.entrys={};e_=global.entrys;\u000avar d_={}\u000aif(typeof(global.defines)==='undefined')global.defines={};d_=global.defines;\u000avar f_={}\u000aif(typeof(global.modules)==='undefined')global.modules={};f_=global.modules || {};\u000avar p_={}\u000avar cs = cs || [];\u000a__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}\u000a__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};\u000a__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};\u000avar z=__WXML_GLOBAL__.ops_set.$gwx_XC_1 || [];\u000afunction gz$gwx_XC_1_1(){\u000aif( __WXML_GLOBAL__.ops_cached.$gwx_XC_1_1)return __WXML_GLOBAL__.ops_cached.$gwx_XC_1_1\u000a__WXML_GLOBAL__.ops_cached.$gwx_XC_1_1=[];\u000a(function(z){var a=11;function Z(ops){z.push(ops)}\u000aZ([3,'container log-list'])\u000aZ([3,'log'])\u000aZ([[7],[3,'logs']])\u000aZ([3,'timeStamp'])\u000aZ([3,'log-item'])\u000aZ([a,[[2,'+'],[[7],[3,'index']],[1,1]],[3,'. '],[[6],[[7],[3,'log']],[3,'date']]])\u000a})(__WXML_GLOBAL__.ops_cached.$gwx_XC_1_1);return __WXML_GLOBAL__.ops_cached.$gwx_XC_1_1\u000a}\u000a__WXML_GLOBAL__.ops_set.$gwx_XC_1=z;\u000a__WXML_GLOBAL__.ops_init.$gwx_XC_1=true;\u000avar x=['./pages/logs/logs.wxml'];d_[x[0]]={}\u000avar m0=function(e,s,r,gg){\u000avar z=gz$gwx_XC_1_1()\u000acs.push(\u0022./pages/logs/logs.wxml:view:2:2\u0022)\u000avar oV=_n('view')\u000a_rz(z,oV,'class',0,e,s,gg)\u000avar cW=_v()\u000a_(oV,cW)\u000acs.push(\u0022./pages/logs/logs.wxml:block:3:4\u0022)\u000avar oX=function(aZ,lY,t1,gg){\u000acs.push(\u0022./pages/logs/logs.wxml:block:3:4\u0022)\u000acs.push(\u0022./pages/logs/logs.wxml:text:4:6\u0022)\u000avar b3=_n('text')\u000a_rz(z,b3,'class',4,aZ,lY,gg)\u000avar o4=_oz(z,5,aZ,lY,gg)\u000a_(b3,o4)\u000acs.pop()\u000a_(t1,b3)\u000acs.pop()\u000areturn t1\u000a}\u000acW.wxXCkey=2\u000a_2z(z,2,oX,e,s,gg,cW,'log','index','timeStamp')\u000acs.pop()\u000acs.pop()\u000a_(r,oV)\u000areturn r\u000a}\u000ae_[x[0]]={f:m0,j:[],i:[],ti:[],ic:[]}\u000aif(path&&e_[path]){\u000aouterGlobal.__wxml_comp_version__=0.02\u000areturn function(env,dd,global){$gwxc=0;var root={\u0022tag\u0022:\u0022wx-page\u0022};root.children=[]\u000a;g=\u0022$gwx_XC_1\u0022;var main=e_[path].f\u000acs=[]\u000aif (typeof global===\u0022undefined\u0022)global={};global.f=$gdc(f_[path],\u0022\u0022,1);\u000aif(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e-6>=0.02+1e-6&&outerGlobal.__mergeData__)\u000a{\u000aenv=outerGlobal.__mergeData__(env,dd);\u000a}\u000atry{\u000amain(env,{},root,global);\u000a_tsd(root)\u000aif(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1e-6<0.01+1e-6){return _ev(root);}\u000a}catch(err){\u000aconsole.log(cs, env);\u000aconsole.log(err)\u000athrow err\u000a}\u000a;g=\u0022\u0022;\u000areturn root;\u000a}\u000a}\u000a}\u000a}(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g.s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g.L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);if(__vd_version_info__.delayedGwx||false)$gwx_XC_1();

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,16 @@
const fs = require('fs')
const path = require('path')
var x=['./miniprogram_npm/miniprogram-barrage/index.wxml','./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml','./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml','./miniprogram_npm/wxml-to-canvas/index.wxml','./page/API/components/set-tab-bar/set-tab-bar.wxml','../../../common/head.wxml','../../../common/foot.wxml','./page/API/index.wxml','./page/cloud/index.wxml','./page/common/foot.wxml','./page/common/head.wxml','./page/component/index.wxml','./page/extend/index.wxml'];
const config = {
num: 4
}
const source = fs.readFileSync(path.resolve(__dirname, './3/linux_output.js')).toString()
const m0Exp = `var m${config.num}=function\\(e,s,r,gg\\){[\\s\\S]*{f:m${config.num},j:\\[.*?\\],i:\\[.*?\\],ti:\\[(.*?)\\],ic:\\[.*?\\]}`
console.log('exp --- ', m0Exp)
let m0 = source.match(new RegExp(m0Exp))
const compIndex = m0[1].match(/\d+/g)
console.log(compIndex)
for(let index of compIndex)
console.log(x[index])
m0 = m0[0].replace(new RegExp(`m${config.num}`, 'g'), 'm0').replace(new RegExp(`x\\[${config.num}\\]`, 'g'), 'x[0]')

File diff suppressed because one or more lines are too long

22
compiler/test/wcc/llw1.sh Normal file
View File

@ -0,0 +1,22 @@
#!/bin/bash
# 本脚本用于测试wcc编译器带llw参数时的编译结果
root_dir=$(cd `dirname $0`/../.. && pwd -P)
pkg_dir="/mnt/disk1/Project/WeCuit-Project/WeCuit-Mini-uni-test_uni_vue-cli/dist/build/mp-weixin"
pkg_dir="/home/msojocs/Documents/we1"
store_dir="$root_dir/test/wcc/llw/1"
cd "$pkg_dir" && \
wine "$root_dir/package.nw/js/vendor/wcc.exe" "-d" "--split" ">_<9657" "-cc" "2>_<9657./pages/index/index.wxml>_<96570>_<9657./pages/logs/logs.wxml>_<96570" "-llw" "./pages/index/index>_<9657./pages/logs/logs" "./pages/index/index.wxml" "./pages/logs/logs.wxml" "-gn" "\$gwx" > "$store_dir/wine.json"
echo "==================="
cd "$pkg_dir" && \
"$root_dir/compiler/nodejs/wcc" "-d" "--split" ">_<9657" "-cc" "2>_<9657./pages/index/index.wxml>_<96570>_<9657./pages/logs/logs.wxml>_<96570" "-llw" "./pages/index/index>_<9657./pages/logs/logs" "./pages/index/index.wxml" "./pages/logs/logs.wxml" "-gn" "\$gwx" > "$store_dir/nodejs.json"
diff "$store_dir/wine.json" "$store_dir/nodejs.json" >/dev/null
if [ "$?" == "0" ];then
echo "the file or dir is same!"
else
echo "the file or dir is different!"
fi

157
compiler/test/wcc/llw2.js Normal file
View File

@ -0,0 +1,157 @@
#!/usr/bin/env node
const { spawn, spawnSync } = require("child_process");
const path = require("path");
const { exit } = require("process");
const projectPath =
"/mnt/disk1/Project/WeCuit-Project/WeCuit-Mini-uni-test_uni_vue-cli/dist/dev/mp-weixin";
const config = [
"-ds",
"-d",
"--split",
">_<398",
"-cc",
"56>_<398./components/beat-char/beat-char.wxml>_<3980>_<398./components/card.wxml>_<3980>_<398./components/mytree/mytree.wxml>_<3981>_<398mytree>_<398./components/scroll/index.wxml>_<3980>_<398./components/tab/index.wxml>_<3980>_<398./miniprogram_npm/weui-miniprogram/cell/cell.wxml>_<3981>_<398mp-cells>_<398./miniprogram_npm/weui-miniprogram/cells/cells.wxml>_<3980>_<398./miniprogram_npm/weui-miniprogram/loading/loading.wxml>_<3980>_<398./node-modules/mp-html/dist/uni-app/components/mp-html/mp-html.wxml>_<3981>_<398node>_<398./node-modules/mp-html/dist/uni-app/components/mp-html/node/node.wxml>_<3981>_<398node>_<398./pages/THEOL/THEOL.wxml>_<3982>_<398mp-cell>_<398mp-cells>_<398./pages/THEOL/dir/dir.wxml>_<3982>_<398mp-cell>_<398mp-cells>_<398./pages/THEOL/tree/tree.wxml>_<3982>_<398mytree>_<398mp-loading>_<398./pages/articleView/articleView.wxml>_<3981>_<398html-parser>_<398./pages/auth/auth.wxml>_<3983>_<398uni-row>_<398uni-col>_<398uni-title>_<398./pages/calendar/calendar.wxml>_<3980>_<398./pages/card/card.wxml>_<3982>_<398mp-cell>_<398mp-cells>_<398./pages/checkIn/edit.wxml>_<3983>_<398d-form>_<398mp-cell>_<398mp-cells>_<398./pages/checkIn/list.wxml>_<3982>_<398mp-cell>_<398mp-cells>_<398./pages/courseTable/courseTable.wxml>_<3980>_<398./pages/courseTable/imgCropper/imgCropper.wxml>_<3981>_<398image-cropper>_<398./pages/exam/exam.wxml>_<3980>_<398./pages/grade/grade.wxml>_<3980>_<398./pages/index/index.wxml>_<3980>_<398./pages/laboratory/detail.wxml>_<3980>_<398./pages/laboratory/list.wxml>_<3980>_<398./pages/login/login.wxml>_<3980>_<398./pages/maintenance/maintenance.wxml>_<3981>_<398beat-char>_<398./pages/my/ADMag/ADMag.wxml>_<3980>_<398./pages/my/ADMag/watchAD/watchAD.wxml>_<3980>_<398./pages/my/about.wxml>_<3980>_<398./pages/my/bind/bind.wxml>_<3980>_<398./pages/my/bind/mini.wxml>_<3980>_<398./pages/my/dataMag/dataMag.wxml>_<3980>_<398./pages/my/info.wxml>_<3982>_<398uni-row>_<398uni-col>_<398./pages/my/my.wxml>_<3982>_<398uni-card>_<398info>_<398./pages/my/register/register.wxml>_<3980>_<398./pages/my/sso/forget.wxml>_<3980>_<398./pages/my/sso/sso.wxml>_<3982>_<398mp-cells>_<398mp-cell>_<398./pages/my/sub/sub.wxml>_<3982>_<398mp-cell>_<398mp-cells>_<398./pages/newsList/newsList.wxml>_<3982>_<398tab>_<398scroll>_<398./pages/officeGrade/query.wxml>_<3982>_<398mp-cells>_<398mp-cell>_<398./pages/resources/list.wxml>_<3980>_<398./pages/terms/privacy.wxml>_<3981>_<398card>_<398./pages/terms/terms.wxml>_<3980>_<398./uni_modules/uni-card/components/uni-card/uni-card.wxml>_<3981>_<398uni-icons>_<398./uni_modules/uni-icons/components/uni-icons/uni-icons.wxml>_<3980>_<398./uni_modules/uni-row/components/uni-col/uni-col.wxml>_<3980>_<398./uni_modules/uni-row/components/uni-row/uni-row.wxml>_<3980>_<398./uni_modules/uni-title/components/uni-title/uni-title.wxml>_<3980>_<398./wxcomponents/dynamicForm/components/timePicker/timePicker.wxml>_<3980>_<398./wxcomponents/dynamicForm/index.wxml>_<3983>_<398van-icon>_<398van-uploader>_<398time-picker>_<398./wxcomponents/dynamicForm/vant/icon/index.wxml>_<3981>_<398van-info>_<398./wxcomponents/dynamicForm/vant/info/index.wxml>_<3980>_<398./wxcomponents/dynamicForm/vant/uploader/index.wxml>_<3981>_<398van-icon>_<398./wxcomponents/image-cropper/image-cropper.wxml>_<3980",
"-llw",
"./components/beat-char/beat-char>_<398./components/card>_<398./components/mytree/mytree>_<398./components/scroll/index>_<398./components/tab/index>_<398./miniprogram_npm/weui-miniprogram/cell/cell>_<398./miniprogram_npm/weui-miniprogram/cells/cells>_<398./miniprogram_npm/weui-miniprogram/loading/loading>_<398./node-modules/mp-html/dist/uni-app/components/mp-html/mp-html>_<398./node-modules/mp-html/dist/uni-app/components/mp-html/node/node>_<398./pages/THEOL/THEOL>_<398./pages/THEOL/dir/dir>_<398./pages/THEOL/tree/tree>_<398./pages/articleView/articleView>_<398./pages/auth/auth>_<398./pages/calendar/calendar>_<398./pages/card/card>_<398./pages/checkIn/edit>_<398./pages/checkIn/list>_<398./pages/courseTable/courseTable>_<398./pages/courseTable/imgCropper/imgCropper>_<398./pages/exam/exam>_<398./pages/grade/grade>_<398./pages/index/index>_<398./pages/laboratory/detail>_<398./pages/laboratory/list>_<398./pages/login/login>_<398./pages/maintenance/maintenance>_<398./pages/my/ADMag/ADMag>_<398./pages/my/ADMag/watchAD/watchAD>_<398./pages/my/about>_<398./pages/my/bind/bind>_<398./pages/my/bind/mini>_<398./pages/my/dataMag/dataMag>_<398./pages/my/info>_<398./pages/my/my>_<398./pages/my/register/register>_<398./pages/my/sso/forget>_<398./pages/my/sso/sso>_<398./pages/my/sub/sub>_<398./pages/newsList/newsList>_<398./pages/officeGrade/query>_<398./pages/resources/list>_<398./pages/terms/privacy>_<398./pages/terms/terms>_<398./uni_modules/uni-card/components/uni-card/uni-card>_<398./uni_modules/uni-icons/components/uni-icons/uni-icons>_<398./uni_modules/uni-row/components/uni-col/uni-col>_<398./uni_modules/uni-row/components/uni-row/uni-row>_<398./uni_modules/uni-title/components/uni-title/uni-title>_<398./wxcomponents/dynamicForm/components/timePicker/timePicker>_<398./wxcomponents/dynamicForm/index>_<398./wxcomponents/dynamicForm/vant/icon/index>_<398./wxcomponents/dynamicForm/vant/info/index>_<398./wxcomponents/dynamicForm/vant/uploader/index>_<398./wxcomponents/image-cropper/image-cropper",
"./components/beat-char/beat-char.wxml",
"./components/card.wxml",
"./components/mytree/mytree.wxml",
"./components/scroll/index.wxml",
"./components/tab/index.wxml",
"./miniprogram_npm/weui-miniprogram/cell/cell.wxml",
"./miniprogram_npm/weui-miniprogram/cells/cells.wxml",
"./miniprogram_npm/weui-miniprogram/loading/loading.wxml",
"./node-modules/mp-html/dist/uni-app/components/mp-html/mp-html.wxml",
"./node-modules/mp-html/dist/uni-app/components/mp-html/node/node.wxml",
"./pages/THEOL/THEOL.wxml",
"./pages/THEOL/dir/dir.wxml",
"./pages/THEOL/tree/tree.wxml",
"./pages/articleView/articleView.wxml",
"./pages/auth/auth.wxml",
"./pages/calendar/calendar.wxml",
"./pages/card/card.wxml",
"./pages/checkIn/edit.wxml",
"./pages/checkIn/list.wxml",
"./pages/courseTable/courseTable.wxml",
"./pages/courseTable/imgCropper/imgCropper.wxml",
"./pages/exam/exam.wxml",
"./pages/grade/grade.wxml",
"./pages/index/index.wxml",
"./pages/laboratory/detail.wxml",
"./pages/laboratory/list.wxml",
"./pages/login/login.wxml",
"./pages/maintenance/maintenance.wxml",
"./pages/my/ADMag/ADMag.wxml",
"./pages/my/ADMag/watchAD/watchAD.wxml",
"./pages/my/about.wxml",
"./pages/my/bind/bind.wxml",
"./pages/my/bind/mini.wxml",
"./pages/my/dataMag/dataMag.wxml",
"./pages/my/info.wxml",
"./pages/my/my.wxml",
"./pages/my/register/register.wxml",
"./pages/my/sso/forget.wxml",
"./pages/my/sso/sso.wxml",
"./pages/my/sub/sub.wxml",
"./pages/newsList/newsList.wxml",
"./pages/officeGrade/query.wxml",
"./pages/resources/list.wxml",
"./pages/terms/privacy.wxml",
"./pages/terms/terms.wxml",
"./uni_modules/uni-card/components/uni-card/uni-card.wxml",
"./uni_modules/uni-icons/components/uni-icons/uni-icons.wxml",
"./uni_modules/uni-row/components/uni-col/uni-col.wxml",
"./uni_modules/uni-row/components/uni-row/uni-row.wxml",
"./uni_modules/uni-title/components/uni-title/uni-title.wxml",
"./wxcomponents/dynamicForm/components/timePicker/timePicker.wxml",
"./wxcomponents/dynamicForm/index.wxml",
"./wxcomponents/dynamicForm/vant/icon/index.wxml",
"./wxcomponents/dynamicForm/vant/info/index.wxml",
"./wxcomponents/dynamicForm/vant/uploader/index.wxml",
"./wxcomponents/image-cropper/image-cropper.wxml",
"./pages/grade/check.wxs",
"./pages/laboratory/labDetail.wxs",
"-gn",
"$gwx",
];
const test_wine = () => {
const wine = spawn(
path.resolve(__dirname, "../../package.nw/js/vendor/wcc.exe"),
config,
{
cwd: projectPath,
}
);
const spwanData = [],
errData = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
console.log("n: ", n);
if (0 === n) {
const result = Buffer.concat(spwanData).toString();
process.stdout.write(result);
resolve(result);
} else {
process.stderr.write(Buffer.concat(errData).toString());
process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test_node = () => {
const node_exec = spawn(
path.resolve(__dirname, "../../compiler/nodejs/wcc"),
config,
{
cwd: projectPath,
// stdio: 'inherit'
}
);
const spwanData = [],
errData = [];
node_exec.stdout.on("data", (e) => {
spwanData.push(e);
// console.log(e.toString())
});
node_exec.stderr.on("data", (e) => {
errData.push(e);
// console.log(e.toString())
});
return new Promise((resolve, reject) => {
node_exec.on("close", (n) => {
console.log("n: ", n);
if (0 === n) {
const result = Buffer.concat(spwanData).toString();
// require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result)
process.stdout.write(result);
resolve(result);
} else {
process.stderr.write(Buffer.concat(errData).toString());
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const test = async () => {
try {
const wine_result = await test_wine();
const node_result = await test_node();
console.log(wine_result === node_result)
} catch (err) {
console.error('错误:', err);
}
};
test();

23
compiler/test/wcc/llw2.sh Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,186 @@
$gwx_XC_0=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz,_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_decodeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ixc,_ic,_w,_ev,_tsd){return function(path,global){
if(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}
if(typeof __WXML_GLOBAL__ === 'undefined') {
__WXML_GLOBAL__={};
}__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};
var e_={}
if(typeof(global.entrys)==='undefined')global.entrys={};e_=global.entrys;
var d_={}
if(typeof(global.defines)==='undefined')global.defines={};d_=global.defines;
var f_={}
if(typeof(global.modules)==='undefined')global.modules={};f_=global.modules || {};
var p_={}
var cs
__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}
__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};
__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};
var z=__WXML_GLOBAL__.ops_set.$gwx_XC_0 || [];
function gz$gwx_XC_0_1(){
if( __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1)return __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1
__WXML_GLOBAL__.ops_cached.$gwx_XC_0_1=[];
(function(z){var a=11;function Z(ops){z.push(ops)}
Z([3,'container'])
Z([3,'0'])
Z([3,'userinfo'])
Z([3,'1'])
Z([3,'2'])
Z([[7],[3,'canIUseOpenData']])
Z([3,'bindViewTap'])
Z([3,'userinfo-avatar'])
Z([3,'3'])
Z([3,'width: 183rpx; height: 148rpx; display: block; box-sizing: border-box'])
Z([3,'4'])
Z([3,'userAvatarUrl'])
Z([3,'5'])
Z([3,'userNickName'])
Z([3,'6'])
Z([[2,'!'],[[7],[3,'hasUserInfo']]])
Z([[7],[3,'canIUseGetUserProfile']])
Z([3,'getUserProfile'])
Z([3,'7'])
Z([3,' 获取头像昵称 '])
Z([[7],[3,'canIUse']])
Z([3,'getUserInfo'])
Z([3,'8'])
Z(z[21])
Z(z[19])
Z([3,'9'])
Z([3,' 请使用1.4.4及以上版本基础库 '])
Z([3,'10'])
Z(z[6])
Z(z[7])
Z([3,'11'])
Z([3,'cover'])
Z([[6],[[7],[3,'userInfo']],[3,'avatarUrl']])
Z([3,'userinfo-nickname'])
Z([3,'12'])
Z([a,[[6],[[7],[3,'userInfo']],[3,'nickName']]])
Z([3,'usermotto'])
Z([3,'13'])
Z([3,'user-motto'])
Z([3,'14'])
Z([a,[[7],[3,'motto']]])
})(__WXML_GLOBAL__.ops_cached.$gwx_XC_0_1);return __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1
}
__WXML_GLOBAL__.ops_set.$gwx_XC_0=z;
__WXML_GLOBAL__.ops_init.$gwx_XC_0=true;
var x=['./pages/index/index.wxml'];d_[x[0]]={}
var m0=function(e,s,r,gg){
var z=gz$gwx_XC_0_1()
cs.push("./pages/index/index.wxml:view:2:2")
var oB=_mz(z,'view',['class',0,'data-ib-structured-id',1],[],e,s,gg)
cs.push("./pages/index/index.wxml:view:3:4")
var xC=_mz(z,'view',['class',2,'data-ib-structured-id',1],[],e,s,gg)
var oD=_v()
_(xC,oD)
if(_oz(z,5,e,s,gg)){oD.wxVkey=1
cs.push("./pages/index/index.wxml:block:4:6")
cs.push("./pages/index/index.wxml:view:5:8")
var fE=_mz(z,'view',['bindtap',6,'class',1,'data-ib-structured-id',2,'style',3],[],e,s,gg)
cs.push("./pages/index/index.wxml:open-data:6:10")
var cF=_mz(z,'open-data',['data-ib-structured-id',10,'type',1],[],e,s,gg)
cs.pop()
_(fE,cF)
cs.pop()
_(oD,fE)
cs.push("./pages/index/index.wxml:open-data:8:8")
var hG=_mz(z,'open-data',['data-ib-structured-id',12,'type',1],[],e,s,gg)
cs.pop()
_(oD,hG)
cs.pop()
}
else if(_oz(z,15,e,s,gg)){oD.wxVkey=2
cs.push("./pages/index/index.wxml:block:10:6")
var oH=_v()
_(oD,oH)
if(_oz(z,16,e,s,gg)){oH.wxVkey=1
cs.push("./pages/index/index.wxml:button:11:8")
cs.push("./pages/index/index.wxml:button:11:8")
var cI=_mz(z,'button',['bindtap',17,'data-ib-structured-id',1],[],e,s,gg)
var oJ=_oz(z,19,e,s,gg)
_(cI,oJ)
cs.pop()
_(oH,cI)
cs.pop()
}
else if(_oz(z,20,e,s,gg)){oH.wxVkey=2
cs.push("./pages/index/index.wxml:button:12:8")
cs.push("./pages/index/index.wxml:button:12:8")
var lK=_mz(z,'button',['bindgetuserinfo',21,'data-ib-structured-id',1,'openType',2],[],e,s,gg)
var aL=_oz(z,24,e,s,gg)
_(lK,aL)
cs.pop()
_(oH,lK)
cs.pop()
}
else{oH.wxVkey=3
cs.push("./pages/index/index.wxml:view:13:8")
cs.push("./pages/index/index.wxml:view:13:8")
var tM=_n('view')
_rz(z,tM,'data-ib-structured-id',25,e,s,gg)
var eN=_oz(z,26,e,s,gg)
_(tM,eN)
cs.pop()
_(oH,tM)
cs.pop()
}
oH.wxXCkey=1
cs.pop()
}
else{oD.wxVkey=3
cs.push("./pages/index/index.wxml:block:15:6")
cs.push("./pages/index/index.wxml:image:16:8")
var bO=_mz(z,'image',['bindtap',28,'class',1,'data-ib-structured-id',2,'mode',3,'src',4],[],e,s,gg)
cs.pop()
_(oD,bO)
cs.push("./pages/index/index.wxml:text:17:8")
var oP=_mz(z,'text',['class',33,'data-ib-structured-id',1],[],e,s,gg)
var xQ=_oz(z,35,e,s,gg)
_(oP,xQ)
cs.pop()
_(oD,oP)
cs.pop()
}
oD.wxXCkey=1
cs.pop()
_(oB,xC)
cs.push("./pages/index/index.wxml:view:20:4")
var oR=_mz(z,'view',['class',36,'data-ib-structured-id',1],[],e,s,gg)
cs.push("./pages/index/index.wxml:text:21:6")
var fS=_mz(z,'text',['class',38,'data-ib-structured-id',1],[],e,s,gg)
var cT=_oz(z,40,e,s,gg)
_(fS,cT)
cs.pop()
_(oR,fS)
cs.pop()
_(oB,oR)
cs.pop()
_(r,oB)
return r
}
e_[x[0]]={f:m0,j:[],i:[],ti:[],ic:[]}
if(path&&e_[path]){
window.__wxml_comp_version__=0.02
return function(env,dd,global){$gwxc=0;var root={"tag":"wx-page"};root.children=[]
;g="$gwx_XC_0";var main=e_[path].f
cs=[]
if (typeof global==="undefined")global={};global.f=$gdc(f_[path],"",1);
if(typeof(window.__webview_engine_version__)!='undefined'&&window.__webview_engine_version__+1e-6>=0.02+1e-6&&window.__mergeData__)
{
env=window.__mergeData__(env,dd);
}
try{
main(env,{},root,global);
_tsd(root)
if(typeof(window.__webview_engine_version__)=='undefined'|| window.__webview_engine_version__+1e-6<0.01+1e-6){return _ev(root);}
}catch(err){
console.log(cs, env);
console.log(err)
throw err
}
;g="";
return root;
}
}
}
}(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g.s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g.L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);if(__vd_version_info__.delayedGwx||false)$gwx_XC_0();

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,19 @@
#!/bin/bash
root_dir=$(cd `dirname $0`/../../.. && pwd -P)
# pkg_dir="/mnt/disk1/Project/WeCuit-Project/WeCuit-Mini-uni-test_uni_vue-cli/dist/build/mp-weixin"
pkg_dir="/home/msojocs/Documents/we1"
store_dir="$root_dir/test/wcc/ll/1"
# cd "$pkg_dir" && \
# wine "$root_dir/package.nw/js/vendor/wcc.exe" "-d" \
# "--split" ">_<6427" \
# "-xc" "2>_<6427./pages/index/index.wxml>_<64270>_<6427./pages/logs/logs.wxml>_<64270" "./pages/index/index.wxml" "./pages/logs/logs.wxml" \
# "-gn" "\$gwx" \
# "-ll" "./pages/index/index>_<6427./pages/logs/logs"
cd "$pkg_dir" && \
/mnt/disk1/GitHub/wechat-devtools-linux/compiler/wcc "-d" \
"--split" ">_<6427" \
"-xc" "2>_<6427./pages/index/index.wxml>_<64270>_<6427./pages/logs/logs.wxml>_<64270" "./pages/index/index.wxml" "./pages/logs/logs.wxml" \
"-gn" "\$gwx" \
"-ll" "./pages/index/index>_<6427./pages/logs/logs"

View File

@ -0,0 +1,18 @@
#!/bin/bash
# 本脚本用于测试wcc编译器带ll参数时的编译结果
root_dir=$(cd `dirname $0`/../../.. && pwd -P)
# pkg_dir="/mnt/disk1/Project/WeCuit-Project/WeCuit-Mini-uni-test_uni_vue-cli/dist/build/mp-weixin"
pkg_dir="/home/msojocs/Documents/we1"
store_dir="$root_dir/test/wcc/ll/1"
cd "$pkg_dir" && \
"$root_dir/compiler/nodejs/wcc" "-d" "--split" ">_<9657" "-cc" "2>_<9657./pages/index/index.wxml>_<96570>_<9657./pages/logs/logs.wxml>_<96570" "./pages/index/index>_<9657./pages/logs/logs" "./pages/index/index.wxml" "./pages/logs/logs.wxml" "-gn" "\$gwx" \
"-ll" "./pages/index/index>_<7055./pages/logs/logs" \
> "$store_dir/nodejs.json"
diff "$store_dir/wine.json" "$store_dir/nodejs.json" >/dev/null
if [ "$?" == "0" ];then
echo "the file or dir is same!"
else
echo "the file or dir is different!"
fi

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More