Other setup options
If Docsy as a Hugo Module doesn’t suit your site – for example, if you don’t want to install Go – choose from these setup options:
Prerequisites
Install Hugo
You need a recent extended version of Hugo, version 0.160.1 or later. For installation options, including the npm-managed hugo-extended package, see Install Hugo.
Install Node.js
Install or upgrade to the active Node.js LTS release, as explained in Install Node.js.
Install Dart Sass
See Install Dart Sass, including its recommendation to run Hugo through npm
scripts, which have the sass CLI on their PATH automatically.
Install PostCSS (optional)
See Install PostCSS.
Option 1: Docsy as a Git submodule
If you are using Docsy as a Git submodule but would like to migrate to Hugo Modules, see our migration guide.
For a new site
To create a new site and add the Docsy theme as a Git submodule, run the following commands:
Create the site:
hugo new site myproject cd myproject git initFollow the instructions below for an existing site.
For an existing site
To add the Docsy theme to an existing site, run the following commands from your project’s root directory:
Install Docsy as a Git submodule:
git submodule add https://github.com/google/docsy.git themes/docsy git -C themes/docsy checkout v0.16.0To work from the development version of Docsy (not recommended), run the following command instead:
git submodule add --depth 1 https://github.com/google/docsy.git themes/docsyAdd Docsy as a theme, for example:
echo 'theme: docsy/theme' >> hugo.yamlGet Docsy dependencies:
(cd themes/docsy && npm run install:theme-deps)NoteRun
npm run install:theme-deps, notnpm install:install:theme-depsinstalls only the theme’s runtime dependencies, lock-pinned and script-free; a plainnpm installinsidethemes/docsy/also pulls the repository’s maintainer workspaces, an install more than an order of magnitude larger.(Optional but recommended) To avoid having to repeat the previous step every time you update Docsy, consider adding NPM scripts like the following to your project’s
package.jsonfile:{ "...": "...", "scripts": { "get:submodule": "git submodule update --init --depth 1", "_prepare:docsy": "cd themes/docsy && npm run install:theme-deps", "prepare": "npm run get:submodule && npm run _prepare:docsy", "...": "..." }, "...": "..." }Every time you run
npm installfrom your project root, thepreparescript restores the submodule at its recorded revision and installs the theme’s dependencies.
From this point on, build and serve your site with Hugo, run through npm scripts (see the prerequisites), for example:
npm run hugo -- server
Option 2: Clone the Docsy theme
If you don’t want to use submodules (for example, if you want to customize and
maintain your own copy of the theme directly, or your deployment choice requires
you to include a copy of the theme in your repository), you can clone the theme
into your project’s themes subdirectory.
To clone Docsy at v0.16.0 into your project’s themes
folder, run the following commands from your project’s root directory:
cd themes
git clone -b v0.16.0 https://github.com/google/docsy
cd docsy
npm run install:theme-deps
As with the submodule option, set
theme: docsy/theme in your site configuration. The note above about
npm run install:theme-deps versus npm install applies here as well.
To work from the development version of Docsy (not recommended unless, for
example, you plan to upstream changes to Docsy), omit the
-b v0.16.0 argument from the clone command above.
Then consider setting up an NPM prepare script that installs the theme’s
dependencies, like the _prepare:docsy script in Option 1’s example (the
submodule step doesn’t apply to a clone).
For more information, see Theme Components on the Hugo site.
Option 3: Docsy as an NPM package
Docsy is published to the npm registry as @docsy/theme. To create a new
site that uses the Docsy NPM package:
Create your site:
hugo new site --format yaml myproject cd myprojectInstall Docsy along with the Dart Sass compiler, at the version Docsy is tested with, and define an npm script for running Hugo:
npm init -y npm install --save-dev @docsy/theme npm install --save-exact --save-dev sass-embedded@1.102.0 npm pkg set scripts.hugo=hugoHugo install tipTo also install Hugo as an NPM package, see As an npm module.
Add Docsy as your site’s theme by including the following in your project’s
hugo.yaml:theme: '@docsy/theme' themesDir: node_modulesBuild or serve your new site with Hugo, run through npm scripts (see the prerequisites). For example, build your site as follows:
$ npm run hugo Start building sites … ...
To update Docsy later, see Update your Docsy NPM package.
Development versions of Docsy
Use only official Docsy releases in production. For Docsy development or testing, you can also install:
A pre-release, when one is available, through the
nextdist-tag:npm install --save-dev @docsy/theme@nextDocsy directly from GitHub:
npm install --save-dev google/docsy (cd node_modules/docsy && npm run install:theme-deps)This installs the repository’s default branch (
main). To pin a tagged version:npm install --save-dev google/docsy#semver:v0.16.0For other revision selectors, see npm install. The GitHub package is named
docsyand contains the theme files in a subfolder, so with this install form usetheme: docsy/themein your site configuration. Unlike the registry package, the GitHub package doesn’t declare Bootstrap and Font Awesome as its own dependencies: theinstall:theme-depscommand installs them, and must be rerun after every install or update of the package.
Preview your site
To preview your site locally, run Hugo through an npm script (see the prerequisites):
cd myproject
npm run hugo -- server
By default, your site will be available at http://localhost:1313. For common issues, see Troubleshooting. If the build fails with missing-parameter errors, add the required defaults per Basic site configuration.
What’s next?
- Add some basic site configuration
- Add content and customize your site
- Get some ideas from our Example Site and other Examples and templates.
- Publish your site.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.