This guide explains how to customize your blog by editing the config object in build.js.
The configuration is located at the top of build.js (lines 10-37):
const config = {
site: { ... },
homepage: { ... },
navigation: { ... },
labels: { ... }
};
config.site)Basic information about your blog:
site: {
title: 'My Blog', // Main heading on homepage
subtitle: 'A collection...', // Subtitle below heading
description: 'This blog...', // Footer description
pageTitle: 'My Awesome Blog', // Browser tab title
baseUrl: 'https://example.com' // Base URL for RSS/Atom feeds
}
Example - Chinese version:
site: {
title: '我的博客',
subtitle: '思考的记录,用<em>优雅</em>的方式呈现。',
description: '这个博客追求简洁:快速、无障碍、干净。',
pageTitle: '我的精彩博客',
baseUrl: 'https://myblog.com'
}
⚠️ Important: Update baseUrl to your actual domain for RSS/Atom feeds to work correctly.
config.homepage)Control what appears on the homepage:
homepage: {
heading: 'Recent Posts', // Section heading above post list
showArchiveLink: true, // Show/hide archive link
showTagsLink: true // Show/hide tags link
}
Example:
homepage: {
heading: '最新文章',
showArchiveLink: true,
showTagsLink: true
}
config.navigation)Text for navigation links throughout the site:
navigation: {
backToHome: '← Back to Home', // Link to return to homepage
tagsPage: 'Browse all tags', // Tags page link text
archivePage: 'View archive' // Archive page link text
}
Example:
navigation: {
backToHome: '← 返回首页',
tagsPage: '浏览所有标签',
archivePage: '查看归档'
}
config.labels)Various text labels used throughout the blog:
labels: {
published: 'Published',
lastModified: 'Last Modified',
archivedPosts: 'Archived Posts',
archivedCount: (count) => `${count} archived post(s)`,
taggedWith: (tag, count) => `${count} post(s) tagged with "${tag}"`,
tagsSubtitle: 'Browse all tags and discover posts by topic.',
allTags: 'All Tags'
}
Note: archivedCount and taggedWith are functions that accept parameters.
Example - Chinese version:
labels: {
published: '发布于',
lastModified: '最后修改',
archivedPosts: '归档文章',
archivedCount: (count) => `共 ${count} 篇归档文章`,
taggedWith: (tag, count) => `标签"${tag}"下有 ${count} 篇文章`,
tagsSubtitle: '浏览所有标签,发现感兴趣的话题。',
allTags: '所有标签'
}
const config = {
site: {
title: 'My Blog',
subtitle: 'A collection of thoughts, written with <em>style</em>.',
description: 'This blog is built with simplicity in mind: fast, accessible, and clean.',
pageTitle: 'My Awesome Blog'
},
homepage: {
heading: 'Recent Posts',
showArchiveLink: true,
showTagsLink: true
},
navigation: {
backToHome: '← Back to Home',
tagsPage: 'Browse all tags',
archivePage: 'View archive'
},
labels: {
published: 'Published',
lastModified: 'Last Modified',
archivedPosts: 'Archived Posts',
archivedCount: (count) => `${count} archived post(s)`,
taggedWith: (tag, count) => `${count} post(s) tagged with "${tag}"`,
tagsSubtitle: 'Browse all tags and discover posts by topic.',
allTags: 'All Tags'
}
};
const config = {
site: {
title: '我的博客',
subtitle: '思考的记录,用<em>优雅</em>的方式呈现。',
description: '这个博客追求简洁:快速、无障碍、干净。',
pageTitle: '我的精彩博客'
},
homepage: {
heading: '最新文章',
showArchiveLink: true,
showTagsLink: true
},
navigation: {
backToHome: '← 返回首页',
tagsPage: '浏览所有标签',
archivePage: '查看归档'
},
labels: {
published: '发布于',
lastModified: '最后修改',
archivedPosts: '归档文章',
archivedCount: (count) => `共 ${count} 篇归档文章`,
taggedWith: (tag, count) => `标签"${tag}"下有 ${count} 篇文章`,
tagsSubtitle: '浏览所有标签,发现感兴趣的话题。',
allTags: '所有标签'
}
};
const config = {
site: {
title: 'Simple Blog',
subtitle: 'Less is more.',
description: '', // Empty description
pageTitle: 'Blog'
},
homepage: {
heading: 'Posts',
showArchiveLink: false, // Hide archive link
showTagsLink: false // Hide tags link
},
navigation: {
backToHome: '← Home',
tagsPage: 'Tags',
archivePage: 'Archive'
},
labels: {
published: 'Posted',
lastModified: 'Updated',
archivedPosts: 'Archive',
archivedCount: (count) => `${count} posts`,
taggedWith: (tag, count) => `${count} posts`,
tagsSubtitle: 'All tags',
allTags: 'Tags'
}
};
build.js in your editorconfig object at the top (lines 10-37)npm run build to regenerate your blogsubtitle for formatting: <em>, <strong>, etc.description to empty string '' to hide it completelyshowArchiveLink or showTagsLink to false to hide those linksarchivedCount can use template literals for dynamic textIf you want to add more customization options, you can:
config objectbuild.jsnpm run buildPlume automatically generates both RSS 2.0 and Atom 1.0 feeds for your blog:
/feed.xml - Traditional RSS format supported by most feed readers/atom.xml - Modern Atom format with richer metadataconfig.site.baseUrl:
site: {
title: 'My Blog',
baseUrl: 'https://yourdomain.com' // ← Change this to your domain
}
<head>:
<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml">
<link rel="alternate" type="application/atom+xml" title="Atom Feed" href="/atom.xml">
npm run buildUsers can subscribe to your blog using:
/feed.xml or /atom.xml URLs directlyUse online feed validators to check your feeds: