Hexo框架学习——从安装到配置

news2024/9/23 23:48:10

第一章 Hexo入门

Hexo 是一个快速、简洁且高效的博客框架。

1.1 Hexo的下载与安装

1.1.1 Hexo下载

在下载Hexo之前,我们需要确保电脑上已经安装好以下软件:

  • Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)

  • Git

保证以上两个软件可以正常运行后,我们需要保证npm的网络畅通无阻,最好配置国内镜像:

 npm config set registry http://registry.npm.taobao.org

保证网络通畅后,我们可以输入以下命令,安装hexo:

 npm install -g hexo-cli

以上命令安装的是hexo的脚手架,如果你要安装Hexo的瘦身版,自己定制Hexo,官方推荐的下载方式:

对于熟悉 npm 的进阶用户,可以仅局部安装 hexo 包。

 $ npm install hexo

安装以后,可以使用以下两种方式执行 Hexo:

  1. npx hexo <command>

  2. Linux 用户可以将 Hexo 所在的目录下的 node_modules 添加到环境变量之中即可直接使用 hexo <command>

 echo 'PATH="$PATH:./node_modules/.bin"' >> ~/.profile

1.1.2 Hexo 安装

以上过程完成了hexo的下载,接下来我们进行Hexo的安装:

这里我们以创建testBlog为例,首先打开cmd,同时在磁盘目录创建一个文件夹(按自己兴趣可创建可不创建):

我这里在D盘创建了test文件夹:

用cmd执行如下命令:

 hexo init testBlog
 #官方命令格式:hexo init <folder>

这个命令是创建我们博客的文件夹,相当于建设一栋房子的骨架。创建好后我们进入testBlog:

Hexo的骨架如下:

 ├── _config.yml
 ├── package.json
 ├── scaffolds
 ├── source
 |   ├── _drafts
 |   └── _posts
 └── themes

接下来我们进行下一步(已完成的可忽略):

 npm install

1.2 Hexo 框架文件分析

我们研究一个框架,肯定要知道该框架文件夹下的文件作用。

1.2.1 source

资源文件夹。 是存放用户资源的地方。

这个文件夹非常重要,我们博客展现出来的文章最初就是存放在这里。Hexo默认创建的md文件存放在该文件夹下的 _posts 文件夹下,Hexo规定开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。 Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。

1.2.2 scaffolds

Hexo的模板文件。

我们在创建md文件的时候,官方默认是非常空白的,如果我们有自己的编写方式可以后续在这里自定义自己的模板。后续我会教大家来自定义自己的模板。

1.2.3 themes

我们要建造自己的博客,肯定会带有自己的特色,Hexo提供支持自定义自己的主题,什么是主题?看下图:

是不是觉得这个主题非常棒!(我自己是这么认为的,🤭),通过主题文件夹,我们就可以布置自己喜欢的主题了。

1.2.4 _config.yml

这个Hexo的配置文件,很是重要。

1.2.5 package.json

这个文件不用过多介绍,很少用得到。

1.3 _config.yml 配置详解

我们打开 _config.yml 配置文件,这一看是不是大吃一惊,这么多!不过不要紧,我把配置参数做了注释,很容易就能了解了:

 # Hexo Configuration
 ## Docs: https://hexo.io/docs/configuration.html
 ## Source: https://github.com/hexojs/hexo/
 ​
 # Site
 title: Hexo             #网站标题
 subtitle: ''            #网站副标题
 description: ''         #网站描述
 keywords:               #网站的关键词。 支持多个关键词。
 author: John Doe        #您的名字
 language: en            #语言
 timezone: ''            #时区
 ​
 # URL
 ## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
 url: http://example.com                     #网址, 必须以 http:// 或 https:// 开头
 permalink: :year/:month/:day/:title/        #文章的 永久链接 格式
 permalink_defaults:                         #永久链接中各部分的默认值
 pretty_urls:                                #改写 permalink 的值来美化 URL
   trailing_index: true # Set to false to remove trailing 'index.html' from permalinks   #是否在永久链接中保留尾部的 index.html,设置为 false 时去除
   trailing_html: true # Set to false to remove trailing '.html' from permalinks         #是否在永久链接中保留尾部的 .html, 设置为 false 时去除 (对尾部的 index.html无效) 
 ​
 # Directory
 source_dir: source          #源文件夹。您的内容存储在哪里
 public_dir: public          #公用文件夹。静态站点将在哪里生成
 tag_dir: tags               #标签文件夹
 archive_dir: archives       #归档文件夹
 category_dir: categories    #分类文件夹
 code_dir: downloads/code    #Include code 文件夹,source_dir 下的子目录
 i18n_dir: :lang             #国际化(i18n)文件夹
 skip_render:                #匹配到的文件将会被不做改动地复制到 public 目录中。 您可使用 glob 表达式来匹配路径。
 ​
 # Writing
 new_post_name: :title.md # File name of new posts       新文章的文件名称
 default_layout: post                                    #预设布局
 titlecase: false # Transform title into titlecase       #把标题转换为 title case
 external_link:                                          #在新标签中打开链接
   enable: true # Open external links in new tab         #在新标签中打开链接
   field: site # Apply to the whole site                 #对整个网站(site)生效或仅对文章(post)生效
   exclude: ''                       #需要排除的域名。 主域名和子域名如 www 需分别配置
 filename_case: 0                    #将文件名转换为小写1;2上壳体
 render_drafts: false                #显示草稿
 post_asset_folder: false            #启用 资源文件夹
 relative_link: false                #把链接改为与根目录的相对位址
 future: true                        #显示未来的文章
 syntax_highlighter: highlight.js    #代码块的设置, 请参考 代码高亮 进行设置
 highlight:                          #   代码块的设置, 请参考 Highlight.js 进行设置
   line_number: true
   auto_detect: false
   tab_replace: ''
   wrap: true
   hljs: false
 prismjs:                            #代码块的设置, 请参考 PrismJS 进行设置
   preprocess: true
   line_number: true
   tab_replace: ''
 ​
 # Home page setting
 # path: Root path for your blogs index page. (default = '')
 # per_page: Posts displayed per page. (0 = disable pagination)
 # order_by: Posts order. (Order by date descending by default)
 index_generator:    #使用hexo生成器索引生成帖子存档
   path: ''          #博客索引页的根路径
   per_page: 10      #每页显示的帖子。
   order_by: -date   #发布订单。默认情况下按日期降序排列(从新到旧)。
 ​
 # Category & Tag
 default_category: uncategorized     #默认分类   
 category_map:                       #分类别名
 tag_map:                            #标签别名   
 ​
 # Metadata elements
 ## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
 meta_generator: true   #Meta generator 标签。 值为 false 时 Hexo 不会在头部插入该标签
 ​
 # Date / Time format
 ## Hexo uses Moment.js to parse and display date
 ## You can customize the date format as defined in
 ## http://momentjs.com/docs/#/displaying/format/
 date_format: YYYY-MM-DD
 time_format: HH:mm:ss
 ## updated_option supports 'mtime', 'date', 'empty'
 updated_option: 'mtime'         #当 Front Matter 中没有指定 updated 时 updated 的取值
 ​
 # Pagination
 ## Set per_page to 0 to disable pagination
 per_page: 10
 pagination_dir: page
 ​
 # Include / Exclude file(s)使用以下选项可明确处理或忽略某些文件/文件夹。 可以使用 glob 表达式 进行路径匹配。include 和 exclude 选项只会应用到 source/ ,而 ignore 选项会应用到所有文件夹.
 ## include:/exclude: options only apply to the 'source/' folder
 include:    #包含隐藏文件(包括名称以下划线开头的文件/文件夹,* 除外)
 exclude:    #排除文件或文件夹
 ignore:     #忽略文件/文件夹
 ​
 # Extensions
 ## Plugins: https://hexo.io/plugins/
 ## Themes: https://hexo.io/themes/
 theme: landscape  #当前主题名称。 值为false时禁用主题
 theme_config: #主题的配置文件。 在这里放置的配置会覆盖主题目录下的 _config.yml 中的配置
 ​
 # Deployment
 ## Docs: https://hexo.io/docs/one-command-deployment
 deploy:
   type: ''  #部署部分的设置
 ​

1.4 Hexo的指令

1.4.1 init

$ hexo init [folder]

新建一个网站。 如果没有设置 folder ,Hexo 默认在目前的文件夹建立网站。

本命令相当于执行了以下几步:

  1. Git clone hexo-starter 和 hexo-theme-landscape 主题到当前目录或指定目录。

  2. 使用 Yarn 1、pnpm 或 npm 包管理器下载依赖(如有已安装多个,则列在前面的优先)。 npm 默认随 Node.js 安装。

1.4.2 new

$ hexo new [layout] <title>

新建一篇文章。 如果没有设置 layout 的话,默认使用 _config.yml 中的 default_layout 参数代替。 Use the layout draft to create a draft. 如果标题包含空格的话,请使用引号括起来。

选项描述
-p, --path文章的路径。 自定义文章的路径。
-r, --replace如果存在的话,替换当前的文章。
-s, --slug文章别名。 自定义文章的 URL。

默认情况下,Hexo 会使用文章的标题来决定文章文件的路径。 对于独立页面来说,Hexo 会创建一个以标题为名字的目录,并在目录中放置一个 index.md 文件。 你可以使用 --path 参数来覆盖上述行为、自行决定文件的目录:

hexo new page --path about/me "About me"

以上命令会创建一个 source/about/me.md 文件,同时 Front Matter 中的 title 为 "About me"

注意! title 是必须指定的! For example, this will not result in the behaviour you might expect:

hexo new page --path about/me

此时 Hexo 会创建 source/_posts/about/me.md,同时 me.md 的 Front Matter 中的 title 为 "page"。 这是因为在上述命令中,hexo-cli 将 page 视为指定文章的标题、并采用默认的 layout

1.4.3 generate

$ hexo generate

生成静态文件。

选项描述
-d, --deployDeploy after generation finishes
-w, --watch监视文件变动
-b, --bail生成过程中如果发生任何未处理的异常则抛出异常
-f, --force强制重新生成
-c, --concurrency要同时生成的文件的最大数量。 默认无限制

1.4.4 publish

$ hexo publish [layout] <filename>

发表草稿。

1.4.5 server

$ hexo server

启动服务器。 默认情况下,访问网址为: http://localhost:4000/

选项描述
-p, --port重设端口
-s, --static只使用静态文件
-l, --logEnable logger. Override logger format.

1.4.6 deploy

$ hexo deploy

部署你的网站。

选项描述
-g, --generateGenerate before deployment

1.4.7 render

$ hexo render <file1> [file2] ...

渲染文件。

选项描述
-o, --outputOutput destination

1.4.8 migrate

$ hexo migrate <type>

从其他博客系统 迁移内容。

1.4.9 clean

$ hexo clean

清除缓存文件 (db.json) 和已生成的静态文件 (public)。

1.4.10 list

$ hexo list <type>

列出所有路由。

1.4.11 version

$ hexo version

显示版本信息。

1.4.12 config

$ hexo config [key] [value]

列出网站的配置(_config.yml)。 如果指定了 key,则只展示配置中对应 key 的值;如果同时指定了 keyvalue,则将配置中对应的 key 的值修改为 value

1.4.13 选项

1.4.13.1 安全模式
$ hexo --safe

在安全模式下,不会加载插件和脚本。 当您在安装新插件遭遇问题时,可以尝试以安全模式重新执行。

1.4.13.2 调试模式
$ hexo --debug

在终端中显示调试信息并记录到 debug.log。 当您使用 Hexo 时遇到问题,可以尝试用调试模式重新执行一次。 如果您发现错误,请在 GitHub 上提出 issue。

1.4.13.3 简洁模式
$ hexo --silent

Silences output to the terminal.

1.4.13.4 自定义配置文件的路径
$ hexo --config custom.yml

自定义配置文件的路径,指定这个参数后将不再使用默认的 _config.yml。 还接受一个以逗号分隔的 JSON 或 YAML 配置文件列表(无空格),该列表将把这些文件合并为一个 _multiconfig.yml 文件。

$ hexo --config custom.yml,custom2.json
1.4.13.5 显示草稿
$ hexo --draft

显示 source/_drafts 文件夹中的草稿文章。

1.4.13.6 自定义 CWD
$ hexo --cwd /path/to/cwd

自定义当前工作目录(Current working directory)的路径。

第二章 Hexo操作

2.1 Hexo写作

你可以执行下列命令来创建一篇新文章或者新的页面。

$ hexo new [layout] <title>

post是默认的布局,但你也可以提供自己的布局。 您可以通过编辑 _config.yml 中的 default_layout 设置来更改默认布局。

2.1.1 布局(Layout)

Hexo 有三种默认布局:postpagedraft。 每个人创建的文件都保存到不同的路径。新创建的帖子将保存到“source/posts”文件夹中。

布局路径
postsource/_posts
pagesource
draftsource/_drafts

禁用布局

如果你不希望一篇文章(post/page)使用主题处理,请在它的 front-matter 中设置 layout: false。 详情请参考本节。

2.1.2 文件名称

默认情况下,Hexo使用帖子标题作为其文件名。您可以在_config.yml中编辑new_post_name设置以更改默认文件名。例如,“:year-:month-:day-:title.md”将在文件名前加上创建日期。你可以使用以下占位符:

Placeholder描述
:title标题(小写,空格将会被替换为短杠)
:year建立的年份,比如, 2015
:month建立的月份(有前导零),比如, 04
:i_month建立的月份(无前导零),比如, 4
:day建立的日期(有前导零),比如, 07
:i_day建立的日期(无前导零),比如, 7

2.1.3 草稿

之前,我们提到了Hexo中的一种特殊布局:“draft”。使用此布局初始化的帖子将保存到“source/drafts”文件夹中。您可以使用“publish”命令将草稿移动到“source/posts”文件夹`publish的工作方式与new命令类似。

$ hexo publish [layout] <title>

默认情况下不显示草稿。您可以在运行Hexo时添加“--draft”选项,也可以在“_config.yml”中启用“render_drafts”设置来渲染草稿。

2.1.4 Scaffolds

在新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件。 例如:

$ hexo new photo "My Gallery"

在执行这行指令时,Hexo 会尝试在 scaffolds 文件夹中寻找 photo.md,并根据其内容建立文章。 以下是您可以在模版中使用的变量:

Placeholder描述
layout布局
title标题
date文件建立日期

2.1.5 支持的格式

Hexo 支持以任何格式书写文章,只要安装了相应的渲染插件。

例如,Hexo 默认安装了 hexo-renderer-markedhexo-renderer-ejs,因此你不仅可以用 Markdown 写作,你还可以用 EJS 写作。 如果你安装了 hexo-renderer-pug,你甚至可以用 Pug 模板语言书写文章。

只需要将文章的扩展名从 md 改成 ejs,Hexo 就会使用 hexo-renderer-ejs 渲染这个文件,其他格式同理。

2.2 Front-matter

Front-matter 是文件开头的 YAML 或 JSON 代码块,用于配置写作设置。 以 YAML 格式书写时,Front-matter 以三个破折号结束;以 JSON 格式书写时,Front-matter 以三个分号结束。

YAML

---
title: Hello World
date: 2013/7/13 20:46:25
---

JSON

"title": "Hello World",
"date": "2013/7/13 20:46:25"
;;;

2.2.1 设置 & 默认值

设置描述默认值
layout布局config.default_layout
title标题文章的文件名
date建立日期文件建立日期
updated更新日期文件更新日期
comments开启文章的评论功能true
tags标签(不适用于分页)
categories分类(不适用于分页)
permalink覆盖文章的永久链接. 永久链接应该以 /.html 结尾null
excerpt纯文本的页面摘要。 使用 该插件 来格式化文本
disableNunjucks启用时禁用 Nunjucks 标签 {{ }}/{% %} 和 标签插件 的渲染功能false
lang设置语言以覆盖 自动检测继承自 _config.yml
published文章是否发布对于 _posts 下的文章为 true,对于 _draft 下的文章为 false
2.2.1.1 布局

根据 _config.yml 中 default_layout 的设置,默认布局是 post 。 当文章中的布局被禁用(layout: false),它将不会使用主题处理。 然而,它仍然会被任何可用的渲染引擎渲染:如果一篇文章是用 Markdown 写的,并且安装了 Markdown 渲染引擎(比如默认的 hexo-renderer-marked),它将被渲染成HTML。

除非通过 disableNunjucks 设置或 渲染引擎 禁用,否则无论布局如何,标签插件 总是被处理。

2.2.1.2 分类和标签

只有文章支持分类和标签。 类别按顺序应用于职位,从而形成分类和子分类的层次结构。标签都是在同一层次上定义的,因此它们出现的顺序并不重要。

示例

categories:
  - Sports
  - Baseball
tags:
  - Injury
  - Fight
  - Shocking

如果要应用多个类别层次结构,请使用名称列表而不是单个名称。如果Hexo在帖子上看到任何以这种方式定义的类别,它将把该帖子的每个类别视为自己的独立层次结构。

示例

categories:
  - [Sports, Baseball]
  - [MLB, American League, Boston Red Sox]
  - [MLB, American League, New York Yankees]
  - Rivalries

2.3 资源文件夹

2.3.1 全局资源文件夹

资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。 比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。 然后通过类似于 ![](/images/image.jpg) 的方法访问它们。

2.3.2 文章资源文件夹

对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组织化的方式来管理资源。 这个稍微有些复杂但是管理资源非常方便的功能可以通过将 config.yml 文件中的 post_asset_folder 选项设为 true 来打开。

_config.ymlpost_asset_folder: true

当资源文件管理功能打开后,Hexo将会在你每一次通过 hexo new [layout] <title> 命令创建新文章时自动创建一个文件夹。 这个资源文件夹将会有与这个文章文件一样的名字。 将所有与你的文章有关的资源放在这个关联文件夹中之后,你可以通过相对路径来引用它们,这样你就得到了一个更简单而且方便得多的工作流。

2.3.3 相对路径引用的标签插件

通过常规的 markdown 语法和相对路径来引用图片和其它资源可能会导致它们在存档页或者主页上显示不正确。 在Hexo 2时代,社区创建了很多插件来解决这个问题。 但是,随着Hexo 3 的发布,许多新的标签插件被加入到了核心代码中。 这使得你可以更简单地在文章中引用你的资源。

{% asset_path slug %}
{% asset_img slug [title] %}
{% asset_link slug [title] %}

比如说:当你打开文章资源文件夹功能后,你把一个 example.jpg 图片放在了你的资源文件夹中,如果通过使用相对路径的常规 markdown 语法 ![](example.jpg) ,它将 不会 出现在首页上。

正确的引用图片方式是使用下列的标签插件而不是 markdown :

{% asset_img example.jpg This is an example image %}
{% asset_img "spaced asset.jpg" "spaced title" %}

通过这种方式,图片将会同时出现在文章和主页以及归档页中。

2.3.4 使用 Markdown 嵌入图片(Typora编辑器首推)

hexo-renderer-marked 3.1.0 引入了一个新的选项,其允许你无需使用 asset_img 标签插件就可以在 markdown 中嵌入图片

hexo-renderer-marked 安装代码:

$ npm install hexo-renderer-marked --save

如需启用:

post_asset_folder: true
marked:
  prependRoot: true
  postAsset: true

启用后,资源图片将会被自动解析为其对应文章的路径。 例如: image.jpg 位置为 /2020/01/02/foo/image.jpg ,这表示它是 /2020/01/02/foo/ 文章的一张资源图片, ![](image.jpg) 将会被解析为 <img src="/2020/01/02/foo/image.jpg">

2.5 数据文件

有时,您可能需要在模板中使用一些无法直接在帖子中使用的数据,或者您想在其他地方重复使用这些数据。 对于这种情况,Hexo 3 引入了新的数据文件。 此功能会加载 source/_data 内的 YAML 或 JSON 文件,如此一来您便能在网站中复用这些文件了。

举例来说,在 source/_data 文件夹中新建 menu.yml 文件:

Home: /
Gallery: /gallery/
Archives: /archives/

您就能在模板中使用这些数据:

<% for (var link in site.data.menu) { %>
  <a href="<%= site.data.menu[link] %>"> <%= link %> </a>
<% } %>

render like this :

<a href="/"> Home </a>
<a href="/gallery/"> Gallery </a>
<a href="/archives/"> Archives </a>

2.6 服务器

2.6.1 hexo-server

Hexo 3.0 把服务器独立成了个别模块。 您必须先安装 hexo-server 才能使用。

$ npm install hexo-server --save

安装完成后,输入以下命令以启动服务器。 默认情况下,您的网站会在 http://localhost:4000 下启动。 在服务器启动期间,Hexo 会监视文件变动并自动更新,您无须重启服务器。

$ hexo server

如果您想要更改端口,或是在执行时遇到了 EADDRINUSE 错误,可以在执行时使用 -p 选项指定其他端口,如下:

$ hexo server -p 5000
2.6.1.1 静态模式

在静态模式下,服务器只处理 public 文件夹中的文件,并且不会监视文件变化。 您必须在启动服务器之前运行 hexo generate。 通常用于生产环境。

$ hexo server -s
2.6.1.2 自定义 IP

Hexo 服务器默认运行在 0.0.0.0。 您可以覆盖默认的 IP 设置。

$ hexo server -i 192.168.1.1

第三章 Hexo自定义

3.1 永久链接(Permalinks)

您可以在 _config.yml 配置中调整网站的永久链接或者在每篇文章的 Front-matter 中指定。

3.1.1 变量

除了下列变量外,您还可使用除了 :path:permalink 之外 Front-matter 中的所有属性。

变量描述
:year文章的发表年份(4 位数)
:month文章的发表月份(2 位数)
:i_month文章的发表月份(不含前导零)
:day文章的发表日期 (2 位数)
:i_day文章的发表日期(不含前导零)
:hour文章发表时的小时 (2 位数)
:minute文章发表时的分钟 (2 位数)
:second文章发表时的秒钟 (2 位数)
:title文件名称 (相对于 “source/_posts/“ 文件夹)
:name文件名称
:post_title文章标题
:id文章 ID (清除缓存时不具有持久性)
:category分类。 如果文章没有分类,则是 default_category 配置信息。
:hash文件名(与 :title 相同)和日期的 SHA1 哈希值(12位16进制数)

您可在 permalink_defaults 参数下调整永久链接中各变量的默认值:

permalink_defaults:
  lang: en

3.1.2 示例

source/_posts/hello-world.mdtitle: Hello World
date: 2013-07-14 17:01:34
categories:
  - foo
  - bar
设置结果
:year/:month/:day/:title/2013/07/14/hello-world/
:year-:month-:day-:title.html2013-07-14-hello-world.html
:category/:title/foo/bar/hello-world/
:title-:hash/hello-world-a2c8ac003b43/
source/_posts/lorem/hello-world.mdtitle: Hello World
date: 2013-07-14 17:01:34
categories:
  - foo
  - bar
设置结果
:year/:month/:day/:title/2013/07/14/lorem/hello-world/
:year/:month/:day/:name/2013/07/14/hello-world/

3.1.3 多语种支持

若要建立一个多语种的网站,您可修改 new_post_namepermalink 参数,如下:

new_post_name: :lang/:title.md
permalink: :lang/:title/

当您建立新文章时,文章会被储存到:

$ hexo new "Hello World" --lang tw
# => source/_posts/tw/Hello-World.md

而网址会是:

http://localhost:4000/tw/hello-world/

3.2 主题

创建 Hexo 主题非常简单,只需创建一个新文件夹即可。 并修改 _config.yml 内的 theme 设定,即可切换主题。 一个主题可能会有以下的结构:

.
├── _config.yml
├── languages
├── layout
├── scripts
└── source

3.2.1 _config.yml

主题的配置文件。 和 Hexo 配置文件不同,主题配置文件修改时会自动更新,无需重启 Hexo Server。

3.2.2 languages

语言文件夹。 请参见 国际化 (i18n)。

3.2.3 layout

布局文件夹。 用于存放主题的模板文件,决定了网站内容的呈现方式。 Hexo 内建 Nunjucks 模板引擎,您可以另外安装插件来获得 EJS 或 Pug 支持。 Hexo 根据模板的文件扩展名选择模板引擎(就像帖子一样)。 例如:

layout.ejs   - 使用 EJS
layout.njk   - 使用 Nunjucks

您可参考 模板 以获得更多信息。

3.2.4 scripts

脚本文件夹。 在启动时,Hexo 会加载此文件夹内的 JavaScript 文件。 请参见 plugins. 以获得更多信息。

3.2.5 source

Source 文件夹。 将您的素材(如 CSS 和 JavaScript 文件)放在这里。 文件或文件夹开头名称为 _(下划线)或隐藏的文件会被忽略。

Hexo 将处理所有可渲染的文件,并将它们保存到 public 文件夹下。 不可渲染的文件将直接复制到 public 文件夹。

3.2.6 发布

当您完成主题后,可以考虑将它发布到 主题列表,让更多人能够使用您的主题。 在发布前建议先进行 主题单元测试,确保每一项功能都能正常使用。 发布主题的步骤和 更新文档 非常类似。

  1. 复刻 hexojs/site

  2. 把库(repository)复制到电脑上,并安装所依赖的插件。

    $ git clone https://github.com/<username>/site.git
    $ cd site
    $ npm install
  3. source/_data/themes/ 中创建一个新的 yaml 文件,使用您的主题名称作为文件名。

  4. 编辑 source/_data/themes/<your-theme-name>.yml 并添加您的主题。 例如:

    description: A brand new default theme for Hexo.
    link: https://github.com/hexojs/hexo-theme-landscape
    preview: http://hexo.io/hexo-theme-landscape
    tags:
      - official
      - responsive
      - widget
      - two_column
      - one_column
  5. source/themes/screenshots 中添加截图(名称与主题相同)。 图片必须为 800x500 的 PNG 文件。

  6. 推送(push)分支。

  7. 建立一个新的合并申请(pull request)并描述改动。

第四章 Hexo版本升级

Hexo版本升级指南按以下顺序逐步执行完成后,Hexo 版本及系统插件均会升级到最新。

//以下指令均在Hexo目录下操作,先定位到Hexo目录
 //查看当前版本,判断是否需要升级
 > hexo version
 ​
 //全局升级hexo-cli
 > npm i hexo-cli -g
 ​
 //再次查看版本,看hexo-cli是否升级成功
 > hexo version
 ​
 //安装npm-check,若已安装可以跳过
 > npm install -g npm-check
 ​
 //检查系统插件是否需要升级
 > npm-check
 ​
 //安装npm-upgrade,若已安装可以跳过
 > npm install -g npm-upgrade
 ​
 //更新package.json
 > npm-upgrade
 ​
 //更新全局插件
 > npm update -g
 ​
 //更新系统插件
 > npm update --save
 ​
 //再次查看版本,判断是否升级成功
 > hexo version

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你真的懂吗系列——串口通信

你真的懂吗 文章目录 你真的懂吗前言二、什么是串口通信二、STM32的串口三、什么是数据通信 前言 串口通信是一种设备间常用的串行通信方式&#xff0c;串口按位&#xff08;bit&#xff09;发送和接收字节。尽管比字节&#xff08;byte&#xff09;的串行通信慢&#xff0c;但…

机器学习算法-决策树算法

文章目录 什么是决策树&#xff1f;决策树的基本概念决策树的构建过程决策树的优缺点优点&#xff1a;缺点&#xff1a; 决策树的优化决策树的应用决策树的实现工具 特征选择准则1. 信息增益&#xff08;Information Gain&#xff09;计算公式&#xff1a;熵&#xff08;Entrop…

ubuntu20.4安装Qt5.15.2

ubantu20.4镜像下载地址&#xff1a; https://releases.ubuntu.com/focal/ubuntu-20.04.6-desktop-amd64.iso Qt5.15.2下载地址&#xff1a; https://download.qt.io/official_releases/online_installers/ 安装步骤 1、进入地址后选择对应安装包&#xff0c;我这是ubuntu…

Redis进阶(二)--Redis高级特性和应用

文章目录 第二章、Redis高级特性和应用一、Redis的慢查询1、慢查询配置2、慢查询操作命令3、慢查询建议 二、Pipeline三、事务1、Redis的事务原理2、Redis的watch命令3、Pipeline和事务的区别 四、Lua1、Lua入门&#xff08;1&#xff09;安装Lua&#xff08;2&#xff09;Lua基…

虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天

SETUP&#xff1a;工具和插件 工具&#xff1a;elevenlabs或者讯飞&#xff0c;用于Speech Synthesis&#xff08;语音合成&#xff0c;text to speech&#xff09;。 https://elevenlabs.io/app/speech-synthesis/text-to-speechhttps://elevenlabs.io/app/speech-synthesis…

海外云手机——跨国业务的高效工具

海外云手机是一种基于云计算的虚拟手机服务&#xff0c;依托海外服务器实现跨国网络访问。这项服务不仅具备传统智能手机的所有功能&#xff0c;还突破了地域限制&#xff0c;为跨国业务提供更加便捷、高效、安全的解决方案。 随着全球化的加速和互联网的快速普及&#xff0c;跨…

C语言深入理解指针五(18)

文章目录 前言一、回调函数是什么&#xff1f;二、qsort使用举例使用qsort函数排序整型数据使用qsort函数排序结构数据 三、qsort的模拟实现总结 前言 本篇将会很有意思&#xff01; 一、回调函数是什么&#xff1f; 回调函数就是一个通过函数指针调用的函数。   如果你把函数…

代码随想录27期|Python|Day52|​动态规划|​647. 回文子串|516. 最长回文子序列

本文是动态规划的回文字符串部分。 647. 回文子串 本题需要搞清楚dp的定义、遍历顺序和递推公式。 1、dp数组的定义 由图片可知&#xff0c;不同于之前的dp数组直接定义为当前遍历到的位置处题目所要求得值&#xff0c;而是应该定义为i为开始&#xff0c;j为结束的子串是否是…

探索音视频SDK的双重核心:客户端与服务端的协同作用

在当今的数字化时代&#xff0c;音视频技术已成为连接人与人、人与世界的重要桥梁。从社交娱乐到在线教育&#xff0c;从远程医疗到视频会议&#xff0c;音视频技术的应用无处不在&#xff0c;极大地丰富了我们的生活方式和工作模式。本文将深入探讨音视频SDK的两大核心类别——…

横版闯关手游【全明星时空阿拉德】Linux手工服务端+运营后台+双app端

横版闯关手游【时空阿拉德】&#xff08;【全明星阿拉德】&#xff09;阿拉德系列2022整理Linux手工服务端余额充值后台安卓苹果双端。 运营后台看目录结构是thinkphp开发的。 代码免费下载&#xff1a;百度网盘

DNAT和SNAT实践

NAT分SNAT和DNAT两种。从名字上区分&#xff1a; SNAT将源IP地址替换为出口网络的IP地址&#xff0c;以便内网地址可以访问外网服务。一般受限于公网IP有限&#xff0c;一个内网集合想访问外网服务&#xff0c;则用统一的出口做代理。出口配置公网IP&#xff0c;帮助从此发出的…

Java重修笔记 第五十四天 坦克大战(二)常用的绘图方法、画出坦克图形

常用的绘图方法 1.设置当前画笔的颜色&#xff0c;可多次调用 public abstract void setColor(Color c) 参数&#xff1a;c -颜色 2. 画一条直线 public abstract void drawLine(int x1, int y1, int x2, int y2) 参数&#xff1a;x1 - 第一个点的 x坐标。 y1 - 第一点的 y坐…

Git使用—把当前仓库的一个分支push到另一个仓库的指定分支、基于当前仓库创建另一个仓库的分支并推送到对应仓库(mit6828)

目录 背景提示 将当前仓库的一个分支push到另一个仓库的指定分支 直接基于仓库rep1中的某个分支创建新的分支并将其推送到目标仓库rep2 补充 参考链接 背景提示 最近打算做一下mit6.828的项目&#xff0c;这个仓库使用问题困扰了自己一段时间&#xff0c;由于6828官方提供…

92、K8s之ingress下集

一、ingress 1.1、两种部署方式 1、ingress------------deployment nodeport ​ daemonset hostnetwork----每台设备只能有一个pod&#xff0c;因为直接使用宿主机的端口&#xff0c;所以只能开启一个pod。 2、ingress------svc------deployment里面的pod&#xff0c;这种…

文件IO编程

文章目录 文件描述符相关系统调用文件有关的系统调用文件操作函数--creat函数文件操作函数--open函数文件操作函数--read函数文件操作函数--write函数文件操作函数--close函数文件操作函数--lseek函数缓冲区的大小对性能的影响 实验&#xff1a;调用系统函数&#xff0c;实现文…

Linux:体系结构和操作系统管理

目录 一、冯诺依曼体系结构 1.问题1 2.问题2 二、操作系统管理 一、冯诺依曼体系结构 本章将会谈论一下对冯诺依曼计算机体系结构的理解。 在2024年&#xff0c;几乎所有的计算机&#xff0c;都遵守冯诺依曼体系结构。 冯诺依曼体系结构是应用在硬件层面的&#xff0c;而硬…

Docker高级管理--Compose容器编排与私有仓库(Docker技术集群与应用)

本文介绍了Docker的三大工具&#xff1a;Docker Machine用于创建和管理Docker主机&#xff0c;Docker Compose用于单引擎模式下的多容器应用部署和管理&#xff0c;而Docker Swarm则是一个集群管理工具&#xff0c;提供微服务应用编排功能。Docker Machine支持在不同环境配置Do…

【代码随想录训练营第42期 Day56打卡 - 图论Part6 - 并查集2 - 冗余连接问题

目录 一、做题心得 二、题目与题解 题目一&#xff1a;108. 冗余连接 题目链接 题解&#xff1a;并查集 题目二&#xff1a;109. 冗余连接II 题目链接 题解&#xff1a;并查集 三、小结 一、做题心得 冗杂连接问题是图论章节应用并查集的经典问题。所有的顶点通过边相…

Redis 篇- 实战项目中使用 Redis 实现经典功能(异步秒杀商品、点赞功能、共同关注的好友、投喂功能)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 使用 Redis 实现异步秒杀 1.1 基于 Lua 脚本判断是否符合条件&#xff1a;库存是否充足、一人一单 1.2 基于 Redis 中的 Stream 实现消息队列 1.3 使用 Java 操作…

Unity Hub自动安装指定版本Unity的Android开发环境

Unity开发Android环境要求SDK、DNK、JDK、Gradle版本都要对才能发布APK&#xff0c;自己去配置很容易出错。Unity Hub可以自动安装指定版本Unity的Android开发环境。 1.安装国内用的UnityHub&#xff08;我这里用的3.3.2-c6&#xff09; 2.找到对应的Unity版本 3.点击【从Unit…