Today I thought I’d try hexo on a new project. A few minutes in and I’d stumbled across a strange problem that took me 20 minutes too long to figure out.
If I ran $ hexo init my-project
I could run $ hexo generate
and get a compiled version of a new site just fine. The issue was I wanted to use hexo in an existing git project and so copied across the files I thought I needed manually.
Having moved and merged all the files I ran $ hexo generate
but rather than getting a shiny compiled set of .html files, I got this:
$ hexo generate Usage: hexo <command> Commands: help Get help on a command. init Create a new Hexo folder. version Display version information. Global Options: --config Specify config file instead of using _config.yml --cwd Specify the CWD ...
Ah, no generate command!! I Googled for the answer but came up short. I resorted to doing a diff on a clean hexo project v.s. my repository. The difference was that my package.json file had no “hexo” property.
A quick copy/paste of the hexo property and I was in business:
$ hexo generate Usage: hexo <command> Commands: clean Removed generated files and cache. config Get or set configurations. deploy Deploy your website. generate Generate static files. help Get help on a command. init Create a new Hexo folder. list List the information of the site migrate Migrate your site from other system to Hexo. new Create a new post. publish Moves a draft post from _drafts to _posts folder. render Render files with renderer plugins. server Start the server. version Display version information. Global Options: --config Specify config file instead of using _config.yml --cwd Specify the CWD ...
TLDR: If your hexo generate/server command is missing, make sure package.json contains “{ hexo: { version: “x.x.x” } }”.