mirror of
https://github.com/msojocs/wechat-web-devtools-linux.git
synced 2025-07-07 00:02:14 +08:00
218 lines
13 KiB
JavaScript
218 lines
13 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const { spawn, spawnSync } = require("child_process");
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
const { exit } = require("process");
|
|
|
|
const samples = []
|
|
const config3 = {
|
|
projectPath: "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/",
|
|
args: [
|
|
"-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",
|
|
]
|
|
}
|
|
samples.push([config3, 3])
|
|
const config4 = {
|
|
projectPath: "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/",
|
|
args: [
|
|
"-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",
|
|
]
|
|
}
|
|
samples.push([config4, 4])
|
|
|
|
const config5 = {
|
|
projectPath: "/mnt/disk1/WeChatProjects/we1",
|
|
args: ["-d","--split",">_<2460","-xc","2>_<2460./pages/index/index.wxml>_<24600>_<2460./pages/logs/logs.wxml>_<24600","-lla","./pages/index/index>_<2460./pages/logs/logs","./pages/index/index.wxml","./pages/logs/logs.wxml","-gn","$gwx"]
|
|
}
|
|
samples.push([config5, 5])
|
|
|
|
const test_wine = (config, id) => {
|
|
const wine = spawn(
|
|
path.resolve(__dirname, "../../../../package.nw/js/vendor/wcc.exe"),
|
|
config.args,
|
|
{
|
|
cwd: config.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, `./${id}/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 = (config, id) => {
|
|
try {
|
|
fs.mkdirSync(path.resolve(__dirname, id))
|
|
} catch (ignore) {
|
|
|
|
}
|
|
const node_exec = spawn(
|
|
path.resolve(__dirname, "../../../nodejs/wcc"),
|
|
config.args,
|
|
{
|
|
cwd: config.projectPath,
|
|
env: {
|
|
WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, id),
|
|
},
|
|
// 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, `./${id}/node_output.json`),
|
|
result
|
|
);
|
|
fs.writeFileSync(
|
|
path.resolve(__dirname, `./${id}/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 (config) => {
|
|
try {
|
|
const node_result = await test_node(config[0], config[1] + '');
|
|
const wine_result = await test_wine(config[0], config[1] + '');
|
|
console.log("结果是否一致:", wine_result.trim() === node_result);
|
|
} catch (err) {
|
|
console.error("错误:", err);
|
|
}
|
|
};
|
|
(async ()=>{
|
|
for(let sample of samples){
|
|
await test(sample)
|
|
}
|
|
})()
|