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 ================================================ ================================================ FILE: src/_includes/head.html ================================================ {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} ================================================ FILE: src/_includes/header.html ================================================ ================================================ FILE: src/_includes/icon-github.html ================================================ {% include icon-github.svg %}{{ include.username }} ================================================ FILE: src/_includes/icon-twitter.html ================================================ {% include icon-twitter.svg %}{{ include.username }} ================================================ FILE: src/_layouts/default.html ================================================ {% include head.html %} {% include header.html %}
{{ content }}
{% include footer.html %} ================================================ FILE: src/_layouts/page.html ================================================ --- layout: default ---

{{ page.title }}

{{ content }}
================================================ FILE: src/_layouts/post.html ================================================ --- layout: default ---

{{ page.title }}

{{ content }}
================================================ 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 --- {{ site.title | xml_escape }} {{ site.description | xml_escape }} {{ site.url }}{{ site.baseurl }}/ {{ site.time | date_to_rfc822 }} {{ site.time | date_to_rfc822 }} Jekyll v{{ jekyll.version }} {% for post in site.posts limit:10 %} {{ post.title | xml_escape }} {{ post.content | xml_escape }} {{ post.date | date_to_rfc822 }} {{ post.url | prepend: site.baseurl | prepend: site.url }} {{ post.url | prepend: site.baseurl | prepend: site.url }} {% for tag in post.tags %} {{ tag | xml_escape }} {% endfor %} {% for cat in post.categories %} {{ cat | xml_escape }} {% endfor %} {% endfor %} ================================================ FILE: src/index.html ================================================ --- layout: default ---

Howdy

This is the base Jekyll and Webpack boilerplate, created and maintained by @allizad.

You can learn more about how this was put together in my walkthrough post here:

See the full series of adding search to Jekyll, for which this project was a building block, here:

Thanks! Now go build shit!

cat-lappy-image

subscribe via RSS

================================================ FILE: webpack/components/Hello.js ================================================ import React, { Component } from 'react'; class Hello extends Component { render() { return
Hey, y’all!! This is a React Component
; } } 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 ; } } render(, 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. };