mirror of
https://gitee.com/layui/layui.git
synced 2025-11-10 03:14:54 +08:00
63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
/**
|
|
* 生成发行版
|
|
*/
|
|
|
|
import { createRequire } from 'node:module';
|
|
import shell from 'shelljs';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import archiver from 'archiver';
|
|
|
|
const require = createRequire(import.meta.url);
|
|
const pkg = require('../package.json');
|
|
|
|
let folder = `release/assets/${pkg.name}-v${pkg.version}`;
|
|
let DEST = `${folder}/dist`;
|
|
|
|
// 若传入 -V=../path/,则输出到该路径下一个带版本号的目录中
|
|
const env = process.env;
|
|
if (env.V) {
|
|
folder = env.V;
|
|
DEST = `${folder}/${pkg.version}`;
|
|
}
|
|
|
|
shell.mkdir('-p', folder);
|
|
shell.mkdir('-p', DEST);
|
|
|
|
// 复制发行版文件
|
|
shell.cp('-R', ['dist/css', 'dist/*.js'], DEST);
|
|
shell.rm('-f', `${DEST}/css/*.map`);
|
|
shell.rm('-f', `${DEST}/index.js`);
|
|
|
|
// 剔除 sourceMappingURL
|
|
shell.sed('-i', /^[ \t]*\/\/# sourceMappingURL=.*$/gm, '', `${DEST}/*.js`);
|
|
shell.sed(
|
|
'-i',
|
|
/^[ \t]*\/\*# sourceMappingURL=.*\*\/$/gm,
|
|
'',
|
|
`${DEST}/css/*.css`,
|
|
);
|
|
|
|
if (!env.V) {
|
|
// 复制可视化示例模板
|
|
shell.cp('-R', ['tests/visual/template/release/*'], folder);
|
|
|
|
// 创建压缩包
|
|
const output = fs.createWriteStream(`${folder}.zip`);
|
|
const archive = archiver('zip', {
|
|
zlib: { level: 9 }, // 压缩级别
|
|
});
|
|
|
|
output.on('close', () => {
|
|
console.log(`已生成 ${folder}.zip`);
|
|
});
|
|
archive.on('error', (err) => {
|
|
console.error('压缩失败:', err);
|
|
process.exit(1);
|
|
});
|
|
|
|
archive.pipe(output);
|
|
archive.directory(folder, path.basename(folder)); // 将整个文件夹压入 zip
|
|
await archive.finalize();
|
|
}
|