你需要準備的東西#
-
一個牛逼的腦子,支持並行運算至少兩個單位以上的事件。遇到問題先思考,想不通就搜索,搜索不到就去和 AI 調情,不要上來就問問問
-
Git - Downloads (git-scm.com):最牛逼的版本控制器,這裡用於對 Github 進行操作,當然,你也可以嘗試使用GitHub Desktop | Simple collaboration from your desktop但就我而言,這玩意更難用
-
Node.js — Run JavaScript Everywhere (nodejs.org):Fuwari 基於 Node.js,你需要安裝這個來搭建博客
-
一個Github帳號:用於創建一個代碼倉庫存放 Fuwari 文件
-
一個Cloudflare帳號:用於創建一個 Pages 並且綁定域名支持訪問
-
MarkText:這是一個可視化 MarkDown 編輯器,因為 Fuwari 的每一篇文章 / 頁面都是 MarkDown,所以需要一個好用的編輯器
-
你得會用 MarkDown 語法來編寫文章,如果你不會可以參見:Markdown 基本語法 | Markdown 官方教程
流程圖#
本地部署 Fuwari,編寫文章 -> 推送更改到遠程 Github 倉庫 -> Cloudflare Pages 檢測到倉庫更新自動構建新的网站靜態文件 -> 網站成功更改
讓我們開搞吧!#
首先,我們來本地部署 Fuwari#
- Fork 倉庫:
-
然後將倉庫克隆到本地:
git clone <你的倉庫URL>
(推薦使用 SSH,可以不用魔法來推送更改) -
首先,全局安裝 pnpm:
npm install -g pnpm
(如果 npm 國內拉取過慢,請嘗試 cnpm:npmmirror 鏡像站 -
然後在項目根目錄安裝依賴:
pnpm install
和pnpm add sharp
-
至此,你成功在本地部署了 Fuwari
Tip
你也可以使用創建一個新的空倉庫然後手動上傳文件,並且可以將倉庫可見性設為:Private
改寫 Fuwari 的基本信息並且清理多餘文件#
剛創建的 Fuwari 可能帶有一些示例的博主名,ICON,URL,介紹和示例文章,為了讓用戶知道這是你的博客,我們需要一一改寫
-
在根目錄下的
src
文件夾中,你可以找到config.ts
我們來開始改寫-
title:你的博客主標題
-
subtitle:你的博客副標題。可選,在首頁會顯示為 “主標題 - 副標題”
-
lang:博客顯示語言。註釋已經列出了一些常用的值,如:en, zh_CN, zh_TW, ja, ko
-
themeColor:hue 值則是你的博客主題色,可以在你的博客右上角的畫板圖標確定喜歡的顏色再填寫
-
banner:src:即 banner 圖片,支持 http/https URL
-
favicon:src:即網站圖標,支持 http/https URL
-
links:即友情鏈接,這些鏈接在導航欄上
-
avatar:即你的頭像
-
name:即你的名字
-
bio:即個性簽名,會顯示在頭像和名字下面
-
NavBarConfig
為導航欄設置的超鏈接。ProfileConfig
為你的用戶的超鏈接,分別如圖
-
icon:你需要前往Font Awesome去搜索你想要的圖標,比如 QQ,則填寫
fa6-brands:qq
,如圖。Fuwari 支持這幾種類型:fa6-brands
,fa6-regular
,fa6-solid
,material-symbols
-
這裡我附上我的
config.ts
-
import type { LicenseConfig, NavBarConfig, ProfileConfig, SiteConfig, } from './types/config' import { LinkPreset } from './types/config' export const siteConfig: SiteConfig = { title: '二叉樹樹的博客', subtitle: '愛你所愛!', lang: 'zh_CN', // 'en', 'zh_CN', 'zh_TW', 'ja', 'ko' themeColor: { hue: 355, // Default hue for the theme color, from 0 to 360. e.g. red: 0, teal: 200, cyan: 250, pink: 345 fixed: false, // Hide the theme color picker for visitors }, banner: { enable: true, src: 'assets/images/222.webp', // Relative to the /src directory. Relative to the /public directory if it starts with '/' position: 'center', // Equivalent to object-position, only supports 'top', 'center', 'bottom'. 'center' by default credit: { enable: false, // Display the credit text of the banner image text: '', // Credit text to be displayed url: '' // (Optional) URL link to the original artwork or artist's page } }, favicon: [ // Leave this array empty to use the default favicon { src: 'https://q2.qlogo.cn/headimg_dl?dst_uin=2973517380&spec=5', // Path of the favicon, relative to the /public directory //theme: 'light', // (Optional) Either 'light' or 'dark', set only if you have different favicons for light and dark mode sizes: '128x128', // (Optional) Size of the favicon, set only if you have favicons of different sizes } ] } export const navBarConfig: NavBarConfig = { links: [ LinkPreset.Home, LinkPreset.Archive, LinkPreset.About, { name: '隨機圖', url: 'https://pic.onani.cn', // Internal links should not include the base path, as it is automatically added external: true, // Show an external link icon and will open in a new tab }, { name: 'GitHub', url: 'https://github.com/saicaca/fuwari', // Internal links should not include the base path, as it is automatically added external: true, // Show an external link icon and will open in a new tab }, ], } export const profileConfig: ProfileConfig = { avatar: 'assets/images/111.webp', // Relative to the /src directory. Relative to the /public directory if it starts with '/' name: '二叉樹樹', bio: 'Protect What You Love./愛你所愛!', links: [ // { // name: 'Twitter', // icon: 'fa6-brands:twitter', // Visit https://icones.js.org/ for icon codes // You will need to install the corresponding icon set if it's not already included // `pnpm add @iconify-json/<icon-set-name>` // url: 'https://twitter.com', // }, // { // name: 'Steam', // icon: 'fa6-brands:steam', // url: 'https://store.steampowered.com', // }, { name: 'GitHub', icon: 'fa6-brands:github', url: 'https://github.com/afoim', }, { name: 'QQ', icon: 'fa6-brands:qq', url: 'https://qm.qq.com/q/Uy9kmDXHYO', }, { name: 'QQ', icon: 'fa6-solid:envelope', url: 'mailto:acofork@foxmail.com', }, ], } export const licenseConfig: LicenseConfig = { enable: true, name: 'CC BY-NC-SA 4.0', url: 'https://creativecommons.org/licenses/by-nc-sa/4.0/', }
-
-
清理多餘文件。在根目錄下的
src/content/posts
文件夾中會有一些示例文章,這些文章介紹了一些 MarkDown 語法和技巧,可以讓你更快上手 Fuwari 和 fuwari,我們可以將其保存到別處 -
至此,你已經可以開始撰寫文章了
讓我們開始寫作!#
-
首先,在項目根目錄執行:
pnpm new-post <這裡填寫你的文章標題>
-
然後,在根目錄下的
src/content/posts
文件夾中會多出一個xxx.md
文件 -
我們使用 MarkText 打開這個文件,你可以看到一些基本信息,我們只需要關注幾個重要的信息
-
title: xxx published: 2024-10-14 description: '' image: '' tags: [] category: '' draft: false lang: ''
-
title:文章標題
-
published:文章創建時間
-
description:文章描述,正常會顯示在文章標題下面
-
image:文章封面圖(同目錄需要寫
./
如:./assets/images/2024-10-14-11-33-28-image.webp
) -
tag:文章標籤
-
category:文章分類
-
-
我們還需要更改根目錄下的
astro.config.mjs
。在第 34 行更改stie:
為你的站點 URL,如:site: "https://onani.cn",
-
欸?有的人就會問了,MarkDown 固然好,但是我要如何處理圖片的置入呢
-
這也很簡單,多虧了 MarkText 這款軟件,我們也可以像編輯 Typecho 一樣直接使用 Ctrl+CV 來在 MarkDown 語法中置入圖片,但是我們需要一些小設置:
- 依次點擊:MarkText 軟件的左上角的三條杠 -> File -> Perferences -> 左側的 Image 分類 -> 如圖設置 -> 注意更改第一個選項為 Copy 開頭的選項,將 Perfer 開關打開,然後上下兩個文本框一個填寫絕對路徑一個填寫相對路徑
- 這樣,當置入圖片時,會往
assets/images
文件夾複製一份,然後通過![1](assets/images/1.webp)
寫入 MarkDown 文件。這樣網站就能成功讀取到圖片啦。而你只需要 Ctrl+CV,其他操作 MarkText 都會自動處理
- 至此,你已經會用 MarkText 編寫 MarkDown 語法的博文了
本地預覽,然後發布到 Github#
-
當你認為你的文章已經寫得差不多時,想要看看效果?請到項目根目錄執行:
pnpm dev
,稍等片刻,你就可以本地預覽你的博客啦
-
好!接下來我們需要使用 Git 將我們所做的更改發布到 Github
-
首先,你需要讓 Git 知道你是誰:
git config --global user.name "你的Github用戶名"
和git config --global user.email "你的Github郵箱@example.com"
-
然後,設置遠程倉庫:
git remote add origin <遠程倉庫的URL>
-
隨後,讓我們提交所有文件:
git add .
-
之後,讓我們發布一個本地提交:
git commit -m "項目初始化"
-
最後,讓我們將本地更改提交到遠程倉庫:
git push
-
-
此時,你的 Github 倉庫應該已經有了新的提交(😂我又回來了)
讓 Cloudflare 連接上 Github,使用 Pages 服務展示你的博客(FREE!)#
-
前往 Cloudflare 的 Workers 和 Pages 頁面,創建一個新 Pages
-
然後選擇連接 Git 存儲庫,連接你的 Github,隨後設置構建命令:
pnpm build
,然後設置構建輸出目錄:dist
,如圖
-
綁定自定義域,訪問自定義域即可訪問你的博客!
-
隨後,你只需要在本地編寫文章,然後使用 Git 將更改推送到遠程倉庫,Cloudflare 就會自動部署,更新你的博客!