Skip to content

@web-engine-dev/asset-pipeline ​

Build-time asset processing pipeline for game engines. Supports importers, processors, and incremental builds.

Features ​

  • Asset Importers: Load various asset formats
  • Asset Processors: Transform and optimize assets
  • Incremental Builds: Only rebuild changed assets
  • Dependency Tracking: Automatic rebuild on deps change
  • Plugin System: Extensible importer/processor plugins

Installation ​

bash
npm install @web-engine-dev/asset-pipeline
# or
pnpm add @web-engine-dev/asset-pipeline

Quick Start ​

typescript
import { AssetPipeline, TextureImporter, TextureProcessor } from '@web-engine-dev/asset-pipeline';

// Create pipeline
const pipeline = new AssetPipeline({
  inputDir: './assets',
  outputDir: './dist/assets',
  cacheDir: './.asset-cache',
});

// Register importers
pipeline.registerImporter('.png', new TextureImporter());
pipeline.registerImporter('.jpg', new TextureImporter());

// Register processors
pipeline.registerProcessor(
  'texture',
  new TextureProcessor({
    maxSize: 2048,
    generateMipmaps: true,
    compress: true,
  })
);

// Build all assets
await pipeline.build();

// Watch for changes
pipeline.watch();

API Overview ​

Asset Pipeline ​

MethodDescription
registerImporter()Add file type importer
registerProcessor()Add asset processor
build()Build all assets
buildFile(path)Build single file
watch()Watch and rebuild on change
clean()Clear cache and outputs

Custom Importer ​

typescript
class ModelImporter implements AssetImporter {
  async import(path: string): Promise<AssetData> {
    const data = await loadGLTF(path);
    return {
      type: 'model',
      data: data,
      dependencies: data.textures,
    };
  }
}

Custom Processor ​

typescript
class TextureProcessor implements AssetProcessor {
  async process(asset: AssetData): Promise<ProcessedAsset> {
    const optimized = await optimizeTexture(asset.data);
    return {
      ...asset,
      data: optimized,
      metadata: { format: 'webp', mips: 8 },
    };
  }
}

Incremental Builds ​

typescript
// First build - processes all assets
await pipeline.build();

// Second build - only processes changed files
await pipeline.build();

// Force full rebuild
await pipeline.build({ force: true });

Proprietary software. All rights reserved.