GitHub Wiki:在 Github 上我們可以" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 使用 Hexo 創(chuàng)建項(xiàng)目文檔網(wǎng)站

使用 Hexo 創(chuàng)建項(xiàng)目文檔網(wǎng)站

時(shí)間:2023-05-29 13:15:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-05-29 13:15:01 來源:網(wǎng)站運(yùn)營

使用 Hexo 創(chuàng)建項(xiàng)目文檔網(wǎng)站:當(dāng)我們發(fā)布一個(gè)開源項(xiàng)目的時(shí)候,最重要的事情之一就是要?jiǎng)?chuàng)建項(xiàng)目文檔。對(duì)使用項(xiàng)目的用戶來說,文檔是非常有必要的,通常我們可以使用下面這些方式來創(chuàng)建文檔:

以上方案都不完美,所以需要一種綜合以上所有優(yōu)點(diǎn)的方案,簡單來說就是:

Hexo 簡介

Hexo 是一個(gè) Node.js 編寫的靜態(tài)網(wǎng)站生成器。Hexo 主要用來做博客框架,同時(shí) Hexo 也整合了將靜態(tài)網(wǎng)站部署到 Github 的功能,所以也很適合用來做 Github 項(xiàng)目的文檔。

我們可以使用 Hexo,根據(jù)寫好的 HTML 布局(既 Hexo 的主題),將 MarkDown 文件生成成主題對(duì)應(yīng)的靜態(tài) html/css/js 文件。Hexo 提供了將靜態(tài)文件部署到 Github 分支上的配置。也就是說,我們可以使用 MarkDown 來維護(hù)文檔,當(dāng)寫好部署配置之后,使用一個(gè)命令就可以將文檔生成并發(fā)布到 Github 的 gh-pages 分支上。

安裝 Hexo

Hexo 是通過 Node.js 編譯的,所以需要安裝 Node.js。Hexo 使用 Git 將文件部署到 Github,所以也需要安裝 Git。

安裝 Node.js

推薦使用 Node.js 的版本管理器來安裝,比如 nvm。當(dāng)然,也有很多其他的 Node.js 版本管理工具,使用這些工具,我們能很方便地安裝 Node.js,以及在不同的 Node.js 的版本中切換。

目前 Node.js 最新的版本是 8.1.3,使用 nvm 來安裝:

$ nvm install v8.1.3安裝完 Node.js 的同時(shí)也會(huì)安裝對(duì)應(yīng)的 npm。

安裝 Git

我們還需要在系統(tǒng)上安裝 Git。如果不確定系統(tǒng)中是否已經(jīng)安裝了 Git,使用下面的命令檢查:

$ git --version如果出現(xiàn)了 Git 的版本號(hào),則不需要再安裝了。如果沒有,則需要安裝 Git。

Windows

Windows 系統(tǒng)直接點(diǎn)此連接 https://git-scm.com/download/win 下載 Git 軟件,然后運(yùn)行即可。

macOS

在 macOS 上安裝 Git 有多種不同的方式:

我個(gè)人推薦使用 Homebrew 來安裝軟件。當(dāng)然如果你更喜歡 MacPorts,也沒有任何問題。

Linux – Ubuntu or Debian

在 Ubuntu 或 Debian 上,我們可以使用 apt 來安裝軟件:

$ sudo apt-get install git-core

Linux – Fedora, Red Hat or CentOS

在 Fedora、Red Hat 或 CentOS 上,我們可以使用 yum 來安裝軟件:

$ sudo yum install git-core

安裝 Hexo CLI

在安裝完 Node.js 和 Git 之后,我們最后需要安裝 Hexo:

$ npm install -g hexo-cli通過下面的命令來檢查 hexo 是否正確安裝上了:

$ hexo --version如果輸出了一系列的版本號(hào),說明所有安裝工作都以完成,可以正式使用 hexo 了。

配置

安裝好 hexo 之后,現(xiàn)在我們就可以在 Github 的主分支上來創(chuàng)建我們的文檔了。根據(jù)該文章,你可以:

簡單起見,假設(shè)你是新創(chuàng)建了一個(gè)名為 hexo-documentation 的項(xiàng)目,當(dāng)然你也可以用一個(gè)已經(jīng)存在的項(xiàng)目繼續(xù)下面的操作。

接下來使用下面的名令在本地 clone 項(xiàng)目:

$ git clone https://github.com/USERNAME/REPOSITORY.git將 USERNAME 替換為你的用戶名,REPOSITORY 替換為你的項(xiàng)目名稱。例如我執(zhí)行的命令如下:

$ git clone https://github.com/nodejh/hexo-documentation然后使用 cd 進(jìn)入項(xiàng)目目錄,并創(chuàng)建一個(gè)名為 docs 的目錄:

$ cd hexo-documentation$ mkdir docsdocs 目錄將存放我們的文檔。使用 hexo 初始化 docs 目錄:

$ hexo init docs上面的命令將生成 hexo 的一些配置并安裝相關(guān)依賴。安裝完成之后,docs 的目錄結(jié)構(gòu)如下:

我們可以通過下面的命令來檢查網(wǎng)站是否能夠正常運(yùn)行:

$ hexo generate$ hexo server第一個(gè)命令將根據(jù)選用的主題,將 sources 目錄中的文件轉(zhuǎn)換成靜態(tài)網(wǎng)站文件。第二個(gè)命令將啟動(dòng)一個(gè) Web 服務(wù)器,提供這些靜態(tài)網(wǎng)站文件,我們可以通過 http://localhost:4000 來訪問:



目前我們的網(wǎng)站看起來還是一個(gè)博客而不是文檔,不過我們將要將其改成文檔的樣子。

創(chuàng)建一個(gè)主題

要改變網(wǎng)站的外觀,我們需要?jiǎng)?chuàng)建一個(gè) hexo 的主題。主題確定了 hexo 生成的網(wǎng)站的樣式和布局。https://hexo.io/themes/ 這個(gè)網(wǎng)站有很多免費(fèi)的 hexo 主題可以使用。但在這篇文章里,我們要從零開始創(chuàng)建一個(gè) hexo 主題。

Hexo 有一個(gè)名為 landscape 的默認(rèn)主題,在 docs/themes 這個(gè)目錄里面。你可以在 themes 目錄存放多個(gè)主題,但每次只能有一個(gè)主題被使用。接下來讓我們創(chuàng)建自己的主題。在 themes 目錄下創(chuàng)建一個(gè)名為 documentation 的目錄。

Hexo 的主題包含以下文件和目錄:

我們將創(chuàng)建一個(gè)簡單的靜態(tài)主題,所以我們不需要 scripts 目錄。然后目前僅以中文展示,所以也不需要 languages 目錄。

我們需要做的就是編寫網(wǎng)站的布局,以及一些 CSS 代碼。在本文中我將使Sass 來生成 CSS,但 hexo 并不能直接處理 Sass,但幸運(yùn)的是有 hexo-renderer-sass 這個(gè)插件來幫助 hexo 處理 Sass。

使用 npm 來安裝 hexo-renderer-sass,在 ./docs(注意不是在 themes 目錄里面)運(yùn)行下面的命令:

$ npm install --save hexo-renderer-sass然后回到 themes 目錄里面,配置 Sass,不然 hexo-renderer-sass 插件不會(huì)被加載。在 docs/themes/documentation/_config.yml 文件中加入下面的代碼:

node_sass: outputStyle: nested precision: 4 sourceComments: falseSass 的所有可配置在 node-sass

接下來就可以編寫 Sass 代碼了。不過在本文中我不會(huì)詳細(xì)介紹怎么寫 Sass 樣式,因?yàn)樗捅疚膬?nèi)容無關(guān),而且范圍太大,一時(shí)半會(huì)兒寫不完。你可以在這里 https://github.com/nodejh/hexo-documentation 找到這些文件,然后把他們復(fù)制到你的項(xiàng)目中,或者你也可以創(chuàng)建自己的樣式。

讓我們繼續(xù)回到布局,開始編寫代碼之前,還有一個(gè)重要的事情就是選擇模板引擎,如 swig、ejs 等。Hexo 默認(rèn)使用的模版引擎是 swig,這也是我們將要使用的。

接下來創(chuàng)建文件 docs/themes/documentation/layout/post.swig,并寫入下面的代碼:

<!DOCTYPE html><html><head> <meta charSet='utf-8' /> <title>{{config.title + ' - ' + page.title}}</title> <link href='https://cdnjs.cloudflare.com/ajax/libs/normalize/4.0.0/normalize.min.css' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600,300,700' rel='stylesheet' type='text/css'> <link href='{{ url_for("css/docs.css") }}' rel='stylesheet'></head><body> <div class='menu'> <div class='logo'> Documentation </div> <nav class='menu-nav'> {% for section in site.data.nav %} <ul class='nav'> <span>{{ section.title }}</span> <ul class='nav'> {% for item in section.items %} <li> <a href='{{item.href || url_for(item.id + ".html") }}'{% if item.id == page.id %} class='active'{% endif %}>{{item.title}}</a> </li> {% endfor %} </ul> </ul> {% endfor %} </nav> <a class='footer' href='https://github.com/sitepoint-editors/hexo-documentation'> Project on github </a> </div> <div class='page'> <div class='page-content'> <h1>{{page.title}}</h1> {{page.content}} </div> </div> <div class='switch-page'> {% if page.prev %} <a class='previous' href='{{ url_for(page.prev) }}'>Previous</a> {% endif %} {% if page.next %} <a class='next' href='{{ url_for(page.next) }}'>Next</a> {% endif %} </div></body></html>簡單分析一下代碼。

<head> <meta charSet='utf-8' /> <title>{{config.title + ' - ' + page.title}}</title> <link href='https://cdnjs.cloudflare.com/ajax/libs/normalize/4.0.0/normalize.min.css' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600,300,700' rel='stylesheet' type='text/css'> <link href='{{ url_for("css/docs.css") }}' rel='stylesheet'></head>頭部主要包括兩部分:

接下來看 body 部分,大體上還是 HTML。一些重點(diǎn)部分稍后會(huì)詳細(xì)介紹。

<nav class='menu-nav'> {% for section in site.data.nav %} <ul class='nav'> <span>{{ section.title }}</span> <ul class='nav'> {% for item in section.items %} <li> <a href='{{ item.href || url_for(item.id + ".html") }}' {% if item.id == page.id %} class='active' {% endif %} > {{ item.title }} </a> </li> {% endfor %} </ul> </ul> {% endfor %}</nav>上面的代碼會(huì)生成網(wǎng)站的菜單部分,菜單項(xiàng)來自于 site.data.nav 這個(gè)對(duì)象,稍后我們會(huì)在 docs/source/_data/nav.yml 中創(chuàng)建。source/_data 是 Hexo 的數(shù)據(jù)文件。site.data.nav 即 _data 目錄中的 nav.yml 文件。nav.yml 中是一個(gè)包含 title 和 items 對(duì)象的數(shù)組。

接下來比較重要的是文章內(nèi)容這部分:

<div class="page-content"> <h1>{{ page.title }}</h1> {{ page.content }}</div>這里面包括了文章標(biāo)題和內(nèi)容兩部分。文章內(nèi)容是根據(jù) MarkDown 文件生成的 HTML。

最后還包括 “上一頁” 和 “下一頁” 按鈕:

{% if page.prev %} <a class='previous' href="{{ url_for(page.prev) }}">上一頁</a>{% endif %}{% if page.next %} <a class='next' href="{{ url_for(page.next) }}">下一頁</a>{% endif %}上面的代碼中,我們假設(shè)每個(gè)頁面都有 “上一頁” 和 “下一頁” 按鈕。

然后創(chuàng)建一個(gè)首頁 documentation/layout/index.swig:

<!DOCTYPE html><html><head> <meta charSet='utf-8' /> <title>{{config.title + ' - ' + page.title}}</title> <link href='https://cdnjs.cloudflare.com/ajax/libs/normalize/4.0.0/normalize.min.css' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600,300,700' rel='stylesheet' type='text/css'> <link href='{{ url_for("css/docs.css") }}' rel='stylesheet'></head><body> <div class='index'> <a href="/what-is-it.html"> Get Start </a> </div></body></html>現(xiàn)在差不多就完成了!不僅是布局文件完成了,我們的主題也制作好了。最后一件事情就是修改 Hexo 生成靜態(tài)文件的時(shí)候使用的主題。修改 docs/_config.yml 文件中的 theme 屬性:

theme: documentation所有事情都做完了!接下來我們就可以創(chuàng)建文檔了。

編寫文檔

接下來就到了整篇文章最重要的部分了,為我們的項(xiàng)目編寫文檔。我們將在 docs/source/ 目錄完成這些事情。這里的文檔是網(wǎng)站內(nèi)容的來源,以及網(wǎng)站的菜單。

首先創(chuàng)建菜單。Hexo 提供了讓我們定義一些數(shù)據(jù)文件,并通過 site.data來訪問。首先在 source 目錄里面創(chuàng)建 _data 目錄,然后創(chuàng)建名為 nav.yml 的文件:

- title: Introduction items: - id: what-is-it title: What is it? - id: how-it-works title: How it works- title: Usage items: - id: installation title: Installation - id: using title: Using It這樣我們就可以通過 site.data.nav 來訪問 nav.yml 中的文件。

在上面創(chuàng)建的菜單中,我們創(chuàng)建了兩篇文章,每篇文章有兩個(gè)部分。最后我們就只需要?jiǎng)?chuàng)建頁面了。在編寫 MarkDown 之前,先創(chuàng)建以下文件,與菜單對(duì)應(yīng):

接下來就要往文件中寫入內(nèi)容。文件的開頭部分是 Front-matter,里面是頁面的一些設(shè)置,F(xiàn)ront-matter 是包含在兩個(gè) --- 之間的 YAML 格式的。

如 what-is-it.md 所示:

---layout: defaultid: what-is-ittitle: What is it?next: how-it-works.html---This is our what it is markdown file- one- two- three在 front-matter 中有下面這些設(shè)置:

按照類似的方法編寫其他幾個(gè) MarkDown 文件。當(dāng)網(wǎng)站創(chuàng)建好之后,這些 MarkDown 內(nèi)容會(huì)被轉(zhuǎn)換為 HTML。

編輯好了之后,就可以生成靜態(tài)網(wǎng)站了:

$ hexo generate$ hexo server然后通過 http://localhost:4000 就可以看到如下頁面:




部署到 GitHub Pages

現(xiàn)在我們的文檔網(wǎng)站就全部做好了,接下來需要做的就是將其部署到 Github Pages 上。如果我們手動(dòng)來實(shí)現(xiàn),就需要?jiǎng)?chuàng)建 gh-pages 分支,生成靜態(tài)網(wǎng)站,復(fù)制網(wǎng)站文件到 gp-pages 分支,commit 并且 push 代碼到 GitHub。當(dāng)修改文檔之后,又得重復(fù)這些工作。

幸運(yùn)的是,Hexo 提供了一個(gè)很方便地將站點(diǎn)部署到 gh-pages 的方法。首先安裝 hexo-deployer-git 這個(gè)包,在 docs/ 目錄下運(yùn)行命令:

$ npm install --save hexo-deployer-git然后打開 docs/_config.yml,在文檔的最后面,修改部署配置信息,注意將其中的用戶名(nodejh)修改為你的用戶名:

deploy: type: git repo: https://github.com/nodejh/hexo-documentation branch: gh-pages message: "Docs updated: {{ now('YYYY-MM-DD HH:mm:ss') }})"最后再修改一些其他配置:

# Sitetitle: Hexo documentationsubtitle: Hexo documentation articledescription: Hexo documentation articleauthor: nodejhlanguage: zh-cntimezone: GMT# URLurl: https://nodejh.github.io/hexo-documentationroot: /hexo-documentation/OK!現(xiàn)在就只剩下一件事情了,就是將網(wǎng)站部署到 Github 上,在終端上運(yùn)行:

$ hexo generate$ hexo deployHexo 將生成靜態(tài)文件,并將其自動(dòng)部署到 gh-pages 分支上。部署完成之后,我們就可以通過 https://nodejh.github.io/hexo-documentation 來訪問了。

總結(jié)

如果你想要的項(xiàng)目被被人使用,文檔是非常必要的。在 GitHub 上也有很多創(chuàng)建項(xiàng)目文檔的方法。對(duì)于中大型項(xiàng)目來說,維護(hù)一個(gè)文檔網(wǎng)站也是很有必要的。Hexo 不僅能生成靜態(tài)網(wǎng)站,同時(shí)也提供了部署網(wǎng)站的方案,非常方便我們使用。

關(guān)鍵詞:項(xiàng)目,創(chuàng)建,使用

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉