- 1. 概要
- 2. 設定
- 3. 参考サイト
1. 概要
2026年6月4日、「prism.js」を最新に更新したら、コード記述の先頭に、改行が入るようになってしまいました。
先祖返り?
コード表示の上の方が間延びして見えるので、手を入れます。
2. 設定
「prism.js」自体でなく、サイト全体で、使用している「JavaScript」のコード内に記述します。
わたしの環境は、「Laravel」で「Vue.js」を使用しているので。
resources/js/app.js
に下記を追加します。
// ==========================================================================
// Prism.js Normalize Whitespace プラグインのグローバルカスタム設定
// ==========================================================================
if (Prism.plugins && Prism.plugins.NormalizeWhitespace) {
Prism.plugins.NormalizeWhitespace.setDefaults({
'remove-trailing': false, // 末尾のゴミ改行そのまま
'remove-indent': false, // インデントは残す
'left-trim': false, // 最先頭のトリミングだけを「オフ」にする
'right-trim': false // 末尾のトリミング無効
});
}
Prism.hooks.add('before-sanity-check', function (env)
{
if (env.code && env.element)
{
// 基準となる env.code の先頭に改行コードがある場合のみ作戦を起動
if (/^(\r?\n)/.test(env.code))
{
// 1. 【文字列側の粛清】Prismのハイライト計算用文字列から先頭の改行を消去
env.code = env.code.replace(/^(\r?\n)/, '');
// 2. 【DOM側の粛清】Keep Markupのスキャン対象となるDOMからも先頭の改行を消去
var firstNode = env.element.firstChild;
if (firstNode && firstNode.nodeType === 3)
{
if (/^(\r?\n)/.test(firstNode.nodeValue))
{
firstNode.nodeValue = firstNode.nodeValue.replace(/^(\r?\n)/, '');
}
}
// これにより、両者のインデックス(文字位置)が「0番目=a」で完全に一致します
}
}
});
先に述べた環境故、プロジェクトディレクトリで。
npm run build
これで、コンテンツにアクセスすると、先頭の改行はなくなります。
3. 参考サイト
本ページは、「Gemini」伍長を参考にさせていただきました。
|
|