A Jekyll boilerplate for building modern websites š²
Description available in Medium Post: https://medium.com/better-programming/build-your-great-modern-static-website-with-this-boilerplate-using-jekyll-react-and-webpack-cd63e03e4984
This is an update of the great boilerplate built by Forestry team incorporating the ideas shared by Alli Zadrozny on his post "Using Webpack and React with Jekyll". All the libraries have been updated, so you can now run Jekyll with React using Webpack as the wrapper.
This boilerplate wraps Jekyll with Gulp as your local development build pipeline.
PostCSS and Webpack + Babel are used for CSS and JS compiling & transpiling.
BrowserSync is used for providing a modern local development experience, allowing you to preview your site on multiple devices in sync.
BrowsersList is used for configuring Browser support.
SVG Sprite is used to generate an SVG Sprite.
To use Gulp, you must have Node and NPM installed.
If you encounter problems: Gulp is currently not working with Node 12, downgrade to Node 11
npm install -g n
sudo n 11.15.0
Once the prerequisites are installed, clone the repository to your local machine, and then run:
(sudo) gem install bundler
(sudo) bundle install
npm install
This will install Jekyll as well as all of the Node dependencies needed to run your Jekyll environment. This may take a little while!
All development tasks are performed using npm run. See "scripts"
in package.json for a full list of commands.
Local development is powered by BrowserSync, you will be able to develop sites rapidly through:
http://localhost:3000/
.Running the local development server is as simple as running:
npm start
This will display all draft, future-dated, or expired content, which is not included in your production build.
If you'd like to develop with the site as it will appear in production, run:
npm run preview
To generate a final production build on your local machine you can run:
npm run build
The fresh production build of your site will end up in the dist/
directory.
.
āāā .tmp/ // Temporary directory for development server
āāā dist/ // The production build
āāā site/ // The Jekyll project, with all content and static files
| āāā _data/ // YAML files containing site data
| āāā _posts/ // Jekyll's built-in blogging content type
| āāā _layouts/ // Your theme layouts
| āāā _includes/ // Your theme partials
| āāā css/ // Where compiled CSS files live
| āāā js/ // Where compiled JS files live
| āāā img/ // Where theme images live
| āāā uploads/ // Where user uploads are stored
| āāā _config.yml // Production configuration settings
| āāā _development.yml // Settings for local development only
| āāā 404.md // Error page for your site
| āāā index.md // Homepage of your site
āāāā config // Config packs
āāāā scripts // Forestry base scripts
āāāā src/
āāā css // CSS/SCSS source files to be compiled to /css/
āāā js // JS source files to be compiled to /js/
āāā components // Add your REACT components here /js/
scripts.js // REACT Base handler
Any SVGs found in src/img/
will be combined into a single SVG Sprite at site/svg/sprite.symbol.svg
.
This boilerplate comes with a simple include for using SVGs in your layouts. You can select an svg by passing in its ID.
{% comment %}
Using a logo stored at src/img/github.svg
{% endcomment %}
{% include svg.html id="github" class="optional-class" width="32" height="32" %}
Note: the class
, width
, and height
params are optional
This boilerplate comes with standard ESLint and StyleLint configurations that will lint your CSS and JS for errors or common style issues, which work with most popular IDEs.
The tests can also be run from the command line:
npm run eslint
npm run stylelint
If you want to automatically fix lint errors, you can do this from the command line as well:
npm run eslint:fix
npm run stylelint:fix
This boilerplate is self-cleaning, and will remove the production dist/
and development .tmp/
folders every time a command is run to ensure that their contents are always up to date.
If you wish to manually cleanup, run:
npm run clean
All build tasks are handled by Gulp and are located in gulpfile.babel.js
. All parts of the build are configurable in discrete files to make management easy.
All build source and destination paths can be configured from static-scripts.config.js
.
The build commands for Jekyll can be configured from stat-cscripts.config.js
. Build commands are set based on the NODE_ENV
environment variable. You can optionally load different args using the GENERATOR_ARGS
environment variable.
Four options are available:
default
: the default build commands that are always rundevelopment
: additional build commands for the development serverpreview
: additional build commands for a production development serverproduction
: additional build commands for production buildsThe configuration for BrowserSync is found in .browsersyncrc.js
The configuration for PostCSS is found in .postcssrc.js
Both PostCSS and Webpack use .browserslistrc
to decide on browser support when compiling.
This boilerplate project is released under the MIT license.