@reboot-ui/liquidjs
v9.7.0
Published
Liquid template engine by pure JavaScript: compatible to shopify, easy to extend.
Downloads
6
Maintainers
Readme
@reboot-ui/liquidjs
NOTICE This repo is one fork version for liquidjs, only serve for reboot-ui's requirements. If necessary, we are happly to re-contribute feature/bugfix to orignal repo :)
semver of @reboot-ui/liquidjs would keep same major
/minor
with the original repo, all synchronization/modification would be reflected in patch
of version.
liquidjs
A shopify compatible Liquid template engine in pure JavaScript. The purpose of this repo is to provide a standard Liquid implementation for the JavaScript community. All features, filters and tags in shopify/liquid are supposed to be built in LiquidJS, though there are still some differences and limitations (see below).
Version 9 has published, see how to migrate to 9.0.0!
Get Started
Install via npm:
npm install --save liquidjs
var { Liquid } = require('liquidjs');
var engine = new Liquid();
engine
.parseAndRender('{{name | capitalize}}', {name: 'alice'})
.then(console.log); // outputs 'Alice'
Or include the UMD build, a live demo is available on jsfiddle: https://jsfiddle.net/x43eb0z6/. You may need a Promise polyfill for Node.js < 4 and ES5 browsers like IE and Android UC.
<script src="//unpkg.com/liquidjs/dist/liquid.min.js"></script> <!--for production-->
<script src="//unpkg.com/liquidjs/dist/liquid.js"></script> <!--for development-->
Also available from CLI:
echo '{{"hello" | capitalize}}' | npx liquidjs
For detailed documents, see:
- The Wiki Page contains tutorials and advanced topics.
- The API Reference provides detailed descriptions for classes, methods and properties.
Differences and Limitations
- Dynamic file locating (enabled by default), that means layout/partial names are treated as variables in liquidjs. See #51.
- Truthy and Falsy. All values except
undefined
,null
,false
are truthy, whereas in Ruby Liquid all exceptnil
andfalse
are truthy. See #26. - Number. In JavaScript we cannot distinguish or convert between
float
andinteger
, see #59. And when appliedsize
filter, numbers always return 0, which is 8 for integer in ruby, cause they do not have alength
property. - .to_liquid() is replaced by
.toLiquid()
- .to_s() is replaced by JavaScript
.toString()
Features that available on shopify website but not on shopify/liquid repo will not be implemented in this repo, but there're some plugins available: https://github.com/harttle/liquidjs/wiki/Plugins
Related Packages
- gulp-liquidjs: A shopify compatible Liquid template engine for Gulp using liquidjs.
- grunt-liquify: A Grunt task to process Liquid using liquidjs. Use it to add Liquid magic to your scripts and css assets.
- react-liquid: Liquid templating language component for React
- @11ty/eleventy: A simpler static site generator. An alternative to Jekyll. Written in JavaScript. Transforms a directory of templates (of varying types) into HTML.
Contribute Guidelines
- Code Style: https://github.com/standard/eslint-config-standard,
npm run lint
to check locally. - Testing: make sure test cases still pass, use
npm test
to check locally. - Commit Message: align to The Angular Commit Message Guidelines, especially the Type identifier, to allow the semantic-release bot do the work.
Contributors ✨
This project follows the all-contributors specification. Contributions of any kind are welcome! Thanks goes to these wonderful people: