字符串中粉笔标记的模板文字

chalk tagged template literals within strings

我正在使用 chalk 并以编程方式构建字符串(请参阅下面代码段中的 str)。

我希望粉笔像尊重 tagged termplate literals.

一样尊重我的弦

怎么做到的?

const chalk = require('chalk');
const p = chalk`{bold BOLD}`

const str = `{bold BOLD}`
const q = chalk`${str}`

console.log(p == q ? "ok" : "!ok")

如您所见,pq 是不同的 - 代码总是输出 !ok.

我找到了一个 proxy for chalk 可以做到这一点

const chalk = require("chalk");

const chalkish = (parts, ...substitutions) => {
  const rawResults = [];
  const cookedResults = [];
  for (var i = 0; i < parts.length; i++) {
    rawResults.push(parts.raw[i]);
    cookedResults.push(parts[i]);
    if (i < substitutions.length) {
      rawResults.push(substitutions[i]);
      cookedResults.push(substitutions[i]);
    }
  }

  const chalkParts = [cookedResults.join("")];
  chalkParts.raw = [rawResults.join("")];

  return (chalk(chalkParts));
}