This is the source code of Made Mistakes, a personal blog and portfolio builtwith Jekyll Gulp, andNetlify.
Please note: Made Mistakes hasn't been "themed" like some of my otherJekyll repos and isn't compatiblewith the "default" GitHub Pages workflow without substantial alterations.
Made Mistakes has a lot of image assets.src/assets/images/
has been split into its own repo and included as a Git submodule.
page.image.feature
should be placed in src/assets/images/feature
. Thesefeature
images will be converted into various sizes to be responsively servedby browsers that support the srcset
attribute.
Call-out text. Accepts the following types: info
, danger
, warning
, and success
. See style guide for visual examples.
Default notice example:
{% notice %}
Call out some text. **Markdown** is acceptable.
{% endnotice %}
Danger notice example:
{% notice danger %}
**Danger! Danger!** Use caution.
{% endnotice %}
Easily generate figure
elements with optional caption
and class
parameters.
Examples:
In simplest usage:
{% figure %}
![Image](/path/to/image.jpg)
{% endfigure %}
<figure>
<img src="/path/to/image.jpg" alt="Image" />
</figure>
If a figure contains an image (or multiple images), the surrounding <p>
will be stripped:
{% figure %}
![Image](/path/to/image.jpg)
{% endfigure %}
<figure>
<img src="/path/to/image.jpg" alt="Image" />
</figure>
You can provide a caption. Any markdown will be rendered:
{% figure caption:"*Markdown* caption" %}
![Image](/path/to/image.jpg)
{% endfigure %}
<figure>
<img src="/path/to/image.jpg" alt="Image" />
<figcaption><em>Markdown</em> caption</figcaption>
</figure>
You can also provide a class name(es) for CSS styling:
{% figure caption:"A caption" class:"classname" %}
![Image](/path/to/image.jpg)
{% endfigure %}
<figure class="classname">
<img src="/path/to/image.jpg" alt="Image" />
<figcaption>A caption</figcaption>
</figure>
Finally, the caption parameter will accept liquid output markup:
{% figure caption:"{{ page.title }}" %}
![Image](/path/to/image.jpg)
{% endfigure %}
<figure>
<img src="/path/to/image.jpg" alt="Image" />
<figcaption>The title of my post</figcaption>
</figure>
Lazyload images using lazysizesuntil they're actually needed for improved page performance.
Attribute | Required | Description |
---|---|---|
data-src |
Required | Full path to image eg: /assets/images/filename.jpg . Use absolute URLS for those hosted externally. |
src |
Optional | Full path to low-quality image eg: /assets/images/filename.jpg . Use absolute URLS for those hosted externally. Defaults to inline transparent .gif . |
alt |
Optional | Image alternate text. |
Example:
{% lazyload data-src="/assets/images/my-image.jpg" src="/assets/images/my-image-low-quality.jpg" alt="my lazyloaded image" %}
Embed a video from YouTube or Vimeo that responsively sizes to fit the width ofits parent using /_plugins/video_embed.rb
.
To embed the following YouTube video at url https://www.youtube.com/watch?v=XsxDH4HcOWA
(long version) or https://youtu.be/XsxDH4HcOWA
(short version) into a post orpage's main content you'd use:
{% youtube XsxDH4HcOWA %}
To embed the following Vimeo video at url https://vimeo.com/97649261
into apost or page's main content you'd use:
{% vimeo 97649261 %}
Let Jekyll do what it does best and transform your content into HTML. Assetmanagement is handled by Gulp:
style.css
(preprocess SCSS, add vendor prefixes, concatenate, minify,hash, and gzip)index.js
(concatenate, minify, hash, and gzip)feature
imagesDefault structure (paths can be modified in gulpfile.js
and _config.yml
):
├── gulp # => gulp tasks
├── src # => source Jekyll files and assets
| ├── _includes
| ├── _layouts
| ├── _plugins
| ├── ...
| ├── _posts
| ├── assets
| | ├── icons
| | ├── images
| | | └── feature
| | ├── javascript
| | | ├── plugins
| | | ├── vendor
| | | └── main.js
| | ├── stylesheets
| | | ├── vendor
| | | ├── ...
| | | └── style.scss
├── .editorconfig
├── .gitignore
├── _config.dev.yml
├── _config.yml
├── Gemfile
├── gulpfile.js
├── package.json
├── rsync-credentials.json
├── ...
gulp-cli
: npm install gulp-cli -g
Step 1: Install Bundler, then run bundle install
.
Step 2. Install Node.js and Yarn,then run yarn install
.
Step 3: Install node-gyp.
Step 4. To start run gulp
. A development version of the site should begenerated and opened in a browser with Browser Sync at http://localhost:4000
.
gulp [--prod]
This is the default command, and probably the one you'll use the most. Thiscommand will build your assets and site with development settings. You'll getsourcemaps, your drafts will be generated. As you are changing your posts, pagesand assets they will automatically update and inject into your browser viaBrowserSync.
--prod
Once you are done and want to verify that everything works with productionsettings you add the flag --prod
and your assets will be optimized. Your CSS,JS and HTML will be minified and gzipped, plus the CSS and JS will be cachebusted. The images will be compressed and Jekyll will generate a site with allyour posts and no drafts.
gulp build [--prod]
This command is identical to the normal gulp [--prod]
however it will notcreate a BrowserSync session in your browser.
gulp (build) [--prod]
main subtasks
gulp jekyll [--prod]
Without production settings Jekyll will only create both future posts and drafts.With --prod
none of that is true and it will generate all your posts.
gulp styles|scripts [--prod]
Both your CSS and JS will have sourcemaps generated for them under developmentsettings. Once you generate them with production settings sourcemap generationis disabled. Both will be minified, gzipped and cache busted with productionsettings.
gulp images:optimize
Optimizes standard images and copies to /dist
folder.
gulp images:feature
Similar to the previous task but for images in src/assets/images/feature
.Resizes each image into various sizes to be served responsively with <img>
srcset
or <picture>
elements, optimizes, and then copies to /dist
folder.
gulp html --prod
Does nothing without --prod
. Minifies and gzips your HTML files.
gulp serve
If you just want to watch your site you can run this command. If wanted you canalso edit the serve
task to allow it to tunnel via localtunnelso people outside your local network can view it as well:
// tunnel: true,
You can also change the behavior for how it opens the URL when you run gulp [--prod]
, you can see the options here:
// open: false,
gulp icons
SVG assets are optimized and smashed together into assets/icons/icons.svg
and canbe referenced by name. To update or add new assets place appropriately named.svg
files into the src/assets/icons
folder.
gulp deploy
When you're done developing and have built your site with either gulp --prod
or gulp build --prod
you can deploy your site with Rsync.
If you need any help with configuring it, checkout the gulp-rsync
repo.
gulp submit:sitemap
Submit sitemap XML file to Google and Bing.
gulp check
Builds site with production settings then tests HTML for broken links withhtml-proofer.
gulp clean
Deletes your assets from their .tmp
directory as well as in dist
and deletesany gzipped files. NOTE: Does not delete your images from .tmp
to reducethe time to build your site due to image optimizations.
gulp rebuild
Only use this if you want to regenerate everything, this will delete everything(images, assets, your generated Jekyll site). You really shouldn't need to dothis unless you have phantom image assets floating around you want to clear.
gulp critical
Extract critical path CSS from home
, archive
, post
, and page
layoutsto inline via Jekyll _includes
.
Note: Clear critical-<layout>.css
includes, run gulp build
, then gulp critical
.
All of the subtasks lives in their own files in the gulp
directory and arenamed after what they do. You can edit or look at any of them to see how theyactually work. They're all commented.
If you want to split up your JavaScript files into say a index.js
and avendor.js
file with files from [Bower][https://bower.io/] you can do thisquite easily. Create a copy of the scripts
gulp task and rename it toscripts:vendor
and change thegulp.src
files you need:
gulp.src([
'bower_components/somelibrary.js/dist/somelibrary.js',
'bower_components/otherthing.js/dist/otherthing.js'
])
and then change .pipe(concat('index.js'))
into.pipe(concat('vendor.js'))
. Then you go to the bottom of the gulpfile andchange the assets
task:
gulp.task('assets', gulp.series(
gulp.series('clean:assets'),
gulp.parallel('styles', 'scripts:vendor', 'scripts', 'fonts', 'images')
));
Notice the scripts:vendor
task that has been added. Also be aware that thingsare injected in alphabetical order, so if you need your vendor scripts beforethe index.js
file you have to either rename the index.js
file or rename thevendor.js
file. When you now run gulp
or gulp build
it will create avendor.js
file and automatically inject it at the bottom of your HTML. Whenrunning with --prod
it'll automatically optimize as well.
For more advanced uses, refer to the gulp-inject
documentation onhow to create individual inject tags and inject specific files into them.
Gulp tasks inspired by generator-jekyllized by Sondre Nilsen.
Comments are disabled by default. To enable add comments: true
to the YAMLFront Matter. Preferred method is to enable via YAML Front Matter defaults in _config.yml
.
The MIT License (MIT)
Copyright (c) 2004-2019 Michael Rose
Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE.
Made Mistakes incorporates icons from The Noun Project.Icons are distributed under Creative Commons Attribution 3.0 United States (CC BY 3.0 US).Home by Mahmure Alp from the Noun Project
Made Mistakes incorporates photographs from Unsplash.
Made Mistakes incorporates Breakpoint.Breakpoint is distributed under the terms of the MIT/GPL Licenses.
Made Mistakes incorporates Bigfoot,Copyright (c) 2013-2014, Chris Sauve.Bigfoot is distributed under the terms of the MIT License](http://opensource.org/licenses/MIT).
Made Mistakes incorporates Lity,Copyright (c) 2015-2016, Jan Sorgalla.Lity is distributed under the terms of the MIT License](http://opensource.org/licenses/MIT).
Made Mistakes incorporates Smooth Scroll,Copyright (c) 2019, Chris Ferdinandi.Smooth Scroll is distributed under the terms of the MIT License.
Made Mistakes incorporates Lazysizes,Copyright (c) 2015, Alexander Farkas.Lazysizes is distributed under the terms of the MIT License.
Made Mistakes incorporates SVG for Everybody,Copyright (c) Jonathan Neal.SVG for Everybody is distributed under the terms of the CC0 1.0 Universal License.
Minimal Mistakes 是一个灵活的两列 Jekyll 主题,非常适合构建个人网站、博客和投资组合。 特性: 捆绑为“theme gem”,以便于安装/升级。 与 GitHub 页面兼容。 支持 Jekyll 的内置 Sass/SCSS 预处理器。 九种不同的皮肤(颜色变化)。 几个响应式布局选项(单个、存档索引、搜索、启动和分页主页)。 针对搜索引擎进行了优化,支持Twitter Ca
CMS Made Simple 是一个易于使用的内容管理系统用于具有简单、稳定内容的网站。 使用 PHP,MySQL 和 Smarty 模板引擎开发。它具有:基于角色的权限管理系统,智能缓存机制(只有当需要时才会从数据库获取),基于向导的安装与更新机制,对系统资源占用少,还包含文件管理,新闻发布和 RSS 模块等。 在线 DEMO 体验
我试图通过一个用Flask制作的API从我的react应用程序中添加用户。但是post请求出现了以下错误。 'http://localhost:5000/api/v1.0/add'from origin'http://localhost:3000'已被CORS策略阻止:在飞行前响应中,access-control-allog-headers不允许请求头字段access-control-allog-
问题内容: 我尝试使用Jekyll新命令,但是它不起作用,并在出现错误后出现。 我正在使用Mac OS X 10.8.5 Mountain Lion。 但这对我的情况不起作用。我卸载并重新安装了json,但没有任何反应。如果您知道其他解决方案,请告诉我。自本周初以来,我一直在解决这个问题。 我的宝石清单和宝石环境如下。 请给我建议以帮助我。谢谢! 3月7日更新。 以防万一您想查看自制软件列表, 2
本文向大家介绍jekyll GitHub页面,包括了jekyll GitHub页面的使用技巧和注意事项,需要的朋友参考一下 示例 GitHub为用户或组织和项目站点提供无限托管。Jekyll和静态文件均可用。 以下是在Github上托管Jekyll博客的步骤。 设定 用户或组织站点 创建一个名为username.github.io的存储库,其中username是您在GitHub上的用户名(或组织名
Jekyll 是最早开始流行的静态网站构建工具,使用Ruby语言开发,开源已有9个年头了,是Github Pages默认的静态网站构建工具。当前互联网上有大量基于jekyll构建的静态网站,包括现在流行的开源容器编排调度引擎kubernetes的官网。 Jekyll的理念 Jekyll网站构建的理念就是只做用户告诉它要做的事情,不多也不少: No Magic:简单易懂 It “Just Works