npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

monaco-liquid

v0.0.2

Published

Liquid templating language support for Monaco Editor with Zod schema validation

Downloads

537

Readme

Liquid Language for Monaco Editor

This package provides a seamless integration of the Liquid templating language into the Monaco Editor, offering syntax highlighting, validation, hover support, and autocompletion capabilities.

Features

  • Language Registration: Registers Liquid as a language within Monaco Editor with support for Liquid's syntax, including tags, filters, variables, and expressions.

  • Syntax Highlighting: Differentiates between Liquid tags, output delimiters, comments, strings, variables, and HTML content.

  • Hover Support: Displays type information for variables based on schemas defined using Zod.

  • Validation: Checks for unmatched or improperly nested Liquid tags and output delimiters.

  • Autocomplete Suggestions: Provides suggestions for Liquid syntax, variables, and properties based on the provided schemas.


Installation

Install the package via npm:

npm install monaco-liquid

Usage

Register the Liquid Language

import * as monaco from 'monaco-editor';
import { registerLiquidLanguage, setModelLiquidValidation } from 'monaco-liquid';
import { z } from 'zod';

// Initialize Monaco Editor
const editor = monaco.editor.create(document.getElementById('container'), {
    language: 'liquid',
    value: '{% if user %}\n  Hello, {{ user.name }}!\n{% endif %}',
    theme: 'vs-dark',
});

// Register Liquid language
registerLiquidLanguage(monaco);

// Define schemas using Zod
const schemas = {
    user: z.object({
        name: z.string(),
        age: z.number(),
        isAdmin: z.boolean(),
    }),
};

// Attach validation and schemas to the editor model
const model = editor.getModel();
if (model) {
    setModelLiquidValidation(monaco, model, schemas);
}

API

registerLiquidLanguage(monacoInstance: typeof monaco): void

Registers the Liquid language with the Monaco Editor, enabling syntax highlighting, hover support, and autocompletion.

setModelLiquidValidation(monacoInstance: typeof monaco, model: monaco.editor.ITextModel, schemas: Record<string, ZodSchema<unknown>>): void

Associates schemas with the editor model and validates Liquid syntax.

  • Parameters:
    • monacoInstance: The Monaco instance.
    • model: The Monaco text model where Liquid content is written.
    • schemas: A record of Zod schemas defining the structure of variables used in Liquid templates.

Schema Integration

Schemas define the structure and types of variables in your Liquid templates. The package uses Zod schemas to enable detailed hover information and autocompletion for nested properties.

Example

const schemas = {
    product: z.object({
        name: z.string(),
        price: z.number(),
        tags: z.array(z.string()),
    }),
};

Autocomplete

When typing product., the editor will suggest name, price, and tags. For nested properties, suggestions are context-aware.

Hover

Hovering over product.price will display the type as Number.