HTML - シンタックスハイライト - prism.js - 先頭の改行の除去(改)


 クラウディア


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」伍長を参考にさせていただきました。

audiobook.jp
AbemaTV 無料体験
健康サポート特集
EMEET 1
ベルリッツ
損保との違い
【usus ウズウズ】
U-NEXT
TikTok Shop 【リピート用プログラム】
EaseUS
サウンドハウス
JETBOY
ネットオークションの相場、統計、価格比較といえばオークファン
薬屋の独り言
earthcar(アースカー)
それがだいじWi-Fi
ハイスピードプラン
アフィリエイトのアクセストレード
Amazonギフトカード
葬送のフリーレン Prime Video
5G CONNECT