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:localeOpen Graph tag won’t be inserted iflanguage:(in config, front-matter of post/page oropen_graph()helper) is not inlanguage-TERRITORYformat #3808enis invaliden-GBis valid- Not all locales are supported (e.g. 
en-AUis 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
lazyloadin iframe-related tag plugins #3798- Affects 
iframe,jsfiddle,vimeo,youtubetag 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_generatorhelper 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_generatorhelper),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_numberalso 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_timeOpen Graph tag witharticle:modified_time#3674Replaced deprecated
keywordsOpen Graph tag witharticle:tag#3805meta_generator tag should be inserted into
<head>that spans multiple lines #3778No longer clear database
db.jsonwhen runninghexo neworhexo --help#3793Completely ignore files/folders specified in
ignore:option #3797- If you’re using Webpack or related tools in your theme, the 
node_modulesfolder 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_linkfilter 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
-pis alias of--path-sis alias of--slug-ris 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