Jekyll的本地邮政资产

65 jekyll

我想知道其他人在使用Jekyll时如何为个别帖子组织资产.例如,如果帖子有图像,您只是将其转储到共享图像文件夹中吗?我真的不喜欢这样做的想法 - 这意味着当我认为它们应该配对时,图像与帖子完全分离.

小智 22

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

{% asset_path my-image.png %}
Run Code Online (Sandbox Code Playgroud)

在2013-01-01之后 - 标题后会输出:

/assets/posts/post-title/my-image.png
Run Code Online (Sandbox Code Playgroud)

在页面my-first-page中输出:

/assets/my-first-page/my-image.png
Run Code Online (Sandbox Code Playgroud)


Ala*_*ith 19

我更喜欢将图像视为零个或多个页面中包含的独立资产.大多数情况下,我的图像显示在一个页面中.有时我想将它们放在多个页面中,而在其他情况下我根本不链接图像.如果您的工作流程是将每个图像放在带有帖子的目录中,则找到它们开始需要大量搜索,并且您必须为不属于特定帖子的图像提供不同的内容.

我使用的方法是在光谱的另一面.我有一个图像目录(由"/ images"提供),我的100%图像都存放在那里.这样做的好处是:

  1. 当我在帖子中添加图像时,很容易知道要使用的路径.总是如此:

    /images/{image-name}
    
    Run Code Online (Sandbox Code Playgroud)

    例如:http://alanwsmith.com/i/aws-20111017--0906-02.这使得编写插件成为可能,因此您只需要输入图像名称,并自动填写已知路径的其余部分.

  2. 使用像Photo Mechanic这样的应用程序,可以非常轻松地在本地浏览单个目录并查看每个图像.如果我想在另一个页面上包含图像,这会大大减少查找它的时间.

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

如果你想要更高级一点,将所有图像保存在一个目录中也可以进行一些很好的调整.例如,即使我的图像的URL以"/ images"开头,图像实际上也存储在jekyll使用的目录之外的目录中.就我而言,源代码树的顶部如下所示:

./html
./source-files
./image-files
Run Code Online (Sandbox Code Playgroud)

我的所有图像都存储在"./image-files"目录中.在我的apache配置中,我设置了一个别名,以便URL"/ images"指向"./image-files"目录.例如:

Alias /images /webroot/image-files
Run Code Online (Sandbox Code Playgroud)

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

在Apache中我喜欢的另一个调整是:

Options +MultiViews
Run Code Online (Sandbox Code Playgroud)

这使您可以调用图像而无需使用文件扩展名(例如,没有'.jpg','.png'等...).您可以在我上面提供的示例链接中看到.性能并不重要.我只是喜欢它的外观,它使我免于每次调用图像时都必须输入扩展名.

MultiViews还可以将一种格式的图像替换为另一种格式,而无需重新编码.例如,如果删除"some-image.gif"并将其替换为"some-image.png",则不必触及任何HTML.它仍将以"/ images/some-image"形式提供.需要做出这样的改变可能非常罕见.我认为这是一件有趣的事情.

最后,您可以做出关于允许或禁止浏览图像目录的单一决定.就个人而言,我只希望我的图像显示在我放置它们的位置.所以,我已经将我的images目录中的.htaccess文件设置为:

Options -Indexes
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么这是公认的答案?这不提供如何共同定位的技术指导.我同意这个答案的用例,但也有一些我无意在博客文章之外共享的图像 - 在这些情况下我不想把它们弄乱我的图像文件夹. (4认同)

Nic*_*zey 9

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

大多数(如果不是全部)我的图像在一个帖子中都很有用,并且将它们与Markdown文件放在一起对于帖子管理来说真的更好:

  • 我可以/_posts/在一个步骤中将新帖子作为单个子文件夹删除,而无需将Markdown放在一个位置而将图像放在另一个位置
  • 当我想编辑现有帖子的图像时,我不必在一个巨大的/assets/文件夹中找到正确的图像,它位于Markdown文件附近
  • 在我的Markdown中,我可以直接使用图像文件名,没有任何路径
  • 如果我想使用带有实时预览的任何Markdown编辑器,它可以工作,不需要特定的资源文件夹配置

我试着将这个用于我的博客(示例帖子在这里).

对于响应式图像,我使用了Jekyll Picture Tag插件,但我不得不分叉,因为不接受处理这些路径的Pull Request.

现在Jekyll 3就在那里,我希望它可以让我们在一个帖子文件夹和一个文件夹中使用图像,按顺序/assets/查找![alt](image-file-without-path.jpg)两者中标记的图像.

  • 我不太清楚你是否设法解决了这个问题?您现在是否将图像与帖子放在同一文件夹中,以及如何放置? (2认同)

Nic*_*zey 8

我现在设法开发了一个Jekyll插件,可以帮助将帖子资产与Markdown文件一起保存:https: //nhoizey.github.io/jekyll-postfiles/