Skip to content

Releases: hexojs/hexo

5.4.1

22 Jan 11:33
0b5cc8a
Compare
Choose a tag to compare

Fixes

Full Changelog: 5.4.0...5.4.1

v6.0.0

22 Dec 13:30
c749815
Compare
Choose a tag to compare

Breaking Changes

Security

Please see more detail: Announcement: About CVE-2021-25987

New features

Performance

Fixes

Refactor

Docs

Dependencies

New Contributors

Full Changelog: 5.4.0...6.0.0

v5.4.0

21 Feb 08:06
b65a562
Compare
Choose a tag to compare

New features

Breaking change

  • fix(excerpt): use span instead of anchor element for better SEO performance @stevenjoezhang [#4627]

Fixes

Misc

Dependencies

v5.3.0

17 Dec 14:05
2f6a822
Compare
Choose a tag to compare

New features

  • expose escape_html helper method for string manipulation to templates @awwong1 [#4581]
  • list_tags: span element & custom class for label @noraj [#4578]

Fixes

Refactor

Docs

  • docs(badge): replace david-dm with more reliable shields.io @curbengh [#4538]

5.2.0

17 Sep 09:07
223a046
Compare
Choose a tag to compare

Changes

  • perf(external_link): faster regexp @SukkaW [#4536]
    • prioritise http(s):// over //
  • feat: support 'disableNunjucks' in front-matter @curbengh [#4518]
    • Enable this option to disable tag plugin
    • Setting this option in front-matter will override the same option set by the renderer (e.g. hexo-renderer-marked)
    ---
    title: foo
    date: 2020-01-02 03:04:05
    disableNunjucks: true|false
    ---
  • fix: avoid escaping front-matter if unnecessary @curbengh [#4522]
    • using variable (e.g. {{ title }}) with special characters no longer result in double-quote wrap
  • fix: validate value of config.url @curbengh [#4520]
    • config.url should starts with "http://" or "https://"
  • fix(router): convert string to buffer in route stream @ppoffice [#4517]
    • fix crash in hexo generate --bail
  • fix(disableNunjucks): query both async and sync versions of renderer @curbengh [#4498]
    • disableNunjucks option should now works reliably with synchronous renderer
  • feat(load_plugin): ignore pkg name endswith theme name @SukkaW [#4497]
    • An initial effort to support scoped package

Housekeeping

  • chore/ci: move benchmark & profiling to Actions @SukkaW [#4525] [#4514] [#4335]
    • Travis is now completely replaced by Actions (in this repo)
  • chore: use example.com for example domain @yoshinorin [#4512]

5.1.1

23 Aug 08:58
6635f2c
Compare
Choose a tag to compare

Changes

  • fix(filter/highlight): avoid escaping curly bracket when highlight & prismjs disabled @curbengh [#4489]
    • When both highlight.js and prismjs are disabled:
    # _config.yml
    highlight:
      enable: false
    
    prismjs
      enable: false
    • there was an issue that curly brackets { } are escaped { } mistakenly in the backtick_code_block.js filter. The fix is to avoid running that filter when code highlight is disabled.
    • Some users disable Hexo's default code highlight as they prefer to their own method.

5.1.0

22 Aug 03:24
ebc9008
Compare
Choose a tag to compare

Features

  • feat(highlight): parse 'caption' option to prismHighlight @curbengh [#4476]

    • caption is now available in prismjs:
    # _config.yml
    highlight:
      enable: false
    prismjs:
      enable: true
    • It can be used in triple backtick codeblock:
    ``` js caption
    console.log('foo')
    ```
    • above codeblock will be rendered as:
      (class attributes are omitted for brevity)
    <pre><div class="caption"><span>caption</span></div><code>console...</code></pre>
    • you can style the caption by:
    pre div.caption {
      font-size: 0.9em;
      color: #888;
    }
    
    pre div.caption a {
      float: right;
    }
  • fix: refactor post escape @SukkaW [#4472]

    • fixed issue with prismjs that, in some cases, did not remove hexo's processing tag properly
  • Remove plugins option in config @stevenjoezhang [#4475]

    # _config.yml
    plugins:
    • plugins option has been deprecated long ago and it's now completely dropped
    • plugins should be saved in scripts/ folder or installed via npm package.json.

Performance

  • perf(backtick_code): avoid duplicated escaping @SukkaW [#4478]

5.0.2

10 Aug 07:30
b7d15b9
Compare
Choose a tag to compare

Changes

  • Revert "perf: avoid running plugins in 'clean' command" [#4386] @curbengh [#4470]
    • This fixes error in hexo clean.

5.0.1

10 Aug 04:20
acb2154
Compare
Choose a tag to compare

Changes

5.0.0

29 Jul 02:24
1489074
Compare
Choose a tag to compare

Breaking change

  • refactor(external_link): migrate config during load_config @SukkaW [#4414] [#4371]

    • See Writing section for new options (introduced back in v4)
    # _config.yml
    external_link: true|false # deprecated
    
    # New option
    external_link:
      enable: true|false
    # _config.yml
    # https://hexo.io/docs/configuration#Date-Time-format
    use_date_for_updated: true # deprecated
    
    # New option
    updated_option: date
    • If you check external_link for truthy value, since it's now automatically converted to object, it will be always truthy:
    <% if (config.external_link) { %>
    • If you wish to maintain backward compatibility with older Hexo versions:
    <% if ((typeof config.external_link === 'boolean' && config.external_link === true) || (typeof config.external_link === 'object' && config.external_link.enable === true)) { %>
  • refactor(box): remove Bluebird.asCallback @SukkaW [#4379]

    • Callback syntax for Box is never documented nor utilized in Hexo's internal.
    • This is also a reminder that we might drop callbacks from all Hexo API in future. [#3328]
  • feat: bring up config.updated_option @SukkaW [#4278]

    • This can be useful for a theme that prefers to display Updated: only when it's set in the article's front-matter.
  • feat(open_graph): drop 'keywords' option from front-matter @curbengh [#4174]

    • Search engines no longer support keywords.
  • fix(#3464): override permalink use the front-matter @SukkaW [#4359]

    • User config:
    # _config.yml
    permalink: :year/:month/:day/:title/
    • Front-matter
    ---
    title: foo bar
    permalink: breaking-news/
    ---
    • That post will be available on http://yourhexo.com/breaking-news/
    • A reminder that permalink must have a trailing .html or /
    permalink: :year/:month/:day/:title/ # default
    # or
    permalink: :year/:month/:day/:title.html
  • Remove lodash from global variable @SukkaW [#4266]

    • Lodash _ is no longer available on Hexo API.
    // Dropped
    <% const arrayB = _.uniq(arrayA) %>
    • We encourage the use over native JS API over Lodash, we find this guide to be helpful.
    • If you prefer to use Lodash, you can always install it and make it available via Helper API
  • chore/ci: drop Node.js 8 and add Node.js 14 @SukkaW [#4255]

    • Node 8 has reached EOL on 31 Dec 2019.
    • Hexo now requires Node 10+; although Node 10.x is still supported, but it's going to be officially deprecated in less than a year (April 2021), so we recommend Node 12+.
  • refactor: remove site config from theme config @SukkaW [#4145]

    • Previously hexo.theme.config is merged into hexo.config, they are now separated to avoid possible conflict in configuration.

New feature

  • feat(tag): show source of the error & beautify @SukkaW [#4420]
  • feat(post_link): better error message when a post could not be located [#4426]
    • The error message is now clearer when there is an incorrect filename.
  • skip assets of unpublished posts and delete them if exist @DaemondShu [#3489]
    • When there is an unpublished post:
    ---
    title: Still a draft....
    published: false
    ---
    • That post including its assets will not be generated into the public/ folder.
  • feat(extend/injector): bring up new extend Injector @SukkaW [#4049]
  • feat: add prism highlight support @SukkaW [#4119]
  • feat(tagcloud): new option class & level @stevenjoezhang [#4370]
    • Ability to add class name for CSS styling.
  • feat(config): validate config before processing posts @SukkaW [#4381]
  • feat(post_permalink): add :second attribute option for post permalink @kkocdko [#4185]
    • Example:
    permalink: :year/:month/:day/:hour/:minute/:second/:title.html
  • feat(youtube_tag): add cookie option @curbengh [#4155]
    • When disabled, cookie is not set/sent in the youtube video embed.
  • feat(youtube_tag): support playlist @SukkaW [#4139]
    • Ability to embed a playlist.
  • feat(load_theme_config): support alternate theme config @SukkaW [#4120]
    • Theme can be configured in a file _config.[name].yml, e.g. _config.landscape.yml for hexo-theme-landscape.
    • Placed the file in the root folder, same as the current _config.yml.
    • Refer to the documentation for configuration priority.
  • feat(feed_tag): support parsing config.feed @curbengh [#4029]
  • feat(tag): add unregister() method @SukkaW [#4046]
    • This means you can now unregister existing tag plugins and replace it with your own with the same name.
  • feat(filter): add _after_html_render filter @jiangtj [#4051]
    • perf(filter): set after_render:html as alias of _after_html_render @curbengh [#4073]
    • Existing after_render:html filter plugins automatically benefit from this improvement.
  • feat(load_config): support theme_dir in node_modules @SukkaW [#4112]
  • fix(list_tags): custom class for each element @noraj [#4059]
    • Customize the class name for each element <ul>, <li>, <a>, <span> for list_tags plugin.

Performance

Fix

  • fix(box): ignore .git and node modules in the theme folder @jiangtj [#4306]
  • fix: allow empty title @stevenjoezhang [#4344]
  • fix(#4236): don't create "/index" directories when post_asset_folder is true @jiangtj [#4258]
  • fix(#4317): non-greedy regexp for tag escape @SukkaW [#4358]
  • fix(post): use non-greedy regular expressions @stevenjoezhang [#4161]
  • fix(post): properly escape swig tag inside post @SukkaW [#4352]
    • swig tag inside a single backtick is now interpreted as code embed.
    • `{% foo %}{{ bar }}{% endfoo %}`
  • fix(logging): log database only in relevant commands @curbengh [#4387]
    • Writing database to ${dbPath}/db.json message shouldn't show up in hexo clean and hexo version.
  • fix(server-cache): must match exact alias @curbengh [#4388]
    • Improve compatibility with 3rd-party console plugins that may have a name that starts with an 's'.
  • fix(tag-code): parse 'wrap' option @curbengh [#4391]
  • fix: remove unused type check @himself65 [#4398]
  • fix: access error code from error object directly @SukkaW [#4280]
    • Improve compatibility with native JS API
  • fix: load_plugin with extra line EOF @SukkaW [#4256]
  • fix: parsing code error in backticks @seaoak [#4229]
  • fix(toc_helper): escape class name and handle null id @curbengh [#4009]
  • fix(meta_generator): match existing <meta> with different order @SukkaW [#4017]
  • fix(excerpt): stricter regex @curbengh [#4443]
    • Now only the following variants of excerpt tag are valid.
    1. <!--more-->
    2. <!-- more-->
    3. <!--more -->
    4. <!-- more -->

Refactor

Read more