Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I stop "jekyll build" from overwriting existing files in the output directory?

Tags:

jekyll

The source for my Jekyll-powered website lives in a git repo, but the website also needs to have a couple large static files that are too large to go under version control. Thus, they are not part of the Jekyll build pipeline.

I would like for these to simply live in an assets directory in the Jekyll destination (which is a server directory; note that I don't have have any control over the server here; all I can do is dump static files into a designated directory) that does not exist in the git repo. But, running jekyll build deletes everything in the output directory.

Is there a way to change Jekyll's behavior in this case? Or is there some other good way to handle this issue?

like image 361
jveldridge Avatar asked Jan 23 '14 18:01

jveldridge


2 Answers

If you upload Jekyll's output directory via FTP to your server, you can use a FTP tool that lets you ignore folders.

For example, my own site is built with Jekyll, but hosted on my own webspace, so I'm uploading it via FTP.
I explained in this answer how I scripted the building and uploading process, so I can update my site with a single click.

In my case (Windows), I used WinSCP, a free command-line FTP client, for this.
If you're not on Windows, you need to use something else, but there are probably other FTP tools out there that are able to ignore folders.

To ignore your assets folder in WinSCP, you just need to put this line into the script file:
(the file which contains the actual WinSCP commands - read my other answer for more information)

option exclude "assets/"

Now you can upload your large assets folder on the server once, and it won't be overwritten/deleted when you later update your site via FTP.

like image 151
Christian Specht Avatar answered Nov 07 '22 14:11

Christian Specht


Not sure this addresses the specific case in the OP, but seeing as how I kept getting to this page when I finally found an answer here, I thought I'd add an answer to this question in case it helps others.

I have a git post-hook that builds my jekyll site in my webhost when I push to my host, but it was also deleting anything else that I had FTP'ed over. So now I've put anything I need to stick around in a directory (external/ in my case), and added the following to my _config.yml:

exclude: [external]
keep_files: [external]

and now files in external/ survive.

like image 3
Max Starkenburg Avatar answered Nov 07 '22 12:11

Max Starkenburg