Skip to main content
Bun natively supports .yaml and .yml imports.
config.yaml
database:
  host: localhost
  port: 5432
  name: myapp

server:
  port: 3000
  timeout: 30

features:
  auth: true
  rateLimit: true

Import the file like any other source file.
/icons/typescript.svgconfig.ts
import config from './config.yaml';

config.database.host; // => "localhost"
config.server.port; // => 3000
config.features.auth; // => true

You can also use named imports to destructure top-level properties:
/icons/typescript.svgconfig.ts
import {database, server, features} from './config.yaml';

console.log(database.name); // => "myapp"
console.log(server.timeout); // => 30
console.log(features.rateLimit); // => true

Bun also supports Import Attributes syntax:
/icons/typescript.svgconfig.ts
import config from './config.yaml' with {type: 'yaml'};

config.database.port; // => 5432

For parsing YAML strings at runtime, use Bun.YAML.parse():
/icons/typescript.svgconfig.ts
const yamlString = `
name: John Doe
age: 30
hobbies:
  - reading
  - coding
`;

const data = Bun.YAML.parse(yamlString);
console.log(data.name); // => "John Doe"
console.log(data.hobbies); // => ["reading", "coding"]

TypeScript Support

To add TypeScript support for your YAML imports, create a declaration file with .d.ts appended to the YAML filename (e.g., config.yamlconfig.yaml.d.ts);
/icons/typescript.svgconfig.yaml.d.ts
const contents: {
	database: {
		host: string;
		port: number;
		name: string;
	};
	server: {
		port: number;
		timeout: number;
	};
	features: {
		auth: boolean;
		rateLimit: boolean;
	};
};

export = contents;

See Docs > API > YAML for complete documentation on YAML support in Bun.
I