Troubleshooting for installing Node.js and npm, local previewing, and deployment through Netlify
hongtaoh opened this issue · 0 comments
I encountered some difficulties when I used Victoria's amazing hugo-theme-sam
. I documented these problems and associated solutions to them, in the hope of helping others with the same issues.
There are several things you need to prepare to preview locally and deploy a Hugo site which uses the Sam theme.
Install Node.js, npm, postcss-cli, and autoprefixer
Victoria recommends installing Node.js and npm this way. However, after the installation, when running npm install -g postcss-cli
and npm install -g autoprefixer
to install postcss-cli
and autoprefixer
, a permission error might occur:
Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
This thread documented this problem. To solve it, simply follow this answer.
The idea is, instead of installing npm
through a Node installer, you can install it using nvm
.
- Install
nvm
.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
You can run the above line of code no matter what directory you are at.
- Install
Node.js
andnpm
vianvm
.
nvm install stable
Then, you can install postcss-cli
and autoprefixer
.
The following codes come from this answer on this thread:
sudo npm i -g postcss-cli
and
sudo npm i -g autoprefixer
You will be asked to input your passwords. If you are using a Mac, your input will be invisible. However, it will be processed anyway. So don't worry. Just input your passwords and press Enter
.
Locally preview the project
When previewing the website, Hugo might give this error:
TOCSS: failed to transform "css/main.tmp.css" (text/x-sass): resource "sass/sass/style.sass_7642ba43b3212fd7d7ba324df3b88b0c" not found in file cache
To solve this problem, simply copy the /exampleSite/resources
and paste it into the root directory of your hugo project.
Deploy through Netlify
If you are deploying your project via Netlify:
First, don't use the netlify.toml
within hugo-theme-sam
. Instead, use the netlify.toml
here. Be sure to edit the HUGO_VERSION
accordingly. Put this netlify.toml
file at the root directory of your Hugo project.
[build]
publish = "public"
command = "hugo --gc --minify"
[context.production.environment]
HUGO_VERSION = "0.75.1"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"
[context.split1]
command = "hugo --gc --minify --enableGitInfo"
[context.split1.environment]
HUGO_VERSION = "0.75.1"
HUGO_ENV = "production"
[context.deploy-preview]
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
[context.deploy-preview.environment]
HUGO_VERSION = "0.75.1"
[context.branch-deploy]
command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
[context.branch-deploy.environment]
HUGO_VERSION = "0.75.1"
[context.next.environment]
HUGO_ENABLEGITINFO = "true"
The deployment might fail and give you this error:
Building sites … ERROR 2020/09/16 20:06:07 Transformation failed: POSTCSS: failed to transform "css/main.css" (text/css): PostCSS not found; install with "npm install postcss-cli". See https://gohugo.io/hugo-pipes/postcss/
This problem can be solved by this answer. Simply add a package.json
file at the root directory of your Hugo project. The package.json
is to tell Netlify what packages are needed to deploy our Hugo projects: postcss-cli
and autoprefixer
. Although you have installed the two packages locally, Netlify doesn't know you will need them until you let it know.
The package.json
should be like this, as mike-foucault suggested:
{
"name": "netlify-deps",
"version": "0.1.0",
"dependencies": {
"postcss-cli": "7.1.1",
"autoprefixer": "9.8.4"
}
}
Example
If you have trouble understanding the above parts, you can refer to this example.