2014-01-23 39 views
5

我的基於Jekyll的網站的源代碼位於git倉庫中,但該網站還需要有幾個大型靜態文件,這些文件太大而無法在版本控制下運行。因此,它們不是Jekyll構建管道的一部分。如何停止「jekyll build」覆蓋輸出目錄中的現有文件?

我想這些只是住在Jekyll目的地的一個assets目錄(這是一個服務器目錄;請注意,我沒有任何控制服務器在這裏;我所能做的就是轉儲靜態文件到一個指定的目錄中),它不在git倉庫中。但是,運行jekyll build會刪除輸出目錄中的所有內容。

在這種情況下,有沒有辦法改變Jekyll的行爲?還是有其他一些好方法來處理這個問題?

+0

這些文件用於什麼? –

+0

這些是生物信息學數據集(以及一些以ZIP文件形式發佈的舊軟件)。 – jveldridge

+1

難道你不能只創建一個不同的文件夾,並讓jekyll在構建階段複製它? –

回答

3

如果您通過FTP上傳Jekyll的輸出目錄到您的服務器,您可以使用FTP工具讓您忽略文件夾。

例如,我自己的網站是用Jekyll構建的,但託管在我自己的web空間中,所以我通過FTP上傳它。
I explained in this answer how I scripted the building and uploading process,所以我可以更新我的網站只需點擊一下。

在我的情況下(Windows),我使用了一個免費的命令行FTP客戶端WinSCP
如果你不在Windows上,你需要使用別的東西,但可能有其他FTP工具可以忽略文件夾。

要忽略的WinSCP你assets文件夾,你只需要把這一行到腳本文件:
(在其中包含了實際的WinSCP命令文件 - 看我的other answer獲取更多信息)

option exclude "assets/" 

現在您可以在服務器上一次性上傳大assets文件夾,並且稍後通過FTP更新您的站點時,它不會被覆蓋/刪除。

1

這是一個很好的話題。我當時想把這個改變帶到Jekyll核心,但是從來沒有像Jekyll那樣用來製作相對較小的網站。

但是現在這是令人鼓舞的,因爲像你這樣的人越來越多地開始使用Jekyll並提出這樣的要求,我認爲我們可以通過在Jekyll核心本身中集成某些git功能來提供這種功能,從而消除在每次運行中需要完整構建整個站點。我看到有人使用類似的技術來加速生成JSON文件,以搜索具有相當多帖子的Jekyll站點。

也許這個函數會在接下來的幾個版本中加入。 :)

2

不確定這是否解決了OP中的特定情況,但是當我終於找到答案here時,我一直在看這個頁面,我想我會在這個問題中添加一個答案以防止它幫助其他人。

我有一個git post-hook,當我推送到我的主機時,在我的webhost中構建我的jekyll站點,但它也刪除了我通過FTP'ed結束的其他任何事情。所以,現在我已經把任何我需要堅持在一個目錄(external/在我的情況)左右,而增加了以下我_config.yml

exclude: [external] 
keep_files: [external] 

現在文件external/生存。