This project structure was inspired / forked from Netlify's excellent Victor Hugo project.
Be sure that you have the latest node, npm and Hugo installed. If you need to install hugo on OSX, run:
brew install hugo
If you don't use OSX or don't use homebrew, follow the instructions for installation here instead:
http://gohugo.io/overview/installing/
Next, clone this repository and run:
npm install
npm start
Then visit http://localhost:3000/ - BrowserSync will automatically reload CSS or refresh the page when stylesheets or content changes.
To build your static output to the /dist
folder, use:
npm run build
|--site // Everything in here will be built with hugo
| |--content // Pages and collections - ask if you need extra pages
| |--data // YAML data files with any data for use in examples
| |--layouts // This is where all templates go
| | |--partials // This is where includes live
| | |--index.html // The index page
| |--static // Files in here ends up in the public folder
| |--scripts // General scripts -> pull data etc.
|--src // Files that will pass through the asset pipeline
| |--css // CSS files in the root of this folder will end up in /css/...
| |--js // app.js will be compiled to /app.js with babel
For assets that are completely static and don't need to go through the asset pipeline,
use the site/static
folder. Images, font-files, etc, all go there.
Files in the static folder ends up in the web root. So a file called site/static/favicon.ico
will end up being available as /favicon.ico
and so on...
The src/js/app.js
file is the entrypoint for webpack and will be built to /dist/app.js
.
You can use ES6 and use both relative imports or import libraries from npm.
Any CSS file directly under the src/css/
folder will get compiled with PostCSS Next
to /dist/css/{filename}.css
. Import statements will be resolved as part of the build
- Push your clone to your own GitHub repository.
- Create a new site on Netlify and link the repository.
Now netlify will build and deploy your site whenever you push to git.
You can also click this button: