arredemo
Version:
Instantly build a static site for your package
89 lines (72 loc) • 2.12 kB
JavaScript
import { existsSync } from "node:fs"
import path from "node:path"
const _exists = (p, pkgPath) => {
try {
if (existsSync(path.join(pkgPath, p))) {
return true
}
} catch (_) {}
return false
}
const _parseImg = (pkgPath, imgPath, destBasename) => {
const parsed = {
ok: false
}
if (imgPath && _exists(imgPath, pkgPath)) {
parsed.ok = true
parsed.src = imgPath
const imgExt = path.extname(imgPath)
parsed.dest = `${destBasename}${imgExt}`
}
return parsed
}
const parseArreConfig = (config, pkgPath) => {
// UI
const theme = config?.theme || "default"
const company = config?.company || ""
const company_url = config?.company_url || ""
const url = config?.url || ""
// Docs
const doc_versions = config?.doc_versions || []
const md = {
md_keep_summary_content: config?.md?.keep_summary_content || false,
md_strip_details_tag: !(config?.md?.strip_details_tag === false)
}
// Demo
const demo_entry = config?.demo_entry || ""
const has_demo = demo_entry !== ""
// Logo and favicons
const logo = _parseImg(pkgPath, config?.logo, "logo")
const faviconMain = _parseImg(pkgPath, config?.favicon, "favicon")
let faviconIco
let faviconApple
if (faviconMain.ok) {
if (path.extname(faviconMain.src) === ".ico") {
faviconIco = faviconMain
} else {
const icoBaseName = path.basename(faviconMain.src, path.extname(faviconMain.src)) + ".ico"
const icoPath = faviconMain.src.replace(path.basename(faviconMain.src), icoBaseName)
faviconIco = _parseImg(pkgPath, icoPath, "favicon")
}
const aplBaseName = path.basename(faviconMain.src, path.extname(faviconMain.src)) + "_apple.png"
const aplPath = faviconMain.src.replace(path.basename(faviconMain.src), aplBaseName)
faviconApple = _parseImg(pkgPath, aplPath, "favicon_apple")
}
return {
theme,
company,
company_url,
url,
doc_versions,
md,
demo_entry,
has_demo,
logo,
favicon: {
main: faviconMain,
ico: faviconIco,
apple: faviconApple
}
}
}
export { parseArreConfig }