Package Exports
- liquidjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (liquidjs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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: