A pure Go implementation of Shopify Liquid templates with Jekyll compatibility and advanced rendering features.
Liquid is a pure Go implementation of the Shopify Liquid template language, providing a secure and extensible templating engine for Go applications. It was originally developed for Gojekyll, a Go port of the Jekyll static site generator, and includes optional Jekyll-specific extensions while maintaining compatibility with standard Liquid.
Go developers who need to integrate Shopify Liquid templating into their applications, particularly those building static site generators, web applications, or content management systems that require Liquid template support. It's also suitable for developers migrating Jekyll-based projects to Go.
Developers choose this library for its high compatibility with Shopify Liquid, built-in security features like sandboxed execution, and extensible architecture that supports custom filters, tags, and template stores. The optional Jekyll extensions make it uniquely valuable for projects migrating from Ruby-based Jekyll to Go.
A Liquid template engine in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements the core Shopify Liquid specification with support for tags, filters, and template inheritance, ensuring reliable migration from existing Liquid templates.
Offers optional Jekyll-specific features like dot notation in assign tags, making it ideal for porting Jekyll-based projects to Go without template rewrites.
Provides sandboxed execution by default and the FRender method for implementing timeouts and output size limits, crucial for handling untrusted templates safely.
Allows custom template stores, drops, filters, and tags, enabling flexible integration into diverse Go applications, from static site generators to web apps.
Missing key Shopify Liquid features like filter keyword parameters and warn/lax error modes, which can break compatibility with advanced templates.
Vulnerable to DoS attacks out-of-the-box; requires manual implementation of FRender with custom writers for resource limits, adding complexity for production use.
Drops use a different design (ToLiquid method) compared to Shopify's Ruby implementation, potentially causing issues when porting complex drops from Ruby.