YAMLResume

@yamlresume/node

Baca, validasi, bangun, pantau, hasilkan, dan terjemahkan file YAMLResume dari Node.js.

@yamlresume/node menyediakan API runtime Node.js yang digunakan oleh CLI yamlresume. Paket ini menggabungkan kompiler YAMLResume yang independen platform dengan akses sistem file, pemantauan file, alur kerja file AI, dan kompilasi PDF.

Gunakan paket ini ketika Anda perlu mengintegrasikan YAMLResume ke dalam skrip Node.js, layanan web, ekstensi editor, pipeline build, atau aplikasi lain tanpa menjalankan proses CLI.

@yamlresume/node membutuhkan Node.js 20 atau yang lebih baru. Untuk rendering khusus browser, gunakan @yamlresume/core atau komponen React @yamlresume/playground.

Instalasi

$ npm install @yamlresume/node

Paket ini adalah modul ES dan menyertakan deklarasi TypeScript.

Memulai Cepat

Baca dan validasi resume, lalu bangun semua tata letak yang dikonfigurasi:

import { buildResumeFile, readResumeFile } from '@yamlresume/node'

const result = readResumeFile('resume.yml')

if (result.validated === 'failed') {
  for (const error of result.errors ?? []) {
    console.error(
      `${error.path.join('.')}: ${error.message} ` +
        `(${error.line}:${error.column})`
    )
  }
  process.exit(1)
}

const { outputs } = await buildResumeFile('resume.yml', {
  output: 'dist',
})

console.log(outputs)

buildResumeFile melakukan iterasi atas array layouts resume dan mengembalikan jalur semua file yang dihasilkan. Tergantung pada mesin yang dikonfigurasi, file tersebut dapat mencakup file DOCX, HTML, Markdown, LaTeX, Typst, dan PDF. Validasi skema bersifat advisori selama build: resume yang tidak valid hanya menghasilkan peringatan logger dan build tetap berlanjut. Gunakan readResumeFile terlebih dahulu, seperti pada contoh di atas, ketika error validasi harus menghentikan alur kerja Anda.

Membaca dan Memvalidasi File

readResumeFile

readResumeFile menerima file .yml, .yaml, dan .json. Validasi diaktifkan secara default:

import { readResumeFile } from '@yamlresume/node'

const { resume, validated, errors } = readResumeFile('resume.yml')

Field validated bernilai salah satu dari:

StatusArti
successParsing dan validasi skema berhasil
failedParsing berhasil, tetapi validasi skema mengembalikan error
unknownValidasi dinonaktifkan

Error validasi mencakup jalur skema serta nomor baris dan kolom yang dimulai dari satu. Nonaktifkan validasi skema jika Anda hanya perlu mem-parse file:

const { resume, validated } = readResumeFile('resume.yml', {
  validate: false,
})

// validated === 'unknown'

YAML yang tidak valid dan kegagalan sistem file akan melemparkan YAMLResumeError.

validateResume

Gunakan validateResume ketika konten YAML sudah ada di memori:

import { ResumeSchema } from '@yamlresume/core'
import { validateResume } from '@yamlresume/node'

const source = `
content:
  basics:
    name: Andy Dufresne
layouts:
  - engine: html
`

const errors = validateResume(source, ResumeSchema)

Fungsi ini mengembalikan error posisi yang diurutkan berdasarkan nomor baris, atau array kosong ketika sumber sesuai dengan skema.

Membangun Output Resume

import { buildResumeFile } from '@yamlresume/node'

const { outputs } = await buildResumeFile('resume.yml', {
  pdf: true,
  validate: true,
  output: 'dist',
  timeout: 60,
})

Opsi build

OpsiTipeDefaultDeskripsi
pdfbooleantrueMengompilasi tata letak sumber LaTeX dan Typst menjadi PDF
validatebooleantrueMemvalidasi resume sebelum build
outputstringDirektori sumberDirektori untuk file yang dihasilkan
timeoutnumber30Batas waktu kompiler PDF dalam detik; gunakan 0 untuk menonaktifkan
loggerLoggerundefinedMenerima pesan progres, peringatan, dan error

Jika resume tidak memiliki blok layouts, YAMLResume menggunakan tata letak default-nya. Ketika beberapa tata letak menggunakan mesin yang sama, nama file output-nya diberi indeks, seperti resume.0.html dan resume.1.html.

Dependensi PDF

Membangun sumber LaTeX atau Typst tidak memerlukan kompiler eksternal. Pembuatan PDF ya: instal XeTeX atau Tectonic untuk tata letak LaTeX, atau CLI Typst untuk tata letak Typst. Atur pdf: false ketika Anda hanya membutuhkan file sumber.

Logging

API ini senyap kecuali Anda meneruskan logger yang mengimplementasikan antarmuka Logger dari @yamlresume/core:

import type { Logger } from '@yamlresume/core'
import { buildResumeFile } from '@yamlresume/node'

const logger: Logger = {
  start: console.log,
  success: console.log,
  debug: console.debug,
  info: console.info,
  log: console.log,
  warn: console.warn,
  error: console.error,
}

await buildResumeFile('resume.yml', { logger })

Memantau Resume

watchResumeFile melakukan build awal dan membangun kembali ketika file sumber berubah:

import { watchResumeFile } from '@yamlresume/node'

const watcher = watchResumeFile('resume.yml', {
  output: 'dist',
  pdf: false,
})

process.on('SIGINT', async () => {
  await watcher.close()
  process.exit(0)
})

Pemantau ini menggunakan Chokidar, menangani penyimpanan atomik editor, mencegah build yang tumpang tindih, dan menggabungkan sejumlah perubahan yang terjadi beruntun menjadi satu build lanjutan.

Membuat Resume dari Contoh

newResumeFile membuat resume yang sepenuhnya dikomentari dengan tata letak default dari katalog @yamlresume/samples:

import { newResumeFile } from '@yamlresume/node'

newResumeFile('resume.yml', 'software-engineer', 'en')

Fungsi ini tidak menimpa file yang sudah ada. Gunakan showSampleSource: true dengan logger jika Anda ingin pesan sukses menyertakan ID contoh yang dipilih.

Alur Kerja File AI

Paket Node membungkus @yamlresume/ai dengan pembacaan dan penulisan file, pemeriksaan locale, serta perlindungan terhadap konflik.

Menghasilkan resume

import { generateResumeFile } from '@yamlresume/node'

await generateResumeFile('resume.yml', 'Backend Engineer', 'en', {
  model: 'gpt-5',
  maxRetries: 3,
  onChunk: (chunk) => process.stdout.write(chunk),
})

Menerjemahkan resume

import { translateResumeFile } from '@yamlresume/node'

await translateResumeFile(
  'resume.en.yml',
  'resume.fr.yml',
  'fr',
  {
    model: 'gpt-5',
    maxRetries: 3,
  }
)

Bahasa sumber dibaca dari locale.language. Pembuatan dan penerjemahan memvalidasi kode locale dan menolak menimpa file output yang sudah ada. Kunci API penyedia dan default model menggunakan variabel lingkungan yang sama dengan perintah yamlresume ai.

Penanganan Kesalahan

API Node melemparkan YAMLResumeError untuk kegagalan yang diharapkan seperti file yang tidak dapat dibaca, YAML tidak valid, konflik output, bahasa yang tidak didukung, kompiler PDF yang tidak tersedia, dan batas waktu kompilasi:

import { YAMLResumeError } from '@yamlresume/core'
import { buildResumeFile } from '@yamlresume/node'

try {
  await buildResumeFile('resume.yml')
} catch (error) {
  if (error instanceof YAMLResumeError) {
    console.error(error.code, error.message)
    process.exitCode = error.errno
  } else {
    throw error
  }
}

Ringkasan API

EksporTujuan
readResumeFileMembaca dan secara opsional memvalidasi resume YAML, YML, atau JSON
validateResumeMemvalidasi string YAML di memori dengan error posisi
buildResumeFileMenghasilkan semua tata letak yang dikonfigurasi dan PDF opsional
watchResumeFileBuild awal dan build ulang saat file berubah
newResumeFileMembuat resume dari contoh terlokalisasi yang terkurasi
generateResumeFileMenghasilkan dan menulis resume dengan AI
translateResumeFileMenerjemahkan dan menulis resume yang sudah ada dengan AI
LATEX_COMPILE_TIMEOUTBatas waktu default kompilasi LaTeX
TYPST_COMPILE_TIMEOUTBatas waktu default kompilasi Typst

Untuk setiap opsi dan tipe kembalian, lihat referensi API @yamlresume/node yang lengkap.

Edit on GitHub

Last updated on

On this page