如何构建一个静态网站?
本文最后更新于 2025年2月9日
注:本教程适用于 Windows 平台。
预先要求
- git
- node.js
- 一个 GitHub 账号
- 一个 Cloudflare 账号
步骤
本地站点
打开
终端管理员
,输入1
npm install -g hexo-cli
在你喜欢的位置打开
终端
,输入1
hexo init myblog
会新建一个 myblog 文件夹。你可以按照喜好命名。
继续执行:
1
2cd myblog
npm install继续执行:
1
2
3hexo clean
hexo g
hexo s打开浏览器,输入
http://localhost:4000/
,可见:
这样,我们本地的网站就初步构建好了。
上线
GitHub
登录 GitHub,新建一个 repository,名字最好和刚刚
hexo init
的名字一致,权限设置 Private,其余保持默认。在本地博客目录下:
1
git init
设置用户名和邮箱地址 & 远程存储库:
如果喜欢可视化的话可以使用Visual Studio
右键 ->
Open with Visual Studio
工具
->选项
->源代码管理
->Git仓库设置
->常规
里,修改用户名
和电子邮件
工具
->选项
->源代码管理
->Git仓库设置
->远程
里,设置远程链接为仓库链接,保存
(可选) 在.gitignore 末尾添加
1
2.github/
.vs/在本地博客目录下:
1
2
3git add .
git commit -m "up"
git push --force-with-lease
这样,网站代码已经上传到 GitHub 中了。
Cloudflare
- 登录或注册账号
计算 (Workers) -> Workers 和 Pages -> 创建
Pages -> 连接到 git
里,关联 GitHub 账号,选择仓库,开始设置
- 按喜好修改名称 (同时域名也会改变),构建命令写
npx hexo generate
,构建输出目录写public
,保存并部署
- 等待构建成功
约一分钟后网站可访问。
Hello World!
在本地博客目录下:
1
hexo new "first"
转到
source\_post\
,找到新建的 md 文件,用你喜欢的 markdown 编辑器编辑修改好后,在本地博客目录下:
1
2
3hexo clean
hexo g
hexo s打开浏览器,输入
http://localhost:4000/
,可以看到修改生效了如果确认可以提交了,在本地博客目录下:
1
2
3git add .
git commit -m "up"
git push --force-with-lease约一分钟后访问你的网址,可以看到修改生效了
自定义站点样式
它的优点比较显著:
- 免费 & 开源
- 成熟 & 优雅
- 简单,适合初学者
- 文档丰富
fluid 主题配置
安装与启用
1 |
|
修改_config.fluid.yml
里 theme: fluid
自定义配置
详见_config.yml 和官方文档
一些自定义的配置:
评论功能
1 |
|
方案一:valine
需要先注册 LeanCloud,创建应用,点击,再在设置 - 安全中心 - Web 安全域名里填你的域名
配置:
1 |
|
可以在数据存储 - 结构化数据 - Comment 里控评
方案二:waline
相对复杂但效果更好,详见这篇博客
技巧
在本地博客目录下新增:
push.bat
1
2
3
4
5
6
7
8
9@echo off
git add .
git diff-index --quiet --cached HEAD --
if %errorlevel% == 0 (
echo no change, skip commit
) else (
git commit -m "up"
)
git push --force-with-leasebuild.cmd
1
cmd /c hexo clean && hexo g
这样保存本地更改时只需调用
build.cmd
,推送更改时只需调用push.bat
常见问题
npm 安装报错
- 尝试使用管理员权限运行
- 可以使用
npm config set registry https://registry.npm.taobao.org
切换到国内镜像
hexo 命令未找到
- 确保已正确安装 node.js
- 检查环境变量是否正确设置
更改未生效
- 确保已执行以下命令
1
2
3hexo clean
hexo g
hexo s- 网页 build、上线和更新需要一定时间,请过几分钟后再次查看
个人博客需要备案吗?
- 未设置自定义域名,只使用 *.pages.dev:不需要
- 网站的自定义域名不使用国内的域名:不需要
- 网站的自定义域名使用国内的域名:需要