在 Hexo 3.0 之后,内置的服务器功能被独立成了一个单独的模块。这意味着如果你想使用 hexo server 命令在本地预览博客,必须先手动安装这个模块。你可以把 hexo-server 想象成博客的“本地试衣间”,让你在衣服(网站)正式上架(部署到公网)之前,先在自己电脑上看看效果。
安装步骤
在使用服务器功能前,你需要通过 npm 安装 hexo-server 模块。这是使用本地预览功能的前提。
命令示例:
1 | npm install hexo-server --save |
参数说明:
hexo-server:要安装的模块名称。--save:将该模块添加到你的package.json依赖列表中。这样当你把博客代码分享给别人或在另一台电脑上克隆时,只需运行npm install就能自动安装此模块,无需手动再次输入安装命令。
启动服务器
安装完成后,你就可以启动本地服务器了。Hexo 会监视你源文件的变化,一旦你保存了文章或修改了配置,它会自动重新编译并刷新页面,无需手动重启。
命令示例:
1 | hexo server |
默认行为:
- 访问地址:
http://localhost:4000 - 监听状态:动态模式。监视
source和theme等目录的文件变动,自动更新。 - 适用场景:日常写作、主题开发、调试代码。
常用参数与配置
在实际使用中,你可能会遇到端口冲突,或者需要在特定网络环境下测试,这时就需要用到以下参数。
1. 更改端口 (-p)
默认端口是 4000。如果这个端口被其他程序占用(你会看到 EADDRINUSE 错误),或者你习惯使用其他端口,可以通过 -p 选项指定。
命令示例:
1 | hexo server -p 5000 |
参数说明:
-p或--port:指定服务器监听的端口号。5000:示例端口号。设置后,你需要通过http://localhost:5000访问博客。
2. 静态模式 (-s)
静态模式下的服务器行为与默认的动态模式完全不同。它不会监视文件变化,也不会自动重新生成网页。它仅仅是一个简单的静态文件服务器,直接服务于 public 文件夹中的内容。
命令示例:
1 | hexo server -s |
(等价于 hexo server --static)
重要注意事项:
- 前置操作:在运行此命令前,你必须先手动执行
hexo generate(或hexo g) 生成静态文件。如果public文件夹是空的或过期的,你看到的将是旧内容或空页面。 - 性能特点:因为没有文件监视和实时编译的开销,响应速度极快。
- 适用场景:模拟生产环境。当你想要测试最终生成的静态网页效果,或者在资源受限的服务器上运行时使用。这就像是在正式演出前的“带妆彩排”,展示的是最终定稿的效果,而不是排练过程。
概念辨析:动态模式 vs 静态模式
| 特性 | 动态模式 (默认) | 静态模式 (-s) |
|---|---|---|
| 文件监视 | 开启,自动检测变动并刷新 | 关闭,不检测变动 |
| 自动生成 | 是,修改保存即更新 | 否,必须预先运行 hexo generate |
| CPU/内存占用 | 相对较高 (需运行编译逻辑) | 极低 (仅分发文件) |
| 主要用途 | 写作、开发、调试 | 生产环境模拟、最终效果验收 |
3. 自定义 IP 地址 (-i)
默认情况下,Hexo 服务器监听 0.0.0.0,这意味着它不仅允许本机访问,还允许局域网内的其他设备通过你的电脑 IP 访问。如果你只想让本机访问,或者需要指定特定的网络接口,可以使用 -i 选项。
命令示例:
1 | hexo server -i 192.168.1.1 |
参数说明:
-i或--ip:指定服务器绑定的 IP 地址。192.168.1.1:示例 IP。- 如果设置为
127.0.0.1,则只有你自己能访问。 - 如果设置为
0.0.0.0(默认),局域网内的手机或其他电脑都能通过你的 IP 访问预览。 - 如果设置为具体的局域网 IP (如
192.168.1.105),则仅通过该特定接口监听。
- 如果设置为
综合使用场景示例
假设你正在开发一个新主题,并且想用手机查看效果,同时发现 4000 端口被占用了:
- 首先确保已安装模块。
- 运行命令指定端口为 5000,并监听局域网 IP(假设你的电脑局域网 IP 是 192.168.1.5):
1
hexo server -p 5000 -i 192.168.1.5
- 此时,你可以在电脑浏览器访问
http://192.168.1.5:5000,也可以在同一 WiFi 下的手机浏览器输入该地址进行预览。当你修改文章保存时,手机页面也会自动刷新。
如果你完成了所有修改,准备检查最终生成的静态文件是否无误:
- 先生成文件:
1
hexo generate
- 以静态模式启动:
1
hexo server -s
- 此时任何对源文件的修改都不会反映在页面上,直到你再次运行
hexo generate。这能确保你看到的是用户最终会看到的真实版本。