Editing Theme Code
To fully customize your Ghost theme, you may need to edit the theme files directly. This guide covers how to safely edit and build your theme code.
Before You Start
- Backup: Always back up your theme before changes.
- Test: After editing, test your site on different devices.
- Updates: Custom changes may be lost after a theme update.
- Skills: Basic HTML, CSS, and Handlebars knowledge is helpful.
Extension hooks (no build required)
Essence provides two files for quick customizations that survive a rebuild of compiled assets:
assets/custom.cssβ custom styles, loaded after theme CSSassets/custom.jsβ custom scripts, loaded after theme JS
Edit these directly in the downloaded theme zip. No npm run build step is needed for changes in these files alone.
For persistent customizations without re-editing the theme zip after every update, prefer Code Injection in Ghost admin.
Editing Theme Files
- Download your theme from Ghost Admin:
- Go to Settings β Theme
- Click the active themeβs dropdown and select Download
- Unzip the theme folder on your computer.
- Open the files in a code editor (e.g., VS Code, Sublime Text).
- Edit these common files:
assets/custom.css(custom styles, no build required)assets/custom.js(custom scripts, no build required).hbsfiles (templates, e.g.,post.hbs,index.hbs)default.hbs(site-wide changes)
- When done, re-zip the theme folder:
- macOS: Right-click > Compress
- Windows: Right-click > Send to > Compressed (zipped) folder
- Upload the new zip to Ghost:
- Go to Settings β Theme
- Click Upload theme and select your zip
- Activate your updated theme
Working with Source Files and Build Tools
Essence uses a Rollup build pipeline to compile CSS, JavaScript, and vendor assets:
/assets/custom.cssand/assets/custom.js: Edit directly, no build needed./assets/css/,/assets/js/: Source files that require building./assets/built/: Compiled output afternpm run build./assets/vendors/: PVS and other bundled vendor scripts (copied during build).
Setting Up the Build Environment
- Install Node.js if you donβt have it.
- Open a terminal and navigate to your theme folder.
- Run
npm installto install dependencies.
Build Commands
# Watch for changes (development)
npm run dev
# Build for production
npm run build
# Build for production, update translations, and create a zip
npm run build:prod
# Test the theme with GScan
npm run testEditing Source Files
- Edit files in
/assets/css/or/assets/js/. - Run
npm run devfor live rebuilding during development. - Test changes in your browser.
- When done, run
npm run buildfor production assets before zipping.
Third-party licenses
Essence WebGL shader presets include code derived from React Bits. Attribution and license terms are documented in THIRD_PARTY_LICENSES.md at the theme root (MIT + Commons Clause).
Review this file before redistributing modified shader code or derivative themes.
Common Customizations
Custom CSS
- For small tweaks, add to
assets/custom.css(no build needed). - For advanced changes, edit source CSS in
/assets/css/and run the build process. - Use browser dev tools to identify elements.
Template Changes
- Edit
.hbsfiles for layout/content changes (e.g.,post.hbs). - Keep Handlebars syntax (
{{...}}) intact. - Avoid removing required Ghost code.
Adding JavaScript
- For simple scripts, use
assets/custom.js. - For advanced features, edit source JS in
/assets/js/and build. - Test to avoid conflicts with PVS (
init-pvs.js) and Essence effects.
Disabling built-in features
Examples that require source edits + rebuild:
- Page intro:
default.hbsinline script andassets/js/page-intro.js
Testing Your Changes
- Check your site on various devices and browsers.
- Confirm all Ghost features work.
- Test navigation, pagination, shader backgrounds, and liquid glass fallbacks.
Reverting Changes
If needed:
- Go to Settings β Theme
- Upload your backup theme zip
- Activate your backup