--contentDir <path> option gives CLI users a way to specify an alternative content directory for building or serving Hugo. The docs don’t indicate which directory this path is relative to, so if you also use the
--source <path> option, it’s ambiguous whether the content directory will be:
- present working directory + relative content path, or
- source path + relative content path.
Let it be known that Hugo uses (2) content path = source path + relative content path.
For example, take this website with two theme modules and a small data subset for development.
~/website$ ls # example hugo project directory data-all # all content data-dev # subset of data-all for fast build times freemium # theme module premium # theme module package.json # contains build scripts that run hugo
You might have build scripts that are called from the modules’ parent.
~/website$ hugo --source=freemium --contentDir=data-dev # incorrect (1) ~/website$ hugo --source=freemium --contentDir=../data-dev # correct (2)
I’m leaving this here to help others who might have adverse experiences as a result of this ambiguity.