Full Code of allizad/jekyll-webpack for AI

master 2714f5d031e7 cached
24 files
24.3 KB
7.7k tokens
4 symbols
1 requests
Download .txt
Repository: allizad/jekyll-webpack
Branch: master
Commit: 2714f5d031e7
Files: 24
Total size: 24.3 KB

Directory structure:
gitextract_8z4sswxl/

├── .gitignore
├── .prettierrc
├── README.md
├── _config.yml
├── package.json
├── src/
│   ├── _includes/
│   │   ├── footer.html
│   │   ├── head.html
│   │   ├── header.html
│   │   ├── icon-github.html
│   │   └── icon-twitter.html
│   ├── _layouts/
│   │   ├── default.html
│   │   ├── page.html
│   │   └── post.html
│   ├── _posts/
│   │   └── 2016-05-02-welcome-to-jekyll.markdown
│   ├── _sass/
│   │   ├── _base.scss
│   │   ├── _layout.scss
│   │   └── _syntax-highlighting.scss
│   ├── about.md
│   ├── css/
│   │   └── main.scss
│   ├── feed.xml
│   └── index.html
├── webpack/
│   ├── components/
│   │   └── Hello.js
│   └── entry.js
└── webpack.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
_site
.sass-cache
.jekyll-metadata
public
node_modules
bundle.js
bundle.js.map


================================================
FILE: .prettierrc
================================================
{
    "printWidth": 100,
    "tabWidth": 4,
    "trailingComma": "es5",
    "singleQuote": true
}


================================================
FILE: README.md
================================================
## Jekyll & Webpack, integrated

So you can have your React and serve it statically, too. Plugin-free! (<- that's like saying orange juice is gluten-free, btw)

Are you working with Github pages? See the gh-pages branch:

- https://github.com/allizad/jekyll-webpack/tree/gh-pages

You can learn more about how this was put together in my walkthrough post here:
- [Using Webpack and React with Jekyll](https://medium.com/@allizadrozny/using-webpack-and-react-with-jekyll-cfe137f8a2cc)

See the full series of adding search to Jekyll, for which this project was a building block, here:
- [Elasticsearch for Jekyll, Part 1](https://blog.omc.io/elasticsearch-for-jekyll-part-1-ab456ac7c093)

Woohoo! Now go build shit!

![cat image](https://i0.wp.com/www.developermemes.com/wp-content/uploads/2015/10/Now-That-You-Have-That-Feature-Done-I-Want-It-To-Do-Something-Else-Instead-Web-Developer-Meme.jpg?resize=385%2C232)


================================================
FILE: _config.yml
================================================
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.

# Site settings
title: Jekyll-Webpack Boilerplate
email: hi@allizad.com
description: > # this means to ignore newlines until "baseurl:"
  Write an awesome description for your new site here. You can edit this
  line in _config.yml. It will appear in your document head meta (for
  Google search results) and in your feed.xml site description.
baseurl: "" # the subpath of your site, e.g. /blog
url: "http://allizad.com" # the base hostname & protocol for your site
twitter_username: allizad
github_username:  allizad

# Build settings
markdown: kramdown
source: src
destination: public


================================================
FILE: package.json
================================================
{
    "name": "jekyll-webpack-react",
    "version": "1.0.0",
    "description": "A simple boilerplate for webpack and jekyll integration.",
    "main": "bundle.js",
    "scripts": {
        "build": "webpack",
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "repository": {
        "type": "git",
        "url": "git+https://github.com/allizad/jekyll-webpack.git"
    },
    "keywords": ["jekyll", "webpack", "react"],
    "author": "Allison Zadrozny",
    "license": "ISC",
    "bugs": {
        "url": "https://github.com/allizad/jekyll-webpack/issues"
    },
    "homepage": "https://github.com/allizad/jekyll-webpack#readme",
    "devDependencies": {
        "@babel/core": "^7.0.0-beta.40",
        "@babel/preset-env": "^7.0.0-beta.40",
        "@babel/preset-react": "^7.0.0-beta.40",
        "@babel/preset-stage-0": "^7.0.0-beta.40",
        "babel-loader": "^8.0.0-beta.2",
        "react": "^16.2.0",
        "react-dom": "^16.2.0",
        "webpack": "^4.1.1",
        "webpack-cli": "^2.0.11"
    }
}


================================================
FILE: src/_includes/footer.html
================================================
<footer class="site-footer">

  <div class="wrapper">

    <h2 class="footer-heading">{{ site.title }}</h2>

    <div class="footer-col-wrapper">
      <div class="footer-col footer-col-1">
        <ul class="contact-list">
          <li>{{ site.title }}</li>
          <li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
        </ul>
      </div>

      <div class="footer-col footer-col-2">
        <ul class="social-media-list">
          {% if site.github_username %}
          <li>
            {% include icon-github.html username=site.github_username %}
          </li>
          {% endif %}

          {% if site.twitter_username %}
          <li>
            {% include icon-twitter.html username=site.twitter_username %}
          </li>
          {% endif %}
        </ul>
      </div>

      <div class="footer-col footer-col-3">
        <p>{{ site.description }}</p>
      </div>
    </div>

  </div>

</footer>


================================================
FILE: src/_includes/head.html
================================================
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
  <meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">

  <link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
  <link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
  <link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
</head>


================================================
FILE: src/_includes/header.html
================================================
<header class="site-header">

  <div class="wrapper">

    <a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>

    <nav class="site-nav">
      <a href="#" class="menu-icon">
        <svg viewBox="0 0 18 15">
          <path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
          <path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
          <path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
        </svg>
      </a>

      <div class="trigger">
        {% for my_page in site.pages %}
          {% if my_page.title %}
          <a class="page-link" href="{{ my_page.url | prepend: site.baseurl }}">{{ my_page.title }}</a>
          {% endif %}
        {% endfor %}
      </div>
    </nav>

  </div>

</header>


================================================
FILE: src/_includes/icon-github.html
================================================
<a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">{{ include.username }}</span></a>


================================================
FILE: src/_includes/icon-twitter.html
================================================
<a href="https://twitter.com/{{ include.username }}"><span class="icon icon--twitter">{% include icon-twitter.svg %}</span><span class="username">{{ include.username }}</span></a>


================================================
FILE: src/_layouts/default.html
================================================
<!DOCTYPE html>
<html>

  {% include head.html %}

  <body>

    {% include header.html %}
    <div id="root"></div>
    <div class="page-content">
      <div class="wrapper">
        {{ content }}
      </div>
    </div>

    {% include footer.html %}
    <script type="text/javascript" src="/assets/javascripts/bundle.js" charset="utf-8"></script>
  </body>

</html>


================================================
FILE: src/_layouts/page.html
================================================
---
layout: default
---
<article class="post">

  <header class="post-header">
    <h1 class="post-title">{{ page.title }}</h1>
  </header>

  <div class="post-content">
    {{ content }}
  </div>

</article>


================================================
FILE: src/_layouts/post.html
================================================
---
layout: default
---
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">

  <header class="post-header">
    <h1 class="post-title" itemprop="name headline">{{ page.title }}</h1>
    <p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time>{% if page.author %} • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>{% endif %}</p>
  </header>

  <div class="post-content" itemprop="articleBody">
    {{ content }}
  </div>

</article>


================================================
FILE: src/_posts/2016-05-02-welcome-to-jekyll.markdown
================================================
---
layout: post
title:  "Welcome to Jekyll!"
date:   2016-05-02 09:28:59 -0500
categories: jekyll update
---
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.

To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.

Jekyll also offers powerful support for code snippets:

{% highlight ruby %}
def print_hi(name)
  puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}

Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].

[jekyll-docs]: http://jekyllrb.com/docs/home
[jekyll-gh]:   https://github.com/jekyll/jekyll
[jekyll-talk]: https://talk.jekyllrb.com/


================================================
FILE: src/_sass/_base.scss
================================================
/**
 * Reset some basic elements
 */
body, h1, h2, h3, h4, h5, h6,
p, blockquote, pre, hr,
dl, dd, ol, ul, figure {
    margin: 0;
    padding: 0;
}



/**
 * Basic styling
 */
body {
    font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
    color: $text-color;
    background-color: $background-color;
    -webkit-text-size-adjust: 100%;
    -webkit-font-feature-settings: "kern" 1;
    -moz-font-feature-settings: "kern" 1;
    -o-font-feature-settings: "kern" 1;
    font-feature-settings: "kern" 1;
    font-kerning: normal;
}



/**
 * Set `margin-bottom` to maintain vertical rhythm
 */
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
ul, ol, dl, figure,
%vertical-rhythm {
    margin-bottom: $spacing-unit / 2;
}



/**
 * Images
 */
img {
    max-width: 100%;
    vertical-align: middle;
}



/**
 * Figures
 */
figure > img {
    display: block;
}

figcaption {
    font-size: $small-font-size;
}



/**
 * Lists
 */
ul, ol {
    margin-left: $spacing-unit;
}

li {
    > ul,
    > ol {
         margin-bottom: 0;
    }
}



/**
 * Headings
 */
h1, h2, h3, h4, h5, h6 {
    font-weight: $base-font-weight;
}



/**
 * Links
 */
a {
    color: $brand-color;
    text-decoration: none;

    &:visited {
        color: darken($brand-color, 15%);
    }

    &:hover {
        color: $text-color;
        text-decoration: underline;
    }
}



/**
 * Blockquotes
 */
blockquote {
    color: $grey-color;
    border-left: 4px solid $grey-color-light;
    padding-left: $spacing-unit / 2;
    font-size: 18px;
    letter-spacing: -1px;
    font-style: italic;

    > :last-child {
        margin-bottom: 0;
    }
}



/**
 * Code formatting
 */
pre,
code {
    font-size: 15px;
    border: 1px solid $grey-color-light;
    border-radius: 3px;
    background-color: #eef;
}

code {
    padding: 1px 5px;
}

pre {
    padding: 8px 12px;
    overflow-x: auto;

    > code {
        border: 0;
        padding-right: 0;
        padding-left: 0;
    }
}



/**
 * Wrapper
 */
.wrapper {
    max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
    max-width:         calc(#{$content-width} - (#{$spacing-unit} * 2));
    margin-right: auto;
    margin-left: auto;
    padding-right: $spacing-unit;
    padding-left: $spacing-unit;
    @extend %clearfix;

    @include media-query($on-laptop) {
        max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
        max-width:         calc(#{$content-width} - (#{$spacing-unit}));
        padding-right: $spacing-unit / 2;
        padding-left: $spacing-unit / 2;
    }
}



/**
 * Clearfix
 */
%clearfix {

    &:after {
        content: "";
        display: table;
        clear: both;
    }
}



/**
 * Icons
 */
.icon {

    > svg {
        display: inline-block;
        width: 16px;
        height: 16px;
        vertical-align: middle;

        path {
            fill: $grey-color;
        }
    }
}


================================================
FILE: src/_sass/_layout.scss
================================================
/**
 * Site header
 */
.site-header {
    border-top: 5px solid $grey-color-dark;
    border-bottom: 1px solid $grey-color-light;
    min-height: 56px;

    // Positioning context for the mobile navigation icon
    position: relative;
}

.site-title {
    font-size: 26px;
    font-weight: 300;
    line-height: 56px;
    letter-spacing: -1px;
    margin-bottom: 0;
    float: left;

    &,
    &:visited {
        color: $grey-color-dark;
    }
}

.site-nav {
    float: right;
    line-height: 56px;

    .menu-icon {
        display: none;
    }

    .page-link {
        color: $text-color;
        line-height: $base-line-height;

        // Gaps between nav items, but not on the last one
        &:not(:last-child) {
            margin-right: 20px;
        }
    }

    @include media-query($on-palm) {
        position: absolute;
        top: 9px;
        right: $spacing-unit / 2;
        background-color: $background-color;
        border: 1px solid $grey-color-light;
        border-radius: 5px;
        text-align: right;

        .menu-icon {
            display: block;
            float: right;
            width: 36px;
            height: 26px;
            line-height: 0;
            padding-top: 10px;
            text-align: center;

            > svg {
                width: 18px;
                height: 15px;

                path {
                    fill: $grey-color-dark;
                }
            }
        }

        .trigger {
            clear: both;
            display: none;
        }

        &:hover .trigger {
            display: block;
            padding-bottom: 5px;
        }

        .page-link {
            display: block;
            padding: 5px 10px;

            &:not(:last-child) {
                margin-right: 0;
            }
            margin-left: 20px;
        }
    }
}



/**
 * Site footer
 */
.site-footer {
    border-top: 1px solid $grey-color-light;
    padding: $spacing-unit 0;
}

.footer-heading {
    font-size: 18px;
    margin-bottom: $spacing-unit / 2;
}

.contact-list,
.social-media-list {
    list-style: none;
    margin-left: 0;
}

.footer-col-wrapper {
    font-size: 15px;
    color: $grey-color;
    margin-left: -$spacing-unit / 2;
    @extend %clearfix;
}

.footer-col {
    float: left;
    margin-bottom: $spacing-unit / 2;
    padding-left: $spacing-unit / 2;
}

.footer-col-1 {
    width: -webkit-calc(35% - (#{$spacing-unit} / 2));
    width:         calc(35% - (#{$spacing-unit} / 2));
}

.footer-col-2 {
    width: -webkit-calc(20% - (#{$spacing-unit} / 2));
    width:         calc(20% - (#{$spacing-unit} / 2));
}

.footer-col-3 {
    width: -webkit-calc(45% - (#{$spacing-unit} / 2));
    width:         calc(45% - (#{$spacing-unit} / 2));
}

@include media-query($on-laptop) {
    .footer-col-1,
    .footer-col-2 {
        width: -webkit-calc(50% - (#{$spacing-unit} / 2));
        width:         calc(50% - (#{$spacing-unit} / 2));
    }

    .footer-col-3 {
        width: -webkit-calc(100% - (#{$spacing-unit} / 2));
        width:         calc(100% - (#{$spacing-unit} / 2));
    }
}

@include media-query($on-palm) {
    .footer-col {
        float: none;
        width: -webkit-calc(100% - (#{$spacing-unit} / 2));
        width:         calc(100% - (#{$spacing-unit} / 2));
    }
}



/**
 * Page content
 */
.page-content {
    padding: $spacing-unit 0;
}

.page-heading {
    font-size: 20px;
}

.post-list {
    margin-left: 0;
    list-style: none;

    > li {
        margin-bottom: $spacing-unit;
    }
}

.post-meta {
    font-size: $small-font-size;
    color: $grey-color;
}

.post-link {
    display: block;
    font-size: 24px;
}



/**
 * Posts
 */
.post-header {
    margin-bottom: $spacing-unit;
}

.post-title {
    font-size: 42px;
    letter-spacing: -1px;
    line-height: 1;

    @include media-query($on-laptop) {
        font-size: 36px;
    }
}

.post-content {
    margin-bottom: $spacing-unit;

    h2 {
        font-size: 32px;

        @include media-query($on-laptop) {
            font-size: 28px;
        }
    }

    h3 {
        font-size: 26px;

        @include media-query($on-laptop) {
            font-size: 22px;
        }
    }

    h4 {
        font-size: 20px;

        @include media-query($on-laptop) {
            font-size: 18px;
        }
    }
}


================================================
FILE: src/_sass/_syntax-highlighting.scss
================================================
/**
 * Syntax highlighting styles
 */
.highlight {
    background: #fff;
    @extend %vertical-rhythm;

    .highlighter-rouge & {
      background: #eef;
    }

    .c     { color: #998; font-style: italic } // Comment
    .err   { color: #a61717; background-color: #e3d2d2 } // Error
    .k     { font-weight: bold } // Keyword
    .o     { font-weight: bold } // Operator
    .cm    { color: #998; font-style: italic } // Comment.Multiline
    .cp    { color: #999; font-weight: bold } // Comment.Preproc
    .c1    { color: #998; font-style: italic } // Comment.Single
    .cs    { color: #999; font-weight: bold; font-style: italic } // Comment.Special
    .gd    { color: #000; background-color: #fdd } // Generic.Deleted
    .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
    .ge    { font-style: italic } // Generic.Emph
    .gr    { color: #a00 } // Generic.Error
    .gh    { color: #999 } // Generic.Heading
    .gi    { color: #000; background-color: #dfd } // Generic.Inserted
    .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
    .go    { color: #888 } // Generic.Output
    .gp    { color: #555 } // Generic.Prompt
    .gs    { font-weight: bold } // Generic.Strong
    .gu    { color: #aaa } // Generic.Subheading
    .gt    { color: #a00 } // Generic.Traceback
    .kc    { font-weight: bold } // Keyword.Constant
    .kd    { font-weight: bold } // Keyword.Declaration
    .kp    { font-weight: bold } // Keyword.Pseudo
    .kr    { font-weight: bold } // Keyword.Reserved
    .kt    { color: #458; font-weight: bold } // Keyword.Type
    .m     { color: #099 } // Literal.Number
    .s     { color: #d14 } // Literal.String
    .na    { color: #008080 } // Name.Attribute
    .nb    { color: #0086B3 } // Name.Builtin
    .nc    { color: #458; font-weight: bold } // Name.Class
    .no    { color: #008080 } // Name.Constant
    .ni    { color: #800080 } // Name.Entity
    .ne    { color: #900; font-weight: bold } // Name.Exception
    .nf    { color: #900; font-weight: bold } // Name.Function
    .nn    { color: #555 } // Name.Namespace
    .nt    { color: #000080 } // Name.Tag
    .nv    { color: #008080 } // Name.Variable
    .ow    { font-weight: bold } // Operator.Word
    .w     { color: #bbb } // Text.Whitespace
    .mf    { color: #099 } // Literal.Number.Float
    .mh    { color: #099 } // Literal.Number.Hex
    .mi    { color: #099 } // Literal.Number.Integer
    .mo    { color: #099 } // Literal.Number.Oct
    .sb    { color: #d14 } // Literal.String.Backtick
    .sc    { color: #d14 } // Literal.String.Char
    .sd    { color: #d14 } // Literal.String.Doc
    .s2    { color: #d14 } // Literal.String.Double
    .se    { color: #d14 } // Literal.String.Escape
    .sh    { color: #d14 } // Literal.String.Heredoc
    .si    { color: #d14 } // Literal.String.Interpol
    .sx    { color: #d14 } // Literal.String.Other
    .sr    { color: #009926 } // Literal.String.Regex
    .s1    { color: #d14 } // Literal.String.Single
    .ss    { color: #990073 } // Literal.String.Symbol
    .bp    { color: #999 } // Name.Builtin.Pseudo
    .vc    { color: #008080 } // Name.Variable.Class
    .vg    { color: #008080 } // Name.Variable.Global
    .vi    { color: #008080 } // Name.Variable.Instance
    .il    { color: #099 } // Literal.Number.Integer.Long
}


================================================
FILE: src/about.md
================================================
---
layout: page
title: About
permalink: /about/
---

This is the base Jekyll and Webpack boilerplate, created and maintained by [@allizad](https://github.com/allizad).

You can learn more about how this was put together in my walkthrough post here:
- [Using Webpack and React with Jekyll](https://medium.com/allizad/)

See the full series of adding search to Jekyll, for which this project was a building block, here:
- [Elasticsearch for Jekyll, Part 1](https://blog.omc.io/elasticsearch-for-jekyll-part-1-ab456ac7c093)

Thanks! Now go build shit!

![cat-lappy-image](src/assets/images/cat-lappy.gif)


================================================
FILE: src/css/main.scss
================================================
---
# Only the main Sass file needs front matter (the dashes are enough)
---
@charset "utf-8";



// Our variables
$base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
$base-font-size:   16px;
$base-font-weight: 400;
$small-font-size:  $base-font-size * 0.875;
$base-line-height: 1.5;

$spacing-unit:     30px;

$text-color:       #111;
$background-color: #fdfdfd;
$brand-color:      #2a7ae2;

$grey-color:       #828282;
$grey-color-light: lighten($grey-color, 40%);
$grey-color-dark:  darken($grey-color, 25%);

// Width of the content area
$content-width:    800px;

$on-palm:          600px;
$on-laptop:        800px;



// Use media queries like this:
// @include media-query($on-palm) {
//     .wrapper {
//         padding-right: $spacing-unit / 2;
//         padding-left: $spacing-unit / 2;
//     }
// }
@mixin media-query($device) {
    @media screen and (max-width: $device) {
        @content;
    }
}



// Import partials from `sass_dir` (defaults to `_sass`)
@import
        "base",
        "layout",
        "syntax-highlighting"
;


================================================
FILE: src/feed.xml
================================================
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>{{ site.title | xml_escape }}</title>
    <description>{{ site.description | xml_escape }}</description>
    <link>{{ site.url }}{{ site.baseurl }}/</link>
    <atom:link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml"/>
    <pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
    <lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
    <generator>Jekyll v{{ jekyll.version }}</generator>
    {% for post in site.posts limit:10 %}
      <item>
        <title>{{ post.title | xml_escape }}</title>
        <description>{{ post.content | xml_escape }}</description>
        <pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
        <link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link>
        <guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid>
        {% for tag in post.tags %}
        <category>{{ tag | xml_escape }}</category>
        {% endfor %}
        {% for cat in post.categories %}
        <category>{{ cat | xml_escape }}</category>
        {% endfor %}
      </item>
    {% endfor %}
  </channel>
</rss>


================================================
FILE: src/index.html
================================================
---
layout: default
---

<div class="home">

  <h1 class="page-heading">Howdy</h1>

  <div class="post-content">
    <p>This is the base Jekyll and Webpack boilerplate, created and maintained by <a href="https://github.com/allizad">@allizad</a>.</p>

    <p>You can learn more about how this was put together in my walkthrough post here:</p>
    <ul>
    <li><a href="https://medium.com/allizad/">Using Webpack and React with&nbsp;Jekyll</a></li>
    </ul>

    <p>See the full series of adding search to Jekyll, for which this project was a building block, here:</p>
    <ul>
    <li><a href="https://blog.omc.io/elasticsearch-for-jekyll-part-1-ab456ac7c093">Elasticsearch for Jekyll, Part 1</a></li>
    </ul>

    <p>Thanks! Now go build shit!</p>

    <p><img src="/assets/images/cat-lappy.gif" alt="cat-lappy-image"></p>
  </div>

  <ul class="post-list">
    {% for post in site.posts %}
      <li>
        <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>

        <h2>
          <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
        </h2>
      </li>
    {% endfor %}
  </ul>

  <p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | prepend: site.baseurl }}">via RSS</a></p>

</div>


================================================
FILE: webpack/components/Hello.js
================================================
import React, { Component } from 'react';

class Hello extends Component {
    render() {
        return <div>Hey, y’all!! This is a React Component</div>;
    }
}
export default Hello;


================================================
FILE: webpack/entry.js
================================================
import React, { Component } from 'react';
import { render } from 'react-dom';
import Hello from './components/Hello';

class App extends Component {
    render() {
        return <Hello />;
    }
}

render(<App />, document.getElementById('root'));


================================================
FILE: webpack.config.js
================================================
const path = require('path');

module.exports = {
    // webpack folder's entry js - excluded from jekll's build process.
    entry: './webpack/entry.js',
    output: {
        // we're going to put the generated file in the assets folder so jekyll will grab it.
        path: path.resolve(__dirname, 'src/assets/javascripts/'),
        filename: 'bundle.js',
    },
    module: {
        rules: [
            {
                test: /\.jsx?$/,
                exclude: /(node_modules)/,
                loader: 'babel-loader',
                query: {
                    presets: [
                        '@babel/preset-react',
                        ['@babel/preset-env', { modules: false }],
                        '@babel/preset-stage-0',
                    ],
                },
            },
        ],
    },
    devtool: 'source-map',
    mode: 'development' // Avoids a warning when running `webpack`.
                      // Set to 'production' for minified version.
};
Download .txt
gitextract_8z4sswxl/

├── .gitignore
├── .prettierrc
├── README.md
├── _config.yml
├── package.json
├── src/
│   ├── _includes/
│   │   ├── footer.html
│   │   ├── head.html
│   │   ├── header.html
│   │   ├── icon-github.html
│   │   └── icon-twitter.html
│   ├── _layouts/
│   │   ├── default.html
│   │   ├── page.html
│   │   └── post.html
│   ├── _posts/
│   │   └── 2016-05-02-welcome-to-jekyll.markdown
│   ├── _sass/
│   │   ├── _base.scss
│   │   ├── _layout.scss
│   │   └── _syntax-highlighting.scss
│   ├── about.md
│   ├── css/
│   │   └── main.scss
│   ├── feed.xml
│   └── index.html
├── webpack/
│   ├── components/
│   │   └── Hello.js
│   └── entry.js
└── webpack.config.js
Download .txt
SYMBOL INDEX (4 symbols across 2 files)

FILE: webpack/components/Hello.js
  class Hello (line 3) | class Hello extends Component {
    method render (line 4) | render() {

FILE: webpack/entry.js
  class App (line 5) | class App extends Component {
    method render (line 6) | render() {
Condensed preview — 24 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (27K chars).
[
  {
    "path": ".gitignore",
    "chars": 79,
    "preview": "_site\n.sass-cache\n.jekyll-metadata\npublic\nnode_modules\nbundle.js\nbundle.js.map\n"
  },
  {
    "path": ".prettierrc",
    "chars": 98,
    "preview": "{\n    \"printWidth\": 100,\n    \"tabWidth\": 4,\n    \"trailingComma\": \"es5\",\n    \"singleQuote\": true\n}\n"
  },
  {
    "path": "README.md",
    "chars": 913,
    "preview": "## Jekyll & Webpack, integrated\n\nSo you can have your React and serve it statically, too. Plugin-free! (<- that's like s"
  },
  {
    "path": "_config.yml",
    "chars": 921,
    "preview": "# Welcome to Jekyll!\n#\n# This config file is meant for settings that affect your whole blog, values\n# which you are expe"
  },
  {
    "path": "package.json",
    "chars": 1040,
    "preview": "{\n    \"name\": \"jekyll-webpack-react\",\n    \"version\": \"1.0.0\",\n    \"description\": \"A simple boilerplate for webpack and j"
  },
  {
    "path": "src/_includes/footer.html",
    "chars": 936,
    "preview": "<footer class=\"site-footer\">\n\n  <div class=\"wrapper\">\n\n    <h2 class=\"footer-heading\">{{ site.title }}</h2>\n\n    <div cl"
  },
  {
    "path": "src/_includes/head.html",
    "chars": 786,
    "preview": "<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"viewport\" content="
  },
  {
    "path": "src/_includes/header.html",
    "chars": 1120,
    "preview": "<header class=\"site-header\">\n\n  <div class=\"wrapper\">\n\n    <a class=\"site-title\" href=\"{{ site.baseurl }}/\">{{ site.titl"
  },
  {
    "path": "src/_includes/icon-github.html",
    "chars": 177,
    "preview": "<a href=\"https://github.com/{{ include.username }}\"><span class=\"icon icon--github\">{% include icon-github.svg %}</span>"
  },
  {
    "path": "src/_includes/icon-twitter.html",
    "chars": 180,
    "preview": "<a href=\"https://twitter.com/{{ include.username }}\"><span class=\"icon icon--twitter\">{% include icon-twitter.svg %}</sp"
  },
  {
    "path": "src/_layouts/default.html",
    "chars": 369,
    "preview": "<!DOCTYPE html>\n<html>\n\n  {% include head.html %}\n\n  <body>\n\n    {% include header.html %}\n    <div id=\"root\"></div>\n   "
  },
  {
    "path": "src/_layouts/page.html",
    "chars": 209,
    "preview": "---\nlayout: default\n---\n<article class=\"post\">\n\n  <header class=\"post-header\">\n    <h1 class=\"post-title\">{{ page.title "
  },
  {
    "path": "src/_layouts/post.html",
    "chars": 616,
    "preview": "---\nlayout: default\n---\n<article class=\"post\" itemscope itemtype=\"http://schema.org/BlogPosting\">\n\n  <header class=\"post"
  },
  {
    "path": "src/_posts/2016-05-02-welcome-to-jekyll.markdown",
    "chars": 1202,
    "preview": "---\nlayout: post\ntitle:  \"Welcome to Jekyll!\"\ndate:   2016-05-02 09:28:59 -0500\ncategories: jekyll update\n---\nYou’ll fin"
  },
  {
    "path": "src/_sass/_base.scss",
    "chars": 2909,
    "preview": "/**\n * Reset some basic elements\n */\nbody, h1, h2, h3, h4, h5, h6,\np, blockquote, pre, hr,\ndl, dd, ol, ul, figure {\n    "
  },
  {
    "path": "src/_sass/_layout.scss",
    "chars": 4299,
    "preview": "/**\n * Site header\n */\n.site-header {\n    border-top: 5px solid $grey-color-dark;\n    border-bottom: 1px solid $grey-col"
  },
  {
    "path": "src/_sass/_syntax-highlighting.scss",
    "chars": 3355,
    "preview": "/**\n * Syntax highlighting styles\n */\n.highlight {\n    background: #fff;\n    @extend %vertical-rhythm;\n\n    .highlighter"
  },
  {
    "path": "src/about.md",
    "chars": 603,
    "preview": "---\nlayout: page\ntitle: About\npermalink: /about/\n---\n\nThis is the base Jekyll and Webpack boilerplate, created and maint"
  },
  {
    "path": "src/css/main.scss",
    "chars": 1063,
    "preview": "---\n# Only the main Sass file needs front matter (the dashes are enough)\n---\n@charset \"utf-8\";\n\n\n\n// Our variables\n$base"
  },
  {
    "path": "src/feed.xml",
    "chars": 1291,
    "preview": "---\nlayout: null\n---\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">"
  },
  {
    "path": "src/index.html",
    "chars": 1258,
    "preview": "---\nlayout: default\n---\n\n<div class=\"home\">\n\n  <h1 class=\"page-heading\">Howdy</h1>\n\n  <div class=\"post-content\">\n    <p>"
  },
  {
    "path": "webpack/components/Hello.js",
    "chars": 186,
    "preview": "import React, { Component } from 'react';\n\nclass Hello extends Component {\n    render() {\n        return <div>Hey, y’all"
  },
  {
    "path": "webpack/entry.js",
    "chars": 249,
    "preview": "import React, { Component } from 'react';\nimport { render } from 'react-dom';\nimport Hello from './components/Hello';\n\nc"
  },
  {
    "path": "webpack.config.js",
    "chars": 987,
    "preview": "const path = require('path');\n\nmodule.exports = {\n    // webpack folder's entry js - excluded from jekll's build process"
  }
]

About this extraction

This page contains the full source code of the allizad/jekyll-webpack GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 24 files (24.3 KB), approximately 7.7k tokens, and a symbol index with 4 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!