Skip to content

kylesloper/slinkity-pjax

Repository files navigation

Slinkity starter project banner

Welcome to Slinkity starter project 👋

Version Documentation Maintenance License: MIT Twitter: slinkitydotdev

The all-in-one template for building your first Slinkity project

Slinkity is a framework that uses Vite to bring dynamic, client side interactions to your static 11ty sites. Slinkity lets you swap out existing templates like .html or .liquid for component templates like .jsx. What's more, it allows you to insert components into pages using shortcodes, like this one: {% react './path/to/Component.jsx' %}. And since you can opt-in to hydrating components clientside, dynamic state variables can work in both development and production.

With these capabilities, we aim to unify two competing camps in the web development community:

  • Lean, JavaScript-free static site generators driven by data and templating languages like Jekyll and Hugo.
  • Dynamic, JavaScript-heavy web apps powered by data and component frameworks like NextJS and NuxtJS.

Install dependencies and start development server

yarn start runs slinkity --serve to start a Vite server pointed at your 11ty build. The --incremental flag can be used for faster builds during development.

yarn
yarn start

Open localhost:8080 to view your site. Vite's development server enables processing a range of resources including SASS and React.

Build for production

Run the slinkity to process your files in a 2 step process:

  • Use 11ty to build your routes and copy over static assets
  • Use Vite to bundle, minify, and optimize your styles and JS resources
yarn build

Your new site will appear in the _site folder, or wherever you tell 11ty to build your site.

.eleventy.js

Slinkity relies on 11ty's latest 1.0 beta build to work properly. Our .eleventy.js file includes a few niceties we'd recommend for any Slinkity project, including:

  • Setting an input directory
  • Copying static assets to the build from a /public directory
  • Using Nunjucks for shortcode processing in markdown

To see the full "what" and "why," head to the .eleventy.js file.

How does the slinkity command differ from eleventy?

You can view slinkity as the "glue" between 11ty and Vite. When using the slinkity command, all arguments are passed directly to the eleventy CLI, except serve and port:

  • serve starts the 11ty dev server in --watch mode to listen for file changes.
  • port is passed to Slinkity's independent Vite server instead of 11ty's Browsersync server.

The CLI checks for Eleventy configs and will look for any custom directories returned, such as input or output. If found, those are passed off to the Vite server so it can look in the right place.

Here's a the full step-by-step for those curious!

01-slinkity-architecture

Authors

👤 Ben Holmes

👤 Anthony Campolo

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2021 Ben Holmes. This project is MIT licensed.


This README was generated with ❤️ by Ben with readme-md-generator and then heavily edited by Anthony.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published