{"id":25381,"library":"esbuild-plugin-object-store-asset","title":"esbuild-plugin-object-store-asset","description":"An esbuild plugin (v0.0.4) that uploads assets to S3/R2/object storage during builds and rewrites asset URLs to content-hashed CDN paths. Designed for Cloudflare R2 and AWS S3, it integrates into esbuild's output pipeline to automatically manage remote asset hosting. Peer dependency on esbuild ^0.27.3. Ships TypeScript types. Differentiators: lightweight, focuses on object storage backends, supports content-hashed URLs for caching. Release cadence: early development, infrequent updates.","status":"active","version":"0.0.4","language":"javascript","source_language":"en","source_url":"https://github.com/ctx-core/esbuild-plugin-object-store-asset","tags":["javascript","esbuild","plugin","asset","s3","r2","cloudflare","object-store","cdn","typescript"],"install":[{"cmd":"npm install esbuild-plugin-object-store-asset","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-object-store-asset","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-object-store-asset","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required for plugin functionality","package":"esbuild","optional":true}],"imports":[{"note":"Package exports a default function.","wrong":"import { plugin } from 'esbuild-plugin-object-store-asset'","symbol":"default","correct":"import plugin from 'esbuild-plugin-object-store-asset'"},{"note":"PluginOptions is a TypeScript type; use 'import type' for isolated type imports.","wrong":"import { PluginOptions } from 'esbuild-plugin-object-store-asset'","symbol":"PluginOptions","correct":"import type { PluginOptions } from 'esbuild-plugin-object-store-asset'"},{"note":"CJS users can directly require the module; it exports the function as module.exports.","wrong":"const { default: plugin } = require('esbuild-plugin-object-store-asset')","symbol":"require","correct":"const plugin = require('esbuild-plugin-object-store-asset')"}],"quickstart":{"code":"import esbuild from 'esbuild';\nimport assetPlugin from 'esbuild-plugin-object-store-asset';\n\nawait esbuild.build({\n  entryPoints: ['src/index.js'],\n  bundle: true,\n  outdir: 'dist',\n  plugins: [\n    assetPlugin({\n      bucket: process.env.S3_BUCKET ?? 'my-bucket',\n      region: process.env.S3_REGION ?? 'us-east-1',\n      accessKeyId: process.env.AWS_ACCESS_KEY_ID ?? '',\n      secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY ?? '',\n      endpoint: process.env.R2_ENDPOINT ?? '', // for R2\n      publicUrl: process.env.CDN_URL ?? 'https://cdn.example.com',\n      outputDir: 'assets', // inside S3 bucket\n      hashLength: 8,\n      filter: /.*\\.(png|jpg|gif|svg)$/,\n    }),\n  ],\n});","lang":"typescript","description":"Shows basic setup integrating the plugin with esbuild build, uploading PNG/JPG/GIF/SVG assets to S3 and rewriting URLs to CDN."},"warnings":[{"fix":"Upgrade esbuild to ^0.27.3.","message":"Requires esbuild ^0.27.3. Older versions of esbuild may be incompatible.","severity":"breaking","affected_versions":"<0.27.0 || >=0.28.0?"},{"fix":"Pin to exact version and test upgrades carefully.","message":"Plugin is early stage (v0.0.4). API may change without major version bump.","severity":"gotcha","affected_versions":"<=0.0.4"},{"fix":"Use environment variables or a secrets manager. Avoid hard-coding accessKeyId/secretAccessKey in source code.","message":"Sensitive credentials (AWS keys) must be provided via environment variables or secure config. Hard-coding in plugin options is insecure.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run npm install esbuild-plugin-object-store-asset --save-dev","cause":"Package not installed or missing from node_modules.","error":"Error: Cannot find module 'esbuild-plugin-object-store-asset'"},{"fix":"Use default import: import plugin from 'esbuild-plugin-object-store-asset'","cause":"Incorrect import style: used named import instead of default.","error":"TypeError: plugin is not a function"},{"fix":"Upgrade esbuild to ^0.27.3: npm install esbuild@^0.27.3 --save-dev","cause":"Installed esbuild version is too old.","error":"Error: esbuild version must be >=0.27.3"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}