import * as fs from 'fs' import jsonMinify from '../packages/json-minify' import xlsxToJson from '../packages/xlsx-json' import favicon from '../packages/favicon' import imageCompression from '../packages/image-compression' import imageSuperCompression from '../packages/image-supercompression' import fontFaceGenerator from '../packages/font-face-generator' import audioSprite from '../packages/audio-sprite' import fontTransform from '../packages/font-transform' import exifExtractor from '../packages/exif-extractor' import imageSprite from '../packages/image-sprite' import gltfTransform from '../packages/gltf-transform' import imageTransform from '../packages/image-transform' import ldtk from '../packages/ldtk' import tilemapOptimize from '../packages/tilemap-optimize' import { cloneFiles, removeFiles } from '../packages/utils' import { pipeline } from '../packages/core' fs.rmSync('./public', { recursive: true, force: true }) fs.mkdirSync('./public') const init = async (type: string[]) => { if (type.includes('imageSprite')) { const pipelineImageSprite = pipeline(imageSprite, jsonMinify) await pipelineImageSprite({ pathIn: './resources', pathOut: './public/spritesheet', }) } if (type.includes('jsonMinify')) { await jsonMinify({ pathIn: './resources', pathOut: './public/json', }) } if (type.includes('xlsxToJson')) { await xlsxToJson( { pathIn: './resources', pathOut: './public/locale', }, { chunked: true }, ) } if (type.includes('imageTransform')) { await imageTransform( { pathIn: './resources', pathOut: './public/imageTransformed', }, { output: { format: 'jpg', }, trim: 1, resize: { width: 100, height: 100, fit: 'contain', }, }, ) } if (type.includes('imageTransform-joinChannel')) { await imageTransform( { pathIn: './resources/rgbChannels', pathOut: './public/imageJoined', includes: 'testRGB', }, { mode: 'joinChannel' }, ) } if (type.includes('imageCompression')) { await imageCompression({ pathIn: './resources', pathOut: './public/compressedImage', }) } if (type.includes('imageSuperCompression')) { await imageSuperCompression({ pathIn: './resources', pathOut: './public/superCompressedImage', }) } if (type.includes('imageSuperCompressionOptions')) { await imageSuperCompression( { pathIn: './resources', pathOut: './public/superCompressedImageOptions', includes: 'test.jpg', verbose: true, }, { preset: 'max', linear: false }, ) } if (type.includes('favicon')) { await favicon( { pathIn: './resources', pathOut: './public/favicon', }, { settings: { appName: 'AQuest' }, }, ) } if (type.includes('fontFaceGenerator')) { await fontFaceGenerator( { pathIn: './resources', pathOut: './public/fonts', }, { chunked: false }, ) } if (type.includes('fontTransform')) { await fontTransform({ pathIn: './resources', pathOut: './public/fonts', }) } if (type.includes('pipelineFont')) { const pipelineFont = pipeline(fontTransform, fontFaceGenerator) await pipelineFont({ pathIn: './resources', pathOut: './public/fonts', }) } if (type.includes('audioSprite')) { await audioSprite({ pathIn: './resources', pathOut: './public/audioSprite', }) } if (type.includes('gltfTransform')) { await gltfTransform({ pathIn: './resources', pathOut: './public/glbTransformed', }) } if (type.includes('gltfTransform-draco')) { await gltfTransform( { pathIn: './resources', pathOut: './public/glbDraco', }, { draco: true, }, ) } if (type.includes('pipelineGlbTexture')) { const pipelineGltf = pipeline(gltfTransform, imageTransform, gltfTransform) await pipelineGltf( { pathIn: './resources', pathOut: './public/glbResized', }, [{ extractTextures: true }, { resize: { width: 512, height: 512 } }], ) } if (type.includes('pipelineGlbSuperTexture')) { const pipelineGltf = pipeline(gltfTransform, imageSuperCompression, gltfTransform) await pipelineGltf( { pathIn: './resources', pathOut: './public/glbSuperCompressed', }, [{ extractTextures: true }, , { applyBasis: true }], ) } if (type.includes('pipelineGlbSuperTextureResizeSelective')) { const pipelineGltf = pipeline(gltfTransform, imageTransform, imageTransform, imageSuperCompression, gltfTransform) await pipelineGltf( { pathIn: './resources', pathOut: './public/glbSuperCompressedSelective', }, [ { extractTextures: true }, { resize: { width: 2048, height: 2048 } }, { excludes: '_4', resize: { width: 1024, height: 1024 } }, , { draco: true, applyBasis: true }, ], ) } if (type.includes('pipelineGlbTextureResizeSelective')) { const pipelineGltf = pipeline(gltfTransform, imageTransform, imageTransform, gltfTransform) await pipelineGltf( { pathIn: './resources', pathOut: './public/glbSuperCompressedSelective', }, [ { extractTextures: true }, { resize: { width: 2048, height: 2048 } }, { excludes: '_4', resize: { width: 1024, height: 1024 } }, ], ) } if (type.includes('exifExtractor')) { await exifExtractor({ pathIn: './resources', pathOut: './public/exif', }) } if (type.includes('ldtk')) { await ldtk({ pathIn: './resources', pathOut: './public/ldtk', }) } if (type.includes('tilemapOptimize')) { await tilemapOptimize( { pathIn: './resources', pathOut: './public/tilemapOptimize', includes: 'tilemap', }, { tileWidth: 8, tileHeight: 8, }, ) } if (type.includes('pipelineTilemapLDtk')) { const pipelineTilemap = pipeline(cloneFiles, tilemapOptimize, ldtk, removeFiles) await pipelineTilemap( { pathIn: './resources', pathOut: './public/tilemapLDtk', includes: 'tilemap', }, [ , { tileWidth: 8, tileHeight: 8, }, , { fileIncludes: ['.ldtk'] }, ], ) } } init([ // 'imageTransform', // 'imageTransform-joinChannel', // 'exifExtractor', // 'favicon', // 'imageSprite', // 'audioSprite', // 'pipelineFont', // 'xlsxToJson', // 'jsonMinify', // 'imageCompression', // 'imageSuperCompression', // 'imageSuperCompressionOptions', // 'gltfTransform', // 'gltfTransform-draco', // 'pipelineGlbTexture', // 'pipelineGlbSuperTexture', // 'pipelineGlbSuperTextureResizeSelective', // 'pipelineGlbTextureResizeSelective', // 'ldtk', // 'tilemapOptimize', 'pipelineTilemapLDtk', ])