Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add build to wgt #105

Open
wants to merge 1 commit into
base: vite
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions build-wgt.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/**
* @author LinTx
* @description
* uni-app 打包wgt包
* 适用于uni cli,vue3项目
* 打包目录为appDir(./dist/build/app)
* 输出目录为outputDir(./dist/build/wgt)
* 打包时会自动读取manifest.json中的id和version.name生成wgt文件名(id-version.name.wgt)
* 文件已存在时不会覆盖旧的打包文件,需要删除旧的wgt文件后重新打包,或者修改版本号后重新打包(有提示)
* 需要先执行build命令(uni build -p app)
* 可以在package.json中的script块添加以下脚本:
* "build:wgt": "uni build -p app && node build-wgt.js"
* 然后执行npm run build:wgt即可生成wgt包
* @example node build-wgt.js
* @example npm run build:wgt
* @version 20241213 1.0.0
*/
const fs = require('fs');
const archiver = require('archiver');

//需要打包的文件目录
const appDir = './dist/build/app'
//输出的wgt文件目录
const outputDir = './dist/build/wgt';
//自动创建输出目录
fs.mkdirSync(outputDir, { recursive: true });

//读取配置信息
const manifest = require(`${appDir}/manifest.json`);
//构建输出文件名
const outputFile = `${outputDir}/${manifest.id}-${manifest.version.name}.wgt`;
if (fs.existsSync(outputFile)) {
console.error("\x1b[31m%s\x1b[0m",`目标文件${outputFile}已存在,请删除旧版本或者修改版本号后重新生成!`);
process.exit(1);
}

const output = fs.createWriteStream(outputFile);
const archive = archiver('zip', {
zlib: { level: 9 } // 设置压缩级别
});

archive.on('error', function (err) {
throw err;
});

output.on('close', function () {
console.log(`wgt包生成完毕
文件路径: ${outputFile}
文件大小: ${(archive.pointer() / 1024 / 1024).toFixed(1)}MB`);
});

archive.pipe(output);
archive.directory(appDir, '')
archive.finalize();
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
"build:mp-xhs": "uni build -p mp-xhs",
"build:quickapp-webview": "uni build -p quickapp-webview",
"build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
"build:quickapp-webview-union": "uni build -p quickapp-webview-union"
"build:quickapp-webview-union": "uni build -p quickapp-webview-union",
"build:wgt": "uni build -p app && node build-wgt.js"
},
"dependencies": {
"@dcloudio/uni-app": "3.0.0-4030620241128001",
Expand Down Expand Up @@ -59,6 +60,7 @@
"@dcloudio/uni-stacktracey": "3.0.0-4030620241128001",
"@dcloudio/vite-plugin-uni": "3.0.0-4030620241128001",
"@vue/runtime-core": "^3.4.21",
"archiver": "^7.0.1",
"vite": "5.2.8"
}
}