jekyll 初識

引用
中文官方文檔

一 目錄結(jié)構(gòu)

jekyll核心是一個文本轉(zhuǎn)換引擎, 用你最喜歡的標(biāo)記語言寫文章,然后jekyll會幫助你套入一個或者一系列的布局中, 在整個過程中,你可以設(shè)置URL路徑,你的文本在布局中的顯示樣式等等

_config.yml 保存的是配置數(shù)據(jù),很多配置選項都可以在命令行中進行設(shè)置, 但是如果把配置直接寫入_config.yml文件中,可以不在命令行中輸入

_drafts 草稿是未發(fā)布的文章,這些文件的格式中都沒有title.MARKUP數(shù)據(jù)

_includes 可以加載這些包含部分到布局或者文章中,方便重用, 用標(biāo)簽{% include file.ext %} 可以將文件 _includes/file.ext 包含進來

_layouts 布局是包裹在文章外部的模板, 布局可以在YAML頭信息中根據(jù)不同文章進行選擇, 標(biāo)簽{{ content }} 可以將content 插入到頁面中

_posts 這里放的就是文章, 文件格式很重要,必須符合 year-month-day-title.markup 格式, 永久鏈接可以在文章中自己定制,但是數(shù)據(jù)和標(biāo)記語言都是根據(jù)文件名來確定的

_data 格式化好的網(wǎng)站數(shù)據(jù)應(yīng)該放在這里,  jekyll 的引擎會自動加載在該目錄下所有yaml 文件,(后綴是 .yml, .yaml, .json, .csv) , 這些文件可以經(jīng)由 'site.data' 訪問,  如果有一個members.yml 文件在該目錄下, 可以通過site.data.members 獲取該文件的內(nèi)容

_site 一旦jekyll 完成轉(zhuǎn)換, 就會將生成的頁面放在這里(默認), 所以最好將此目錄放進.gitignore 中(不上傳到github)

.jekyll-metadata 該文件幫助jekyll 跟蹤哪些文件從上次建立站點開始到現(xiàn)在 沒有被修改,  哪些文件需要在下一次站點建立時候重新生成,  該文件不會被包含在生成的站點中,  將其加入到.gitignore 文件可能是一個好主意

index.html 如果這些文件中包含了YAML頭信息部分,  jekyll 會自動將它們進行轉(zhuǎn)換, 當(dāng)然,其他的.html, .markdown , .md 或者 .texttile 等在站點根目錄下 或者不是以上提到的目錄中的文件也會被轉(zhuǎn)換

其他 其他一些沒有被提及的目錄和文件如 css ,images 文件夾,  favicon.ico 等文件都將被完全拷貝到生成的site 中

二 配置

jekyll 允許自己設(shè)置你的網(wǎng)站,這很大程度上歸功于靈活強大的配置功能,  可以配置在網(wǎng)站根目錄下的_config.yml 文件中,  也可以作為命令行的標(biāo)記來配置

1 配置設(shè)置

1-1 全局配置

Site Source 修改jekyll 讀取文件的路徑,  source: DIR , -s , --source DIR

Site Destination 修改jekyll 寫入文件的路徑  destination: DIR , -d, --destination DIR

Safe 禁用自定義插件    safe: BOOL , --safe

Exclude 轉(zhuǎn)換時候排除某些文件, 文件夾  exclude: [DIR, FILE, ...]

Include 轉(zhuǎn)換時候強制包含某些文件,文件夾, .htaccess 是一個典型例子,因為默認排除.開頭的文件 include: [DIR, FILE, ...]
Keep files 當(dāng)生成站點時候,保留選擇的文件,對文件不是由jekyll 生成是有用的, 例如由你的構(gòu)建工具生成的文件或者資源,路徑是相對于destination keep_files: [DIR, FILE, ...]

Time Zone 設(shè)置時區(qū),這個設(shè)置相當(dāng)于TZ變量,Ruby用它來處理日期和時間,  默認值是操作系統(tǒng)的時區(qū)

Encoding 設(shè)置文件的編碼,默認值是utf-8, 使用命令 ruby -e 'puts Encoding:: list.join("\n")' 查看Ruby可用的編碼

Defaults 設(shè)置YAML頭信息的默認值

1-2. 編譯選項

Regeneration 允許文件修改時候自動重新生成網(wǎng)站,  -w, --watch

Configuration 手動設(shè)置配置文件,可以設(shè)置多個,且后面的配置會覆蓋前邊的 --config File1, [, File2, ... ]

Drafts 處理草稿  --drafts

Environment   build時候使用特定的環(huán)境變量,  JEKYLL_ENV=production

Future 用將來的日期發(fā)布文章   future: BOOL, --future

LSI 為相關(guān)的文章生成索引    lsi: BOOL --lsi

Limit Posts 限制文章的數(shù)量   limit_posts: NUM, --limit_posts NUM

Force polling 強制使用輪詢   --force_polling

Verbose output 顯示詳細輸出   -V, --verbose

Silence Output 在編譯期間不顯示的正常輸出   -q, --quiet

Incremental build 啟用試驗特性incremental build, Incremental build只重建修改過的posts 和 pages, 對于大型網(wǎng)站有顯著的性能提升,  但在特定情況下也會影響網(wǎng)站生成 incremental: BOOL, -I, --incremental

Liquid profiler 生成一個Liquid 概述文檔來幫助你發(fā)現(xiàn)性能瓶頸  profile: BOOL --profile

1-3. 服務(wù)選項

除了下邊的選項, serve命令還可以接收 build 的選項,  當(dāng)運行網(wǎng)站服務(wù)之前的編譯時候使用
local Server Port 監(jiān)聽所給的端口   port: PORT , --port PORT

local Server Hostname 監(jiān)聽所給的主機名   host: HOSTNAME, --host HOSTNAME

Base URL 網(wǎng)站的根路徑   baseurl: URL --baseurl URL

Detach 從終端命令行中分離出來   detach: BOOL -B, --detach

2. 自定義WEBRick標(biāo)題

可以在_config.yml 中為你的站點提供自定義標(biāo)題

#文件: _config.yml
webrick: 
  headers:
    My-Header: My-Value
    My-Other-Header: My-other-Value

2-1 默認

只提供一個默認,而且這是一個不能在開發(fā)模式中緩存的content-type 頭,所以當(dāng)你處于開發(fā)模式時候,
不用理會chrome的aggressive caching

3 指定Jekyll build時候的環(huán)境

在build 或者 serve 參數(shù)中, 能指定Jekyll 的環(huán)境和參數(shù), 然后build會將參數(shù)應(yīng)用在你內(nèi)容中的任意條件語言
例如, 在代碼中的條件語句應(yīng)用設(shè)置
{% if jekyll.environment == "production" %}
{% include disqus.html %}
{% endif %}

當(dāng)build網(wǎng)站時候, if語句塊中的內(nèi)容不會被執(zhí)行, 除非在build 命令中還指定了一個 production 環(huán)境
JEKYLL_ENV=production jekyll build

設(shè)置環(huán)境變量允許只在特定環(huán)境下執(zhí)行指定內(nèi)容
JEKYLL_ENV 的默認值是 development,
任何{% if jekyll.environment == "development" %}中的內(nèi)容在build時都會自動顯現(xiàn)

環(huán)境參數(shù)可以任意設(shè)置,不只是development 或者 production , 例如你可能想在開發(fā)環(huán)境下隱藏一些元素, 比如評論功能,谷歌分析
你可能想在development 開發(fā)環(huán)境中擴展一個"在github中編輯"的按鈕, 而不包括在 production 中
在build 命令中指定參數(shù), 當(dāng)你遷移環(huán)境時候, 可以避免更改你配置文件中的值

4 頭信息默認值

通過使用YAML頭信息可以指定站點的頁面和文章的配置,設(shè)置一些東西例如布局或者自定義標(biāo)題,亦或是給文章指定一個更加精確的日期/時間,這都可以往頁面或者文章的頭信息添加數(shù)據(jù)來實現(xiàn)
很多時候,我們會發(fā)現(xiàn)在重復(fù)填寫很多配置項, 在每個文件里設(shè)置相同的布局,對每一篇文章添加相同的分類,等等,可以添加自定義變量,比如作者名, 可能對于博客上大部分的文章來說是相同的
jekyll 提供了一個方法在站點配置中設(shè)置這些默認值, 而不是在每次創(chuàng)建一個新的文章或者頁面重復(fù)此配置
可以在項目根目錄下的 _config.yml 文件中設(shè)置 defaults 的值指定全站范圍的默認值
defaults 保存一個范圍/值對 的數(shù)組,定義了哪些默認值要設(shè)置到一個特定的文件路徑下的文件,或者可選的, 在該路徑下指定的文件類型的文件
假設(shè)想要添加一個默認的布局給站點中的所有的頁面和文章, 要將這添加到_config.yml 文件

defaults: 
  _
    scope: 
      path: "" #一個空的字符串表示所有的文件
    values:
      layout: "default"

上面的例子把values 應(yīng)用給scope路徑中的所有文件,因為路徑被設(shè)為空字符串, 將會應(yīng)用到項目中的全部文件, 你可能不想給項目在的每個文件都設(shè)置一個布局,例如css文件, 可以在scope下指定type 的值

defaults: 
  _
    scope: 
      path: ""
      type: "posts"
    values:
      layout: "default"

上面的例子只會給類型是posts的文件設(shè)置默認布局,可以使用不同的類型分別是pages, posts, drafts
或者其他站點中的集合 
當(dāng)創(chuàng)建一個范圍/值的對, 如果選擇了type, 必須指定一個值給path

可以給defaults設(shè)置多個范圍/值的對
defaults:
_
scope:
path: ""
type: "posts"
values:
layout: "my-site"
_
scope:
path: "projects"
type: "pages"
values:
layout: "project" #覆蓋之前的默認布局
author: "Mr. Hyde"

有了這些默認值, 所有的文章都會使用my-site布局,任何在projects/ 文件夾下的html文件會使用project布局,這些文件也會擁有值為Mr. Hyde的 page.author

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • In addition to supporting regular HTML content, GitHub Pa...
    胡哈哈哈閱讀 1,351評論 0 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評論 25 709
  • 朋友的爸爸生病了,與此時在天堂的老爸是一樣的病。很多時候都特別想告訴她要珍惜老爸在的日子,可是每次都話到嘴邊再默...
    鯤鵬細語閱讀 266評論 0 0
  • 今天忽然參悟一個道理:人早晚都會死,為什么不轟轟烈烈的按自己的意愿生活? 很多年前的我,總是患得患失。緬懷過去時,...
    阿倩女閱讀 233評論 0 1

友情鏈接更多精彩內(nèi)容