@budibase/string-templates

中文文档
3.50.0发布于 2026/10/19MPL-2.0TypeScriptESM + CJS近 30 天下载 8308

Handlebars wrapper for Budibase templating.

原始使用文档
文档目录4 节
  1. Date formatting
  2. Template format
  3. Usage
  4. Development

String templating

This package provides a common system for string templating across the Budibase Builder, client and server. The templating is provided through the use of Handlebars an extension of Mustache which is capable of carrying out logic. We have also extended the base Handlebars functionality through the use of a set of helpers provided through the handlebars-helpers package.

We have not implemented all the helpers provided by the helpers package as some of them provide functionality we felt would not be beneficial. The following collections of helpers have been implemented:

  1. Math - a set of useful helpers for carrying out logic pertaining to numbers e.g. avg, add, abs and so on.
  2. Array - some very specific helpers for use with arrays, useful for example in automations. Helpers like first, last, after and join can be useful for getting particular portions of arrays or turning them into strings.
  3. Number - unlike the math helpers these are useful for converting numbers into useful formats for display, e.g. bytes, addCommas and toPrecision.
  4. URL - very specific helpers for dealing with URLs, such as encodeURI, escape, stripQueryString and stripProtocol. These are primarily useful for building up particular URLs to hit as say part of an automation.
  5. String - these helpers are useful for building strings and preparing them for display, e.g. append, camelcase, capitalize and ellipsis.
  6. Comparison - these helpers are mainly for building strings when particular conditions are met, for example and, or, gt, lt, not and so on. This is a very extensive set of helpers but is mostly as would be expected from a set of logical operators.
  7. Object - useful operator for parsing objects, as well as converting them to JSON strings.
  8. Regex - allows performing regex tests on strings that can be used in conditional statements.
  9. Date - last but certainly not least is a moment based date helper, which can format ISO/timestamp based dates into something human-readable. An example of this would be {{date dateProperty "DD-MM-YYYY"}}.

Date formatting

This package uses the standard method for formatting date times, using the following syntax:

InputExampleDescription
YYYY20144 or 2 digit year. Note: Only 4 digit can be parsed on strict mode
YY142 digit year
Y-25Year with any number of digits and sign
Q1..4Quarter of year. Sets month to first month in quarter.
M MM1..12Month number
MMM MMMMJan..DecemberMonth name in locale set by moment.locale()
D DD1..31Day of month
Do1st..31stDay of month with ordinal
DDD DDDD1..365Day of year
X1410715640.579Unix timestamp
x1410715640579Unix ms timestamp

Template format

There are two main ways that the templating system can be used, the first is very similar to that which would be produced by Mustache - a single statement:

Hello I'm building a {{uppercase adjective}} string with Handlebars!

In the statement above provided a context of {adjective: "cool"} will produce a string of Hello I'm building a COOL string with Handlebars!. Here we can see an example of how string helpers can be used to make a string exactly as we need it. These statements are relatively simple; we can also stack helpers as such: {{ uppercase (remove string "bad") }} with the use of parenthesis.

The other type of statement that can be made with the templating system is conditional ones, that appear as such:

Hello I'm building a {{ #gte score "50" }}Great{{ else }}Bad{{ /gte }} string with Handlebars!

In this string we can see that the string Great or Bad will be inserted depending on the state of the score context variable. The comparison, string and array helpers all provide some conditional operators which can be used in this way. There will also be some operators which will be built with a very similar syntax but will produce an iterative operation, like a for each - an example of this would be the forEach array helper.

Usage

Usage of this templating package is through one of the primary functions provided by the package - these functions are as follows:

  1. processString - async (string, object) - given a template string and a context object this will build a string using our pre-processors, post-processors and handlebars.
  2. processObject - async (object, object) - carries out the functionality provided by processString for any string inside the given object. This will recurse deeply into the provided object so for very large objects this could be slow.
  3. processStringSync - (string, object) - a reduced functionality processing of strings which is synchronous, like functions provided by Node (e.g. readdirSync)
  4. processObjectSync - (object, object) - as with the sync'd string, recurses an object to process it synchronously.
  5. makePropSafe - (string) - some properties cannot be handled by Handlebars, for example Table 1 is not valid due to spaces found in the property name. This will update the property name to [Table 1] wrapping it in literal specifiers so that it is safe for use in Handlebars. Ideally this function should be called for every level of an object being accessed, for example [Table 1].[property name] is the syntax that is required for Handlebars.
  6. isValid - (string) - checks the given string for any templates and provides a boolean stating whether it is a valid template.
  7. getManifest - returns the manifest JSON which has been generated for the helpers, describing them and their params.

Development

This library is built with Rollup as many of the packages built by Budibase are. We have built the string templating package as a UMD so that it can be used by Node and Browser based applications. This package also builds Typescript stubs which when making use of the library will be used by your IDE to provide code completion. The following commands are provided for development purposes:

  1. yarn build - will build the Typescript stubs and the bundle into the dist directory.
  2. yarn test - runs the test suite which will check various helpers are still functioning as expected and a few expected use cases.
  3. yarn dev - an internal command which is used by lerna to watch and build any changes to the package as part of the main yarn dev of the repo.

It is also important to note this package is managed in the same manner as all other in the mono-repo, through lerna.

版本与发布记录

@budibase/string-templates 共发布 3,156 个版本,首次发布于 2021/01/23;过去 12 个月发布了 152 个版本。

版本发布日期距今
3.50.0latest2026/10/1920 天前
3.49.02026/10/1227 天前
3.48.02026/10/051 个月前
3.47.02026/09/281 个月前
3.46.02026/09/211 个月前
3.45.02026/09/141 个月前

其他发布通道:develop → 2.11.27-alpha.1,2.12.6-alpha.1 → 2.12.6-alpha.1,2.12.8 → 2.12.8,2.12.12 → 2.12.12,2.13.0 → 2.13.0,2.13.2 → 2.13.2。

关于 @budibase/string-templates 的常见问题

@budibase/string-templates 是什么?

Handlebars wrapper for Budibase templating.

如何安装 @budibase/string-templates?

在项目目录运行 npm install @budibase/string-templates,或使用 pnpm add / yarn add / bun add。

@budibase/string-templates 支持 TypeScript 吗?

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

@budibase/string-templates 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@budibase/string-templates 可以商用吗?

@budibase/string-templates 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@budibase/string-templates 的下载量有多少?

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

@budibase/string-templates 还在维护吗?

最新版本 3.50.0 发布于 2026/10/19(20 天前);至今共发布 3156 个版本,其中过去 12 个月发布了 152 个;首次发布于 2021/01/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。