Breaking changes
- Requires Node 8.10 or above #3778
- Node 8 is going to be deprecated in less than a month, we strongly urge to upgrade to Node 10 or newer
og:locale
Open Graph tag won’t be inserted iflanguage:
(in config, front-matter of post/page oropen_graph()
helper) is not inlanguage-TERRITORY
format #3808en
is invaliden-GB
is valid- Not all locales are supported (e.g.
en-AU
is not valid), see official list - Dash (e.g. “en-GB”) must be used for multilingual support, dash is automatically transformed to underscore (e.g. “en_GB”) in
og:locale
- Verify the corresponding file exists in the
languages/
folder of installed theme before changing thelanguage:
config
Features
Support adding hour and minute to post permalink #3629
- Example usage:
_config.yml
permalink: :year/:month/:day/:hour/:minute/:title/- Results in
https://example.com/2019/12/09/23/59/a-post/
Insert
article:published_time
#3674article:author
#3805 Open Graph tagsEnable
lazyload
in iframe-related tag plugins #3798- Affects
iframe
,jsfiddle
,vimeo
,youtube
tag plugins - Requires supported browsers to benefit from this feature
- Unsupported browsers would simply ignore the attribute, thus it is safe to use and always enabled
- Affects
meta_generator
helper to insert metadata element tag #3782- Example usage:
- Insert the following snippet (if EJS is used) inside
<head>
element of your theme layout,
<%- meta_generator() %>
- would output
<meta name="generator" content="Hexo 4.1.0">
- Hexo 3.9.0+ inserts the tag automatically; to get the performance benefit (of the
meta_generator
helper),meta_generator:
option should be disabled,
_config.yml
meta_generator: falseSupport custom attributes in
js()
#3681 andcss()
#3690 helpers- Example usage:
<%- js({ src: 'script.js', integrity: 'foo', async: true }) %>
// <script src="/script.js" integrity="foo" async></script>
<%- css({ href: 'style.css', integrity: 'foo' }) %>
// <link rel="stylesheet" href="/style.css" integrity="foo">Support
wrap:
option to enable/disable wrapping backtick codeblock in<table>
element #3827- Enabled by default, enabling
line_number
also enables it - Configure in
highlight:
_config.yml
highlight:
line_number: false # must be disabled to disable wrap:
wrap: false- This option also can be passed to
codeblock()
tag plugin #3848
{% codeblock lang:js wrap:false %}
const foo = (bar) => {
return bar;
};
{% endcodeblock %}- Outputs,
const foo = (bar) => {
return bar;
};
- Enabled by default, enabling
Fixes
Retain blank lines in a codeblock attached in blockquote #3770
Replaced deprecated
og_updated_time
Open Graph tag witharticle:modified_time
#3674Replaced deprecated
keywords
Open Graph tag witharticle:tag
#3805meta_generator tag should be inserted into
<head>
that spans multiple lines #3778No longer clear database
db.json
when runninghexo new
orhexo --help
#3793Completely ignore files/folders specified in
ignore:
option #3797- If you’re using Webpack or related tools in your theme, the
node_modules
folder could cause some issues - A temporary workaround is to configure Hexo to ignore that folder,
_config.yml
ignore: '**/themes/*/node_modules/**'- The workaround will no longer be necessary in future version
- If you’re using Webpack or related tools in your theme, the
jsfiddle, vimeo and youtube tag plugins now use https only #3806
external_link
filter should not process data URLs (e.g.mailto:
&javascript:
) [#3812] and<article>
element #3895Prevent unnecessary insertion of front-matter when using alias in Hexo CLI #3830
-p
is alias of--path
-s
is alias of--slug
-r
is alias of--replace
Applies
include:
andexclude:
options to post’s asset folder #3882ignore:
option should work for files, in addition to folders [#3878]
Housekeeping
- Add FOSSA license analyzer for open-source software license compliance #3779
- Run benchmark in CI to catch regression #3776
- Further reduces lodash usage #3786, #3788, #3790, #3785, #3809, #3791, #3810, #3826, #3867, #3845
- Remove unnecessary file at the end of unit test #3792
- Add funding source to npm #3851
- Update strip-ansi from 5.2.0 to 6.0.0 #3852
- Update chalk from 2.4.2 to 3.0.0 #3853