mirror of
https://github.com/allinssl/allinssl.git
synced 2025-12-18 10:04:01 +08:00
【新增】私有证书
This commit is contained in:
@@ -0,0 +1,336 @@
|
||||
import { series, parallel } from 'gulp';
|
||||
import { GulpBuildTools, createBuildTools, CompressConfig } from '../src/index.js';
|
||||
|
||||
/**
|
||||
* 多压缩任务示例
|
||||
* 展示如何使用 Gulp Build Tools 进行多个文件的并行和串行压缩
|
||||
*/
|
||||
|
||||
// 创建构建工具实例
|
||||
const buildTools = createBuildTools({
|
||||
cwd: process.cwd(),
|
||||
verbose: true,
|
||||
tempDir: './temp'
|
||||
});
|
||||
|
||||
/**
|
||||
* 示例 1: 串行多压缩任务
|
||||
* 按顺序依次压缩多个文件包
|
||||
*/
|
||||
const serialMultiCompressConfigs: CompressConfig[] = [
|
||||
{
|
||||
src: ['src/**/*.ts'],
|
||||
filename: 'source-code.zip',
|
||||
dest: './dist/archives',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
},
|
||||
{
|
||||
src: ['docs/**/*.md'],
|
||||
filename: 'documentation.tar.gz',
|
||||
dest: './dist/archives',
|
||||
type: 'gzip',
|
||||
level: 9
|
||||
},
|
||||
{
|
||||
src: ['assets/**/*'],
|
||||
filename: 'assets-bundle.zip',
|
||||
dest: './dist/archives',
|
||||
type: 'zip',
|
||||
level: 4
|
||||
}
|
||||
];
|
||||
|
||||
export const serialMultiCompress = buildTools.multiCompress(serialMultiCompressConfigs, false);
|
||||
|
||||
/**
|
||||
* 示例 2: 并行多压缩任务
|
||||
* 同时压缩多个文件包,提高效率
|
||||
*/
|
||||
const parallelMultiCompressConfigs: CompressConfig[] = [
|
||||
{
|
||||
src: ['build/**/*.js', 'build/**/*.css'],
|
||||
filename: 'production-assets.zip',
|
||||
dest: './releases',
|
||||
type: 'zip',
|
||||
level: 9
|
||||
},
|
||||
{
|
||||
src: ['tests/**/*.spec.ts'],
|
||||
filename: 'test-files.tar',
|
||||
dest: './backups',
|
||||
type: 'tar'
|
||||
},
|
||||
{
|
||||
src: ['config/**/*.json', 'config/**/*.yaml'],
|
||||
filename: 'configurations.zip',
|
||||
dest: './backups',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
}
|
||||
];
|
||||
|
||||
export const parallelMultiCompress = buildTools.multiCompress(parallelMultiCompressConfigs, true);
|
||||
|
||||
/**
|
||||
* 示例 3: 多环境部署包压缩
|
||||
* 为不同环境创建对应的部署包
|
||||
*/
|
||||
const environmentPackages: CompressConfig[] = [
|
||||
{
|
||||
src: ['dist/dev/**/*'],
|
||||
filename: 'app-dev-v1.0.0.zip',
|
||||
dest: './releases/dev',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
},
|
||||
{
|
||||
src: ['dist/staging/**/*'],
|
||||
filename: 'app-staging-v1.0.0.zip',
|
||||
dest: './releases/staging',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
},
|
||||
{
|
||||
src: ['dist/production/**/*'],
|
||||
filename: 'app-production-v1.0.0.zip',
|
||||
dest: './releases/production',
|
||||
type: 'zip',
|
||||
level: 9
|
||||
}
|
||||
];
|
||||
|
||||
export const multiEnvironmentCompress = buildTools.multiCompress(environmentPackages, true);
|
||||
|
||||
/**
|
||||
* 示例 4: Monorepo 模块压缩
|
||||
* 为 Monorepo 中的每个模块单独打包
|
||||
*/
|
||||
const monorepoPackages: CompressConfig[] = [
|
||||
{
|
||||
src: ['packages/ui-components/dist/**/*'],
|
||||
filename: 'ui-components-v2.1.0.zip',
|
||||
dest: './releases/packages',
|
||||
type: 'zip',
|
||||
level: 8
|
||||
},
|
||||
{
|
||||
src: ['packages/utils/dist/**/*'],
|
||||
filename: 'utils-v1.5.2.zip',
|
||||
dest: './releases/packages',
|
||||
type: 'zip',
|
||||
level: 8
|
||||
},
|
||||
{
|
||||
src: ['packages/api-client/dist/**/*'],
|
||||
filename: 'api-client-v3.0.1.zip',
|
||||
dest: './releases/packages',
|
||||
type: 'zip',
|
||||
level: 8
|
||||
},
|
||||
{
|
||||
src: ['apps/web-app/dist/**/*'],
|
||||
filename: 'web-app-v1.0.0.tar.gz',
|
||||
dest: './releases/apps',
|
||||
type: 'gzip',
|
||||
level: 9
|
||||
}
|
||||
];
|
||||
|
||||
export const monorepoMultiCompress = buildTools.multiCompress(monorepoPackages, false);
|
||||
|
||||
/**
|
||||
* 示例 5: 备份归档系统
|
||||
* 创建不同类型的备份文件
|
||||
*/
|
||||
const backupConfigs: CompressConfig[] = [
|
||||
{
|
||||
src: ['src/**/*.ts', 'src/**/*.js'],
|
||||
filename: `source-backup-${new Date().toISOString().slice(0, 10)}.zip`,
|
||||
dest: './backups/daily',
|
||||
type: 'zip',
|
||||
level: 9
|
||||
},
|
||||
{
|
||||
src: ['database/**/*.sql'],
|
||||
filename: `database-backup-${new Date().toISOString().slice(0, 10)}.tar.gz`,
|
||||
dest: './backups/database',
|
||||
type: 'gzip',
|
||||
level: 9
|
||||
},
|
||||
{
|
||||
src: ['logs/**/*.log'],
|
||||
filename: `logs-backup-${new Date().toISOString().slice(0, 10)}.tar`,
|
||||
dest: './backups/logs',
|
||||
type: 'tar'
|
||||
},
|
||||
{
|
||||
src: ['uploads/**/*'],
|
||||
filename: `uploads-backup-${new Date().toISOString().slice(0, 10)}.zip`,
|
||||
dest: './backups/uploads',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
}
|
||||
];
|
||||
|
||||
export const backupMultiCompress = buildTools.multiCompress(backupConfigs, true);
|
||||
|
||||
/**
|
||||
* 示例 6: 不同压缩级别的性能测试
|
||||
* 使用不同压缩级别创建相同文件的多个版本
|
||||
*/
|
||||
const compressionLevelTest: CompressConfig[] = [
|
||||
{
|
||||
src: ['test-data/**/*'],
|
||||
filename: 'test-data-speed.zip',
|
||||
dest: './performance-test',
|
||||
type: 'zip',
|
||||
level: 1 // 最快压缩
|
||||
},
|
||||
{
|
||||
src: ['test-data/**/*'],
|
||||
filename: 'test-data-balanced.zip',
|
||||
dest: './performance-test',
|
||||
type: 'zip',
|
||||
level: 6 // 平衡压缩
|
||||
},
|
||||
{
|
||||
src: ['test-data/**/*'],
|
||||
filename: 'test-data-maximum.zip',
|
||||
dest: './performance-test',
|
||||
type: 'zip',
|
||||
level: 9 // 最大压缩
|
||||
}
|
||||
];
|
||||
|
||||
export const compressionTestMultiCompress = buildTools.multiCompress(compressionLevelTest, false);
|
||||
|
||||
/**
|
||||
* 示例 7: 混合格式多压缩
|
||||
* 创建不同格式的压缩文件以满足不同需求
|
||||
*/
|
||||
const mixedFormatConfigs: CompressConfig[] = [
|
||||
{
|
||||
src: ['build/**/*'],
|
||||
filename: 'release.zip',
|
||||
dest: './releases',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
},
|
||||
{
|
||||
src: ['build/**/*'],
|
||||
filename: 'release.tar.gz',
|
||||
dest: './releases',
|
||||
type: 'gzip',
|
||||
level: 9
|
||||
},
|
||||
{
|
||||
src: ['build/**/*'],
|
||||
filename: 'release.tar',
|
||||
dest: './releases',
|
||||
type: 'tar'
|
||||
}
|
||||
];
|
||||
|
||||
export const mixedFormatMultiCompress = buildTools.multiCompress(mixedFormatConfigs, true);
|
||||
|
||||
/**
|
||||
* 完整的部署流水线示例
|
||||
* 包含多压缩任务的完整部署流程
|
||||
*/
|
||||
export const deploymentPipeline = series(
|
||||
// 首先创建环境特定的压缩包
|
||||
multiEnvironmentCompress,
|
||||
|
||||
// 然后创建备份
|
||||
backupMultiCompress,
|
||||
|
||||
// 最后打包 Monorepo 模块
|
||||
parallel(
|
||||
monorepoMultiCompress,
|
||||
mixedFormatMultiCompress
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* 使用助手函数创建压缩配置的示例
|
||||
*/
|
||||
import { compressHelpers } from '../src/modules/compress.js';
|
||||
|
||||
const dynamicConfigs: CompressConfig[] = [
|
||||
compressHelpers.createConfig(
|
||||
['src/**/*.ts'],
|
||||
compressHelpers.timestampedFilename('source-code'),
|
||||
'./releases',
|
||||
{
|
||||
type: 'zip',
|
||||
level: compressHelpers.getCompressionLevel('balanced')
|
||||
}
|
||||
),
|
||||
compressHelpers.createConfig(
|
||||
['docs/**/*.md'],
|
||||
compressHelpers.timestampedFilename('documentation', 'tar.gz'),
|
||||
'./releases',
|
||||
{
|
||||
type: 'gzip',
|
||||
level: compressHelpers.getCompressionLevel('size')
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
export const dynamicMultiCompress = buildTools.multiCompress(dynamicConfigs, true);
|
||||
|
||||
/**
|
||||
* 条件压缩示例
|
||||
* 根据环境变量决定压缩策略
|
||||
*/
|
||||
const conditionalConfigs: CompressConfig[] = [];
|
||||
|
||||
// 根据环境添加不同的压缩配置
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
conditionalConfigs.push({
|
||||
src: ['dist/**/*'],
|
||||
filename: 'production-release.zip',
|
||||
dest: './releases',
|
||||
type: 'zip',
|
||||
level: 9 // 生产环境使用最大压缩
|
||||
});
|
||||
} else {
|
||||
conditionalConfigs.push({
|
||||
src: ['dist/**/*'],
|
||||
filename: 'development-build.zip',
|
||||
dest: './builds',
|
||||
type: 'zip',
|
||||
level: 1 // 开发环境优先速度
|
||||
});
|
||||
}
|
||||
|
||||
// 总是创建源码备份
|
||||
conditionalConfigs.push({
|
||||
src: ['src/**/*'],
|
||||
filename: compressHelpers.timestampedFilename('source-backup'),
|
||||
dest: './backups',
|
||||
type: 'zip',
|
||||
level: 6
|
||||
});
|
||||
|
||||
export const conditionalMultiCompress = buildTools.multiCompress(conditionalConfigs, false);
|
||||
|
||||
/**
|
||||
* 定义所有任务,方便在 gulpfile 中使用
|
||||
*/
|
||||
export const multiCompressTasks = {
|
||||
'multi-compress:serial': serialMultiCompress,
|
||||
'multi-compress:parallel': parallelMultiCompress,
|
||||
'multi-compress:environments': multiEnvironmentCompress,
|
||||
'multi-compress:monorepo': monorepoMultiCompress,
|
||||
'multi-compress:backup': backupMultiCompress,
|
||||
'multi-compress:performance-test': compressionTestMultiCompress,
|
||||
'multi-compress:mixed-format': mixedFormatMultiCompress,
|
||||
'multi-compress:dynamic': dynamicMultiCompress,
|
||||
'multi-compress:conditional': conditionalMultiCompress,
|
||||
'deploy:full-pipeline': deploymentPipeline
|
||||
};
|
||||
|
||||
// 导出默认任务
|
||||
export default deploymentPipeline;
|
||||
Reference in New Issue
Block a user