@diplodoc/liquid

中文文档
1.5.3发布于 2026/08/06MITTypeScriptCommonJS构建来源已验证近 30 天下载 8849

A small and fast implementation of basic Liquid syntax for processing YFM (Yandex Flavored Markdown) documents

原始使用文档
文档目录11 节
  1. Features
  2. Installation
  3. Usage
  4. Basic Example
  5. Processing Snippets
  6. Processing JSON
  7. API
  8. Functions
  9. Types
  10. Configuration
  11. License

english | русский


NPM version Quality Gate Status Coverage Maintainability Rating Reliability Rating Security Rating

@diplodoc/liquid

A small and fast implementation of basic Liquid syntax for processing YFM (Yandex Flavored Markdown) documents. Provides template processing capabilities including variable substitutions, conditions, cycles (loops), and frontmatter handling.

Features

  • Variable substitutions — {{ variable }} syntax
  • Conditional blocks — {% if condition %}...{% endif %}
  • Cycle/loop blocks — {% for item in collection %}...{% endfor %}
  • Frontmatter processing — YAML frontmatter extraction and processing
  • Source map support — Optional source maps for debugging
  • Custom filters — Extensible filter system
  • Code block preservation — Handles code blocks without processing Liquid syntax inside

Installation

npm install @diplodoc/liquid

Usage

Basic Example

import {createContext, liquidDocument} from '@diplodoc/liquid';

// Create a context with logger and settings
const context = createContext({
  info: console.log,
  warn: console.warn,
  error: console.error,
});

// Process a document with variables
const template = `
---
title: {{ title }}
---

Hello, {{ name }}!

{% if showDetails %}
Details: {{ details }}
{% endif %}
`;

const vars = {
  title: 'My Document',
  name: 'World',
  showDetails: true,
  details: 'Some important information',
};

const result = liquidDocument.call(context, template, vars);
// Result:
// ---
// title: My Document
// ---
//
// Hello, World!
//
// Details: Some important information

Processing Snippets

import {liquidSnippet} from '@diplodoc/liquid';

const snippet = 'Hello, {{ name }}!';
const vars = {name: 'World'};

const result = liquidSnippet.call(context, snippet, vars);
// Result: "Hello, World!"

Processing JSON

import {liquidJson} from '@diplodoc/liquid';

const json = {
  title: '{{ title }}',
  items: ['{{ item1 }}', '{{ item2 }}'],
};

const vars = {
  title: 'My Title',
  item1: 'First',
  item2: 'Second',
};

const result = liquidJson.call(context, json, vars);
// Result: { title: 'My Title', items: ['First', 'Second'] }

API

Functions

  • liquidDocument(input, vars, sourcemap?) — Processes a full YFM document with frontmatter
  • liquidSnippet(input, vars, sourcemap?) — Processes a Liquid template snippet (without frontmatter)
  • liquidJson(json, vars) — Recursively processes Liquid syntax in JSON objects
  • createContext(logger, settings?) — Creates a Liquid context for processing

Types

  • LiquidContext — Context object containing logger, settings, and optional path
  • LiquidSettings — Configuration options for Liquid processing
  • SourceMap — Source map for tracking transformations

See TypeScript definitions for detailed API documentation.

Configuration

You can configure Liquid processing behavior via LiquidSettings:

const context = createContext(logger, {
  conditions: true, // Enable/disable conditions
  cycles: true, // Enable/disable cycles
  substitutions: true, // Enable/disable substitutions
  conditionsInCode: false, // Process conditions in code blocks
  keepNotVar: false, // Keep {{ var }} if variable not found
});

License

MIT

版本与发布记录

@diplodoc/liquid 共发布 19 个版本,首次发布于 2025/02/28;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.5.3latest2026/08/063 个月前
1.5.22026/05/285 个月前
1.5.12026/05/195 个月前
0.0.0-rc-not-var-21673420971not-var2026/02/049 个月前
1.5.02025/12/2710 个月前
1.4.02025/12/2210 个月前

其他发布通道:false → 0.0.0-rc-not-var-regexp-202510281012,not-var → 0.0.0-rc-not-var-21673420971。

关于 @diplodoc/liquid 的常见问题

@diplodoc/liquid 是什么?

A small and fast implementation of basic Liquid syntax for processing YFM (Yandex Flavored Markdown) documents

如何安装 @diplodoc/liquid?

在项目目录运行 npm install @diplodoc/liquid,或使用 pnpm add / yarn add / bun add。

@diplodoc/liquid 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@diplodoc/liquid 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@diplodoc/liquid 可以商用吗?

@diplodoc/liquid 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@diplodoc/liquid 的下载量有多少?

根据 npm 官方下载统计,@diplodoc/liquid 在 2026/10/13 – 2026/11/11 这 30 天内被下载 8,849 次,日均约 295 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@diplodoc/liquid 还在维护吗?

最新版本 1.5.3 发布于 2026/08/06(3 个月前);至今共发布 19 个版本,其中过去 12 个月发布了 6 个;首次发布于 2025/02/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。