init
17
.editorconfig
Normal file
|
@ -0,0 +1,17 @@
|
|||
# This file is used by editors and IDEs to unify coding standards
|
||||
# @see http://EditorConfig.org
|
||||
# @standards PHP: http://www.php-fig.org/psr/psr-2/
|
||||
root = true
|
||||
|
||||
# Default configuration (applies to all file types)
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
|
||||
# Markdown customizations
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
10
.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
/.sculpin/
|
||||
/app/cache/*
|
||||
/app/config/sculpin_kernel_*.yml
|
||||
/app/config/sculpin_site_*.yml
|
||||
/app/logs/*
|
||||
/output_*/
|
||||
/node_modules/
|
||||
/source/build/
|
||||
s3.conf
|
||||
/vendor/
|
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Sculpin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, 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 THE
|
||||
SOFTWARE.
|
83
README.md
Normal file
|
@ -0,0 +1,83 @@
|
|||
Sculpin Blog Skeleton
|
||||
=====================
|
||||
|
||||
A skeleton for a Sculpin based blog.
|
||||
|
||||
Powered by [Sculpin](http://sculpin.io). =)
|
||||
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
A very basic Sculpin based blog supporting the following features:
|
||||
|
||||
* Very minimal Bootstrap based theme.
|
||||
* A handful of existing posts in `source/_posts/` to get you started. Feel
|
||||
free to remove these when you are ready.
|
||||
* An about page at `/about`.
|
||||
* An index page at `/`. It displays all posts and paginates them.
|
||||
* A blog archive page at `/blog`. It displays post titles broken down by
|
||||
month and is paginated.
|
||||
* A blog categories page at `/blog/categories`.
|
||||
* A blog category index at `/blog/categories/$category`. Similar to the blog
|
||||
archive except broken down by each category.
|
||||
* A blog tags page at `/blog/tags`.
|
||||
* A blog tag index at `/blog/tags/$tag`. Similar to the blog archive
|
||||
except broken down by each tag.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Sculpin is a PHP application and installed with the PHP package manager `composer`.
|
||||
See https://getcomposer.org/ for installation instructions.
|
||||
|
||||
Unless you do a very basic website, you want some CSS and Javascript assets. Sculpin
|
||||
uses `yarn` to manage them. See https://yarnpkg.com/en/docs/install for installation
|
||||
instructions.
|
||||
|
||||
Install
|
||||
-------
|
||||
|
||||
Create a new project using composer:
|
||||
|
||||
```bash
|
||||
$ composer create-project -s dev sculpin/blog-skeleton my-blog
|
||||
```
|
||||
|
||||
This application uses [Symfony's Webpack Encore](https://symfony.com/doc/current/frontend.html)
|
||||
to manage CSS, JavaScript and image assets. Install the JS dependencies:
|
||||
|
||||
```bash
|
||||
$ cd my-blog
|
||||
$ yarn install
|
||||
```
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
First, start Encore to compile and update the assets in `source/assets/` into
|
||||
`source/build/`. The watcher keeps running until you exit it manually:
|
||||
|
||||
```bash
|
||||
$ composer yarn-watch
|
||||
```
|
||||
|
||||
In a new console, start the sculpin watcher to have your content updated as
|
||||
soon as you save changes:
|
||||
|
||||
```bash
|
||||
$ composer sculpin-watch
|
||||
```
|
||||
|
||||
Your newly generated clone of sculpin-blog-skeleton should now be accessible
|
||||
at `http://localhost:8000/`.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
The skeleton provides you with useful configuration and some example data for
|
||||
a Sculpin installation.
|
||||
|
||||
For more information about getting started with Sculpin, check out the
|
||||
[Get Started page](https://sculpin.io/getstarted/) and have a look at the full
|
||||
[documentation](https://sculpin.io/documentation/).
|
8
app/config/sculpin_kernel.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
sculpin_content_types:
|
||||
posts:
|
||||
permalink: blog/:year/:month/:day/:filename/
|
||||
|
||||
# To disable posts (e.g., if you aren't planning on having any posts and Sculpin's watch mode complains):
|
||||
#sculpin_content_types:
|
||||
# posts:
|
||||
# enabled: false
|
9
app/config/sculpin_site.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
# The contents of this file are parsed and made available as
|
||||
# via `site.*`. So for example, {{ site.title }} can be used
|
||||
# in a template to get the contents of the `title` key.
|
||||
title: Sculpin Blog Skeleton
|
||||
subtitle: To Get You Started
|
||||
|
||||
# Insert your disqus shortname
|
||||
#disqus:
|
||||
# shortname:
|
34
composer.json
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"name": "sculpin/blog-skeleton",
|
||||
"description": "A Skeleton for a Sculpin Based Blog",
|
||||
"type": "sculpin-skeleton",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Dragonfly Development Inc.",
|
||||
"email": "info@dflydev.com",
|
||||
"homepage": "http://dflydev.com"
|
||||
},
|
||||
{
|
||||
"name": "Beau Simensen",
|
||||
"email": "beau@dflydev.com",
|
||||
"homepage": "http://beausimensen.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"sculpin/sculpin": "^3.0"
|
||||
},
|
||||
"scripts": {
|
||||
"publish": [
|
||||
"./publish.sh"
|
||||
],
|
||||
"sculpin-watch": [
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"./vendor/bin/sculpin generate --watch --server"
|
||||
],
|
||||
"yarn-watch": [
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"yarn encore dev --watch"
|
||||
]
|
||||
}
|
||||
}
|
2444
composer.lock
generated
Normal file
11
package.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"@symfony/webpack-encore": "^0.24.0",
|
||||
"bootstrap": "^4.3.1",
|
||||
"highlightjs": "^9.12.0",
|
||||
"jquery": "^3.4",
|
||||
"node-sass": "^4.11.0",
|
||||
"popper.js": "^1.14.7",
|
||||
"sass-loader": "^7.0.1"
|
||||
}
|
||||
}
|
9
publish.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
sculpin generate --env=prod
|
||||
if [ $? -ne 0 ]; then echo "Could not generate the site"; exit 1; fi
|
||||
|
||||
# Add --delete right before "output_prod" to have rsync remove files that are
|
||||
# deleted locally from the destination too. See README.md for an example.
|
||||
rsync -avze 'ssh -p 4668' output_prod/ username@yoursculpinsite:public_html
|
||||
if [ $? -ne 0 ]; then echo "Could not publish the site"; exit 1; fi
|
58
s3-publish.sh
Executable file
|
@ -0,0 +1,58 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ ! -f "s3.conf" ]
|
||||
then
|
||||
echo "Unable to locate s3.conf file - use s3.conf.dist as a template for configuring your S3 settings."
|
||||
exit 1
|
||||
else
|
||||
# Load config file
|
||||
. s3.conf
|
||||
fi
|
||||
|
||||
if [ ! -z "$1" -a "$1" != "--dry-run" -a "$1" != "-n" ]
|
||||
then
|
||||
echo "Usage: ./s3-publish.sh [--dry-run|-n]"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Would be a good idea to wipe out the prod env first, so that DELETE_REMOVED works properly
|
||||
# If you're comfortable with that, uncomment the line below:
|
||||
# rm -rf output_prod/*
|
||||
|
||||
vendor/bin/sculpin generate --env=prod || ( echo "Could not generate the site" && exit )
|
||||
|
||||
S3CMD_PATH=`which s3cmd`
|
||||
if [ $? -ne 0 -o -z "$S3CMD_PATH" ]
|
||||
then
|
||||
echo "s3cmd not found - unable to deploy"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ ! -f "$S3_CONFIG" ]
|
||||
then
|
||||
echo "Unable to find s3cmd config file - unable to deploy"
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ "$S3_DELETE" = "true" ]
|
||||
then
|
||||
echo "Enabling DELETE_REMOVED"
|
||||
DELETE_REMOVED='--delete-removed'
|
||||
else
|
||||
echo "Disabling DELETE_REMOVED"
|
||||
DELETE_REMOVED='--no-delete-removed'
|
||||
fi
|
||||
|
||||
if [ "$S3_REGION" = "" ]
|
||||
then
|
||||
S3_REGION=US
|
||||
fi
|
||||
|
||||
if [ "$1" = "--dry-run" -o "$1" = "-n" ]
|
||||
then
|
||||
DRY_RUN='--dry-run'
|
||||
else
|
||||
DRY_RUN=''
|
||||
fi
|
||||
|
||||
s3cmd --config="$S3_CONFIG" $DRY_RUN --force --recursive $DELETE_REMOVED --bucket-location=$S3_REGION --progress --acl-public sync output_prod/ s3://$S3_BUCKET
|
14
s3.conf.dist
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Path to s3cmd configuration file for your Amazon S3 bucket
|
||||
# This is useful if you have multiple sets of credentials - you can give Sculpin a locked-down IAM key for deployments
|
||||
S3_CONFIG=./.s3/s3cmd.conf
|
||||
|
||||
# Delete files from S3 bucket that are not created by sculpin (e.g., if you delete a blog post, this will remove the corresponding HTML files for you)
|
||||
# NOTE: If you ever upload files to your bucket that are not a part of your sculpin deployment, THIS SETTING WILL DELETE THEM.
|
||||
# This is why it is set to "false" by default; change to "true" in order to have sculpin fully manage your bucket contents.
|
||||
S3_DELETE=false
|
||||
|
||||
# Region for S3. Set to Oregon by default, because Oregon S3 has special read-after-write consistency.
|
||||
S3_REGION=us-west-2
|
||||
|
||||
# The name of your S3 bucket
|
||||
S3_BUCKET=www.mydomain.com
|
7
source/404.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
layout: default
|
||||
permalink: none
|
||||
title: Four o four
|
||||
---
|
||||
|
||||
<h2>Page not found</h2>
|
106
source/_layouts/default.html
Normal file
|
@ -0,0 +1,106 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<title>{% block title %}{{ page.title }}{% endblock %} — {{ site.title }} — {{ site.subtitle }}</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
{% block head_meta %}
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{% endblock %}
|
||||
<link rel="stylesheet" href="{{ site.url }}/build/app.css">
|
||||
|
||||
<link rel="apple-touch-startup-image" href="{{ site.url }}/build/2048x2048.png">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="shortcut icon" sizes="76x76" href="{{ site.url }}/build/jackson/76x76.png">
|
||||
<link rel="shortcut icon" sizes="120x120" href="{{ site.url }}/build/jackson/120x120.png">
|
||||
<link rel="shortcut icon" sizes="128x128" href="{{ site.url }}/build/jackson/128x128.png">
|
||||
<link rel="shortcut icon" sizes="152x152" href="{{ site.url }}/build/jackson/152x152.png">
|
||||
<link rel="shortcut icon" sizes="196x196" href="{{ site.url }}/build/jackson/196x196.png">
|
||||
<link rel="shortcut icon" sizes="512x512" href="{{ site.url }}/build/jackson/512x512.png">
|
||||
<link rel="shortcut icon" sizes="1024x1024" href="{{ site.url }}/build/jackson/1024x1024.png">
|
||||
<link rel="shortcut icon" sizes="2048x2048" href="{{ site.url }}/build/jackson/2048x2048.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="{{ site.url }}/build/jackson/76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ site.url }}/build/jackson/120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="128x128" href="{{ site.url }}/build/jackson/128x128.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ site.url }}/build/jackson/152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="196x196" href="{{ site.url }}/build/jackson/196x196.png">
|
||||
<link rel="apple-touch-icon" sizes="512x512" href="{{ site.url }}/build/jackson/512x512.png">
|
||||
<link rel="apple-touch-icon" sizes="1024x1024" href="{{ site.url }}/build/jackson/1024x1024.png">
|
||||
<link rel="apple-touch-icon" sizes="2048x2048" href="{{ site.url }}/build/jackson/2048x2048.png">
|
||||
|
||||
<link rel="alternate" type="application/atom+xml" href="{{ site.url }}/atom.xml" title="{{ site.title }} activity feed" />
|
||||
{% block head_styles %}
|
||||
{% endblock %}
|
||||
{% block head_scripts %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ site.url }}/">{{ site.title }}</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item"><a class="nav-link" href="{{ site.url }}/blog">Posts Archive</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ site.url }}/blog/categories">Categories</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ site.url }}/blog/tags">Tags</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ site.url }}/about">About</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<main role="main" class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
{% block content_wrapper %}{% block content %}{% endblock %}{% endblock %}
|
||||
</div>
|
||||
<div class="col-sm-4 sidebar">
|
||||
<div class="card bg-light">
|
||||
<div class="card-header">{{ site.title }}</div>
|
||||
<div class="card-body">
|
||||
{% if site.subtitle %}<small>{{ site.subtitle }}</small>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card bg-light sidebar-nav">
|
||||
<div class="card-header">Links</div>
|
||||
<div class="card-body">
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="http://sculpin.io">sculpin.io</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="http://twitter.com/getsculpin">@getsculpin</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer class="container">
|
||||
<span class="text-muted">© {{ "now"|date("Y") }} {{ site.title }}</span>
|
||||
</footer>
|
||||
|
||||
<script src="{{ site.url }}/build/app.js"></script>
|
||||
{% block scripts %}
|
||||
{% endblock %}
|
||||
|
||||
{% if site.google_analytics_tracking_id %}
|
||||
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{site.google_analytics_tracking_id}}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
{% block scripts_after %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
16
source/_posts/2011-12-20-happy-birthday-sculpin.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
title: Happy Birthday Sculpin!
|
||||
tags:
|
||||
- sculpin
|
||||
- markdown
|
||||
categories:
|
||||
- personal
|
||||
|
||||
---
|
||||
The first commit to the Sculpin repository was made on December 20th, 2011.
|
||||
What a trip since then!
|
||||
|
||||
Sculpin has always been a big fan of [Markdown][1]. So this post was
|
||||
written in Markdown. :)
|
||||
|
||||
[1]: http://daringfireball.net/projects/markdown/
|
11
source/_posts/2012-09-29-symfony-live-hacking-day.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
title: Symfony Live Hacking Day!
|
||||
tags: [sensio, symfony, symfony live]
|
||||
categories: [personal]
|
||||
|
||||
---
|
||||
Fun times at the Symfony Live San Francisco 2012 Hacking Day! Code
|
||||
was hacked and pizza was had. Some pics of the conference are
|
||||
available on the [Sensio Labs Facebook page][1].
|
||||
|
||||
[1]: https://www.facebook.com/media/set/?set=a.450514941665306.112810.129739647076172
|
9
source/_posts/2012-10-16-balrog.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: Balrog
|
||||
tags: [balrog, community, static site generator]
|
||||
categories: [personal]
|
||||
|
||||
---
|
||||
Found out about [Balrog](http://github.com/igorw/balrog) today! It looks
|
||||
like a really nice micro static site generator. Maybe Sculpin and Balrog
|
||||
can be friends?
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: And Then There Was Textile Support
|
||||
categories:
|
||||
- features
|
||||
tags:
|
||||
- sculpin
|
||||
- textile
|
||||
|
||||
---
|
||||
"Textile":https://github.com/netcarver/textile support was added on November 26th, 2012. Markdown is great, but so is choice. More converters for all!
|
||||
|
||||
In honor of this milestone, this post is written in *Textile*.
|
54
source/_posts/2012-11-27-lorem-ipsum.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
---
|
||||
title: Lorem Ipsum
|
||||
categories:
|
||||
- testing
|
||||
|
||||
# https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables
|
||||
disqus:
|
||||
identifier: # slug_for_current_page
|
||||
title: # title_for_current_page
|
||||
url: # url_for_current_page
|
||||
category_id: # category_id_for_current_page
|
||||
|
||||
---
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin consequat congue
|
||||
lacus vel convallis. Cras nisi urna, ultrices non semper quis, ultricies sit
|
||||
amet est. Donec nunc velit, consequat a pulvinar a, eleifend id leo. Curabitur
|
||||
vel leo eros, vitae elementum purus. Integer id lorem hendrerit purus gravida
|
||||
commodo. Pellentesque nec rhoncus turpis. Cras feugiat odio eget quam semper at
|
||||
dictum lectus adipiscing. In ut est et mauris pulvinar placerat eget fringilla
|
||||
lectus.
|
||||
|
||||
Ut in mauris augue, vitae facilisis purus. Nam ullamcorper pharetra lorem,
|
||||
cursus lobortis tellus facilisis congue. Etiam ac dapibus lectus. Nunc tempus
|
||||
ullamcorper felis, eu sagittis risus mollis aliquam. Mauris congue orci ac metus
|
||||
egestas porta nec ac lectus. Nam ac neque vitae quam sagittis dapibus. Morbi sit
|
||||
amet erat ac justo rutrum molestie id in tortor. Proin egestas tortor neque,
|
||||
eget fringilla nunc. Donec consequat purus ac risus dignissim dignissim.
|
||||
Praesent dui nisl, suscipit sed cursus in, dictum non elit. Nulla eget congue
|
||||
nisl.
|
||||
|
||||
Morbi hendrerit porta ante, dapibus adipiscing nibh ornare at. Nullam iaculis
|
||||
porta ante, at semper tellus auctor nec. Vestibulum nec justo sed purus
|
||||
elementum venenatis. In hac habitasse platea dictumst. Fusce nibh tellus, varius
|
||||
non commodo sit amet, eleifend placerat nisl. Donec sit amet enim cursus ligula
|
||||
adipiscing auctor. Nullam sagittis porta ligula vitae rutrum. Aenean id sapien
|
||||
mi, elementum ullamcorper lectus. Aliquam erat volutpat. Fusce bibendum, leo
|
||||
ultricies lacinia viverra, mauris urna fermentum sem, id tempus lectus nunc
|
||||
faucibus magna. Vestibulum risus mi, tempus ut lobortis non, mattis sed diam.
|
||||
Nunc at mattis leo.
|
||||
|
||||
Ut erat nunc, vestibulum sit amet sodales non, tincidunt nec justo. Integer
|
||||
vitae tortor massa. Vestibulum tincidunt commodo lacus, ac cursus lorem mattis
|
||||
eu. Donec ut magna vel urna fermentum congue. Donec laoreet neque at velit
|
||||
imperdiet luctus. In consectetur lacus eu purus dictum a imperdiet leo
|
||||
ullamcorper. Phasellus consequat feugiat tincidunt. Quisque vel orci in mauris
|
||||
fermentum pretium.
|
||||
|
||||
Pellentesque rhoncus accumsan auctor. Nunc venenatis tellus non ante pharetra
|
||||
pretium. Sed rutrum, eros eu tristique luctus, neque sapien ultrices felis, id
|
||||
varius orci erat eget leo. Curabitur ut volutpat diam. Phasellus porta neque
|
||||
vitae nisi sodales ultrices. Etiam ultricies blandit lorem, id accumsan eros
|
||||
facilisis vel. Praesent nulla sapien, laoreet sit amet dapibus sit amet,
|
||||
tincidunt vitae neque. Vestibulum aliquam sollicitudin urna, in facilisis dui
|
||||
aliquam id.
|
12
source/_posts/2012-12-14-a-draft-post.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: This is a draft!
|
||||
draft: true
|
||||
categories:
|
||||
- features
|
||||
|
||||
---
|
||||
This is a draft post. You will only see this if you are running the `dev`
|
||||
environment (`dev` is the default).
|
||||
|
||||
All draft posts will automatically be tagged `draft` so they are easy to
|
||||
find.
|
42
source/_posts/2013-02-04-highlight.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
title: Syntax Highlighting
|
||||
categories:
|
||||
- features
|
||||
|
||||
---
|
||||
You're all programmers, right? And you're writing code snippets on your Sculpin
|
||||
powered blog? Yeah. So you want some highlighting with your static site generation?
|
||||
Here you go!
|
||||
|
||||
namespace Foo;
|
||||
|
||||
/**
|
||||
* Awesome Contrived Example.
|
||||
*/
|
||||
class Bar implements BarInterface
|
||||
{
|
||||
private $baz;
|
||||
|
||||
public function __construct(BazInterface $baz)
|
||||
{
|
||||
$this->baz = $baz;
|
||||
}
|
||||
|
||||
public function doIt()
|
||||
{
|
||||
return $this->baz->do('it');
|
||||
}
|
||||
}
|
||||
|
||||
You can also use [fenced code blocks][fcb] with a syntax declaration at the top.
|
||||
You can use either `~` or <code>`</code> to mark them.
|
||||
|
||||
[fcb]: http://michelf.ca/projects/php-markdown/extra/#fenced-code-blocks
|
||||
|
||||
~~~php
|
||||
if ($fencedCodeBlock->syntax !== 'PHP') {
|
||||
throw new UnexpectedValueException("wat");
|
||||
}
|
||||
~~~
|
||||
Like this addition to the skeleton? You can thank for [@Pawka](https://github.com/Pawka)
|
||||
for suggesting it. :)
|
76
source/_views/post.html
Normal file
|
@ -0,0 +1,76 @@
|
|||
{% extends "default" %}
|
||||
|
||||
{% block head_meta %}
|
||||
<meta name="robots" content="index, follow">
|
||||
{% endblock %}
|
||||
|
||||
{% block content_wrapper %}
|
||||
<article>
|
||||
<header>
|
||||
<h2>{{ page.title }} <small>post</small></h2>
|
||||
</header>
|
||||
<div>
|
||||
{{ page.blocks.content|raw }}
|
||||
</div>
|
||||
{% if page.categories %}
|
||||
<p class="categories">
|
||||
Categories:
|
||||
{% for category in page.categories %}
|
||||
<a href="{{ site.url }}/blog/categories/{{ category|url_encode(true) }}">{{ category }}</a>{% if not loop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if page.tags %}
|
||||
<p class="tags">
|
||||
Tags:
|
||||
{% for tag in page.tags %}
|
||||
<a href="{{ site.url }}/blog/tags/{{ tag|url_encode(true) }}">{{ tag }}</a>{% if not loop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if page.previous_post or page.next_post %}
|
||||
<nav class="article">
|
||||
<ul>
|
||||
{% if page.next_post %}
|
||||
<li>Next: <a class="next" href="{{ site.url }}{{ page.next_post.url }}" title="{{ page.next_post.title }}"><span class="title">{{ page.next_post.title }}</span></a></li>
|
||||
{% endif %}
|
||||
{% if page.previous_post %}
|
||||
<li>Previous: <a class="previous" href="{{ site.url }}{{ page.previous_post.url }}" title="{{ page.previous_post.title }}"><span class="title">{{ page.previous_post.title }}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
</article>
|
||||
|
||||
|
||||
{% if site.disqus.shortname and site.disqus.shortname != '' %}
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
|
||||
var disqus_shortname = '{{site.disqus.shortname}}'; // required: replace example with your forum shortname
|
||||
|
||||
|
||||
{% if page.disqus.identifier %}var disqus_identifier = '{{page.disqus.identifier}}'; {% endif %}
|
||||
|
||||
{% if page.disqus.title %}var disqus_title = '{{page.disqus.title}}';{% endif %}
|
||||
|
||||
{% if page.disqus.url %}var disqus_url = '{{page.disqus.url}}';{% endif %}
|
||||
|
||||
{% if page.disqus.category_id %}var disqus_category_id = '{{page.disqus.category_id}}';{% endif %}
|
||||
|
||||
/* * * DON'T EDIT BELOW THIS LINE * * */
|
||||
(function () {
|
||||
var dsq = document.createElement('script');
|
||||
dsq.type = 'text/javascript';
|
||||
dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the
|
||||
<a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a>
|
||||
</noscript>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
8
source/about.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
layout: default
|
||||
title: About
|
||||
|
||||
---
|
||||
# About the Author or Blog
|
||||
|
||||
Here is a little information about the author or the blog.
|
33
source/assets/css/app.scss
Normal file
|
@ -0,0 +1,33 @@
|
|||
@import "../../../node_modules/bootstrap/scss/bootstrap";
|
||||
@import "../../../node_modules/highlightjs/styles/github.css";
|
||||
|
||||
small {
|
||||
display: block;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
main.container, footer.container {
|
||||
max-width: 900px;
|
||||
}
|
||||
|
||||
footer.container {
|
||||
margin-top: 30px;
|
||||
padding: 30px 0;
|
||||
border-top: 1px dashed #aaa;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.sidebar {
|
||||
padding-top: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 980px) {
|
||||
body {
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
body > main.container {
|
||||
padding: 80px 15px 0; /* 80px to make the container go all the way to the bottom of the topbar */
|
||||
}
|
BIN
source/assets/icons/jackson/1024x1024.png
Normal file
After Width: | Height: | Size: 242 KiB |
BIN
source/assets/icons/jackson/120x120.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
source/assets/icons/jackson/128x128.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
source/assets/icons/jackson/152x152.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
source/assets/icons/jackson/196x196.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
source/assets/icons/jackson/2048x2048.png
Normal file
After Width: | Height: | Size: 393 KiB |
BIN
source/assets/icons/jackson/512x512.png
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
source/assets/icons/jackson/76x76.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
7
source/assets/js/app.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
require('../css/app.scss');
|
||||
|
||||
require('jquery')
|
||||
require('bootstrap')
|
||||
var hljs = require('highlightjs')
|
||||
|
||||
hljs.initHighlightingOnLoad();
|
28
source/atom.xml
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
use: ["posts"]
|
||||
permalink: atom.xml
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title><![CDATA[{{ site.title }}]]></title>
|
||||
<link href="{{ site.url }}/atom.xml" rel="self"/>
|
||||
<link href="{{ site.url }}/"/>
|
||||
<updated>{{ site.calculated_date | date('c') }}</updated>
|
||||
<id>{{ site.url }}/</id>
|
||||
{% if site.author or site.email %}
|
||||
<author>
|
||||
{% if site.author %}<name><![CDATA[{{ site.author }}]]></name>{% endif %}
|
||||
{% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
|
||||
</author>
|
||||
{% endif %}
|
||||
<generator uri="http://sculpin.io/">Sculpin</generator>
|
||||
{% for post in data.posts|slice(0, 10) %}
|
||||
<entry>
|
||||
<title type="html"><![CDATA[{{ post.title }}]]></title>
|
||||
<link href="{{ site.url }}{{ post.url }}"/>
|
||||
<updated>{{ post.date|date('c') }}</updated>
|
||||
<id>{{ site.url }}{{ post.url }}</id>
|
||||
<content type="html"><![CDATA[{{ post.blocks.content|raw }}]]></content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
38
source/blog.html
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
layout: default
|
||||
title: Posts Archive
|
||||
generator: pagination
|
||||
use:
|
||||
- posts
|
||||
|
||||
---
|
||||
{% set year = '0' %}
|
||||
<h2>Posts Archive</h2>
|
||||
{% for post in page.pagination.items %}
|
||||
{% set this_year %}{{ post.date | date("Y") }}{% endset %}
|
||||
{% if year != this_year %}
|
||||
{% set month = '0' %}
|
||||
{% set year = this_year %}
|
||||
{% endif %}
|
||||
{% set this_month %}{{ post.date | date("F") }}{% endset %}
|
||||
{% if month != this_month %}
|
||||
{% set month = this_month %}
|
||||
<h3>{{ month }} {{ year }}</h3>
|
||||
{% endif %}
|
||||
<div>
|
||||
<a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div>
|
||||
{% if page.pagination.previous_page or page.pagination.next_page %}
|
||||
<nav class="article clearfix">
|
||||
{% if page.pagination.previous_page %}
|
||||
<a class="previous" href="{{ site.url }}{{ page.pagination.previous_page.url }}" title="Previous Page"><span class="title">Previous Page</span></a>
|
||||
{% endif %}
|
||||
{% if page.pagination.next_page %}
|
||||
<a class="next" href="{{ site.url }}{{ page.pagination.next_page.url }}" title="Next Page"><span class="title">Next Page</span></a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
</div>
|
13
source/blog/categories.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
layout: default
|
||||
title: Categories
|
||||
use:
|
||||
- posts_categories
|
||||
---
|
||||
<h2>Categories</h2>
|
||||
|
||||
<div>
|
||||
{% for category,posts in data.posts_categories %}
|
||||
<a href="{{ site.url }}/blog/categories/{{ category|url_encode(true) }}">{{ category }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
47
source/blog/categories/category.html
Normal file
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
layout: default
|
||||
title: Category Archive
|
||||
generator: [posts_category_index, pagination]
|
||||
pagination:
|
||||
provider: page.category_posts
|
||||
|
||||
---
|
||||
|
||||
{% block head_meta %}
|
||||
<link rel="alternate" type="application/atom+xml" href="{{ site.url }}/blog/categories/{{ page.category|url_encode(true) }}.xml" title="{{ site.title }} '{{ page.category }}' category feed" />
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ page.title }} "{{ page.category }}"{% endblock %}
|
||||
{% block content %}
|
||||
{% set year = '0' %}
|
||||
<h2>"{{ page.category }}"</h2>
|
||||
{% for post in page.pagination.items %}
|
||||
{% set this_year %}{{ post.date | date("Y") }}{% endset %}
|
||||
{% if year != this_year %}
|
||||
{% set month = '0' %}
|
||||
{% set year = this_year %}
|
||||
{% endif %}
|
||||
{% set this_month %}{{ post.date | date("F") }}{% endset %}
|
||||
{% if month != this_month %}
|
||||
{% set month = this_month %}
|
||||
<h3>{{ month }} {{ year }}</h3>
|
||||
{% endif %}
|
||||
<article>
|
||||
<div><a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
|
||||
<div>
|
||||
{% if page.pagination.previous_page or page.pagination.next_page %}
|
||||
<nav class="article clearfix">
|
||||
{% if page.pagination.previous_page %}
|
||||
<a class="previous" href="{{ site.url }}{{ page.pagination.previous_page.url }}" title="Previous Page"><span class="title">Previous Page</span></a>
|
||||
{% endif %}
|
||||
{% if page.pagination.next_page %}
|
||||
<a class="next" href="{{ site.url }}{{ page.pagination.next_page.url }}" title="Next Page"><span class="title">Next Page</span></a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock content %}
|
28
source/blog/categories/category.xml
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
generator: [posts_category_index]
|
||||
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title><![CDATA[{{ site.title }}]]></title>
|
||||
<link href="{{ site.url }}{{ page.url }}" rel="self"/>
|
||||
<link href="{{ site.url }}/"/>
|
||||
<updated>{{ site.calculated_date | date('c') }}</updated>
|
||||
<id>{{ site.url }}/</id>
|
||||
{% if site.author or site.email %}
|
||||
<author>
|
||||
{% if site.author %}<name><![CDATA[{{ site.author }}]]></name>{% endif %}
|
||||
{% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
|
||||
</author>
|
||||
{% endif %}
|
||||
<generator uri="http://sculpin.io/">Sculpin</generator>
|
||||
{% for post in page.category_posts|slice(0, 10) %}
|
||||
<entry>
|
||||
<title type="html"><![CDATA[{{ post.title }}]]></title>
|
||||
<link href="{{ site.url }}{{ post.url }}"/>
|
||||
<updated>{{ post.date|date('c') }}</updated>
|
||||
<id>{{ site.url }}{{ post.url }}</id>
|
||||
<content type="html"><![CDATA[{{ post.blocks.content|raw }}]]></content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
13
source/blog/tags.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
layout: default
|
||||
title: Tags
|
||||
use:
|
||||
- posts_tags
|
||||
---
|
||||
<h2>Tags</h2>
|
||||
|
||||
<div>
|
||||
{% for tag,posts in data.posts_tags %}
|
||||
<a href="{{ site.url }}/blog/tags/{{ tag|url_encode(true) }}">{{ tag }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
47
source/blog/tags/tag.html
Normal file
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
layout: default
|
||||
title: Tag Archive
|
||||
generator: [posts_tag_index, pagination]
|
||||
pagination:
|
||||
provider: page.tag_posts
|
||||
|
||||
---
|
||||
|
||||
{% block head_meta %}
|
||||
<link rel="alternate" type="application/atom+xml" href="{{ site.url }}/blog/tags/{{ page.tag|url_encode(true) }}.xml" title="{{ site.title }} '{{ page.tag }}' tag feed" />
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ page.title }} "{{ page.tag }}"{% endblock %}
|
||||
{% block content %}
|
||||
{% set year = '0' %}
|
||||
<h2>"{{ page.tag }}"</h2>
|
||||
{% for post in page.pagination.items %}
|
||||
{% set this_year %}{{ post.date | date("Y") }}{% endset %}
|
||||
{% if year != this_year %}
|
||||
{% set month = '0' %}
|
||||
{% set year = this_year %}
|
||||
{% endif %}
|
||||
{% set this_month %}{{ post.date | date("F") }}{% endset %}
|
||||
{% if month != this_month %}
|
||||
{% set month = this_month %}
|
||||
<h3>{{ month }} {{ year }}</h3>
|
||||
{% endif %}
|
||||
<article>
|
||||
<div><a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
|
||||
<div>
|
||||
{% if page.pagination.previous_page or page.pagination.next_page %}
|
||||
<nav class="article clearfix">
|
||||
{% if page.pagination.previous_page %}
|
||||
<a class="previous" href="{{ site.url }}{{ page.pagination.previous_page.url }}" title="Previous Page"><span class="title">Previous Page</span></a>
|
||||
{% endif %}
|
||||
{% if page.pagination.next_page %}
|
||||
<a class="next" href="{{ site.url }}{{ page.pagination.next_page.url }}" title="Next Page"><span class="title">Next Page</span></a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock content %}
|
28
source/blog/tags/tag.xml
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
generator: [posts_tag_index]
|
||||
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title><![CDATA[{{ site.title }}]]></title>
|
||||
<link href="{{ site.url }}{{ page.url }}" rel="self"/>
|
||||
<link href="{{ site.url }}/"/>
|
||||
<updated>{{ site.calculated_date | date('c') }}</updated>
|
||||
<id>{{ site.url }}/</id>
|
||||
{% if site.author or site.email %}
|
||||
<author>
|
||||
{% if site.author %}<name><![CDATA[{{ site.author }}]]></name>{% endif %}
|
||||
{% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
|
||||
</author>
|
||||
{% endif %}
|
||||
<generator uri="http://sculpin.io/">Sculpin</generator>
|
||||
{% for post in page.tag_posts|slice(0, 10) %}
|
||||
<entry>
|
||||
<title type="html"><![CDATA[{{ post.title }}]]></title>
|
||||
<link href="{{ site.url }}{{ post.url }}"/>
|
||||
<updated>{{ post.date|date('c') }}</updated>
|
||||
<id>{{ site.url }}{{ post.url }}</id>
|
||||
<content type="html"><![CDATA[{{ post.blocks.content|raw }}]]></content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
BIN
source/favicon.ico
Normal file
After Width: | Height: | Size: 5.6 KiB |
33
source/index.html
Normal file
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
layout: default
|
||||
title: Home
|
||||
generator: pagination
|
||||
pagination:
|
||||
max_per_page: 3
|
||||
use:
|
||||
- posts
|
||||
---
|
||||
{% for post in page.pagination.items %}
|
||||
<article>
|
||||
<header>
|
||||
<h2><a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></h2>
|
||||
</header>
|
||||
<div>
|
||||
{{ post.blocks.content|raw }}
|
||||
</div>
|
||||
{% if post.meta.tags %}
|
||||
<p class="tags">
|
||||
Tags:
|
||||
{% for tag in post.meta.tags %}
|
||||
<a href="{{ site.url }}/blog/tags/{{ tag|url_encode(true) }}">{{ tag }}</a>{% if not loop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
{% if page.pagination.previous_page or page.pagination.next_page %}
|
||||
<nav>
|
||||
{% if page.pagination.previous_page %}<a href="{{ site.url }}{{ page.pagination.previous_page.url }}">Newer Posts</a>{% endif %}<br />
|
||||
{% if page.pagination.next_page %}<a href="{{ site.url }}{{ page.pagination.next_page.url }}">Older Posts</a>{% endif %}<br />
|
||||
</nav>
|
||||
{% endif %}
|
9
source/robots.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
permalink: none
|
||||
---
|
||||
|
||||
User-agent: *
|
||||
Disallow: /blog/tags/
|
||||
Disallow: /blog/categories/
|
||||
|
||||
Sitemap: {{ site.url }}/sitemap.xml
|
21
source/sitemap.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
use: ["posts"]
|
||||
permalink: sitemap.xml
|
||||
---
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>{{ site.url }}</loc>
|
||||
<lastmod>{{ site.calculated_date | date('Y-m-d') }}</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
{% for post in data.posts %}
|
||||
<url>
|
||||
<loc>{{ site.url }}{{ post.url }}</loc>
|
||||
<lastmod>{{ post.date|date('c') }}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
{% endfor %}
|
||||
</urlset>
|
23
webpack.config.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
var Encore = require('@symfony/webpack-encore');
|
||||
|
||||
Encore
|
||||
// directory where compiled assets will be stored
|
||||
.setOutputPath('source/build/')
|
||||
// public path used by the web server to access the output path
|
||||
.setPublicPath('/build')
|
||||
.copyFiles({
|
||||
from: './source/assets/icons'
|
||||
})
|
||||
.addEntry('app', './source/assets/js/app.js')
|
||||
|
||||
.disableSingleRuntimeChunk()
|
||||
|
||||
.cleanupOutputBeforeBuild()
|
||||
.enableSourceMaps(!Encore.isProduction())
|
||||
// enables hashed filenames (e.g. app.abc123.css)
|
||||
.enableVersioning(Encore.isProduction())
|
||||
|
||||
.enableSassLoader()
|
||||
;
|
||||
|
||||
module.exports = Encore.getWebpackConfig();
|