Hexo Set Environment Variable
source link: https://finisky.github.io/en/how-to-set-hexo-env/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Hexo Set Environment Variable
2023-01-28Hexo
Recently I upgrade NexT theme to v8.14.1. The related post plugin
hexo-related-popular-posts
had been replaced by
hexo-related-posts
, which generates related posts by tf-idf
algorithm. However, the compute cost is a little bit heavy if you have
many posts. A good trade-off is enable this feature only for production
environment. The plugin hexo-related-posts
already takes this into account and use enable_env_name
to
disable its execution. Unfortunately, the document has typo so I takes
some time to fix it.
So how to set environment variable in Hexo?
Short
Answer:$ hexo <command> --<env_key> env_value
。
The following secitons will illustrate how to enable related post on production.
Requirements
- Use
hexo server
to preview post in local, disable related post - Enable related post on production, deploy by GitHub Action
How to check if the related post is enabled? Just check the
hexo s
or hexo g
log:
INFO Start processing
INFO Calculating of related posts is enabled. Start processing...
INFO TF/IDF is calculated
INFO Related post processing done
...
Set Environment Variable
hexo-related-posts document:
It's possible to disable plugin execution depending on env variable. For example, if you want to calculate related post only for production build, you can set this parameter to
prod
. In this case, related post will be generated only if you putprod
key during running Hexo, i.e.hexo generate -- --prod
However, hexo generate -- --prod
doesn't work. Check the
source code:
const enable = (hexo.config.related_posts.enable || hexo.config.related_posts.enable === undefined) &&
(hexo.config.related_posts.enable_env_name !== undefined ? hexo.env.args[hexo.config.related_posts.enable_env_name] : true);
Hexo official document # Variables doesn't
explain how to pass value to global variable env
. The
problem reduced to how to pass value to hexo.env.args
.
Refer to this post #
Hexo Environment Variables, just add parameter after hexo commands,
then hexo.env.args
will contains the key
prod
:
$ hexo server --prod
$ hexo generate --prod
If you want to pass a key/value pair, do it like this:
hexo server --prod 1
.
Modify Config and GitHub Action Workflow
Modify hexo _config.yml
:
related_posts:
enable: true
enable_env_name: prod
icon: fa fa-signs-post
Modify theme NexT _config.yml
related_posts:
enable: true
icon: fa fa-signs-post
Since we # Deploy Hexo by
GitHub Actions, modify the action workflow file like this (append
--prod
after hexo g
):
- name: Hexo
run: |
pandoc --version
npm i -g hexo-cli
npm i
hexo clean && hexo g --prod
Then related posts will be disabled by default (local
hexo s
).
Tips: hexo-related-posts
has cache, to
test if it's enabled, modify any posts or do hexo clean
first.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK