๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
etc/๊ธฐ๋ก

ํ‹ฐ์Šคํ† ๋ฆฌ ์ฝ”๋“œ๋ธ”๋Ÿญ ํ…Œ๋งˆ ๋ณ€๊ฒฝํ•˜๊ธฐ(highlight.js)

by vellahw 2023. 5. 9.

๐Ÿ’ญ

์—ฌํƒœ ์™ธ๋ถ€์—์„œ ๋Œ์–ด๋‹ค๊ฐ€ html/css ๋ณ€๊ฒฝ๊นŒ์ง€ ํ•ด์„œ ํ…Œ๋งˆ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— ๊ตณ์ด?๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ‹ฐ์Šคํ† ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ปฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณต๋ถ™ํ•ด๋‹ค๊ฐ€ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ตญ ๊ฐ€๋…์„ฑ ํ›„์ง์„ ์ฐธ์ง€ ๋ชปํ•˜๊ณ  highlight.js๋ฅผ ์ด์šฉํ•ด ํ…Œ๋งˆ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฒŒ์‹œ๊ธ€ ๋ฐœํ–‰ ์ „์—” ์ฝ”๋“œ๋ธ”๋Ÿญ์ด ๊ทธ๋‹ฅ ๋ชป์ƒ๊ธฐ๊ณ  ๊ฐ€๋…์„ฑ ๊ตฌ๋ ค๋ณด์ด์ง€ ์•Š์•„์„œ ์• ์จ ์™ธ๋ฉดํ•œ๊ฑฐ๊ธฐ๋„ ํ•จ...

์•„๋ฌดํŠผ ๊ฒฐ๊ณผ๋Š” ๋งค์šฐ ๋งŒ์กฑ์Šค๋Ÿฝ๊ณ  ์†์ด ๋‹ค ์‹œ์›ํ•˜๋‹ค ใ…Žใ…Ž


 

โœ… highlight.js ์‚ฌ์šฉํ•˜๊ธฐ

highlight.js๋ฅผ ์ด์šฉํ•˜๊ธฐ ์ „ ์ฝ”๋“œ ๋ฌธ๋ฒ• ๊ฐ•์กฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ ์šฉ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ•ด์ œ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค!

 

 

highlight.js usage ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณด๊ฒŒ ๋ ํ…๋ฐ ๋ฐ”๋กœ ๋ณด์ด๋Š” ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์ค€๋‹ค.

 

<!-- ์ฝ”๋“œ๋ธ”๋Ÿญ ํ…Œ๋งˆ ๋ณ€๊ฒฝ -->
<link rel="stylesheet" href="/path/to/styles/default.min.css">
<script src="/path/to/highlight.min.js"></script>
<script>hljs.highlightAll();</script>

 

๊ทธ๋ฆฌ๊ณ  ์Šคํ‚จํŽธ์ง‘-html ํŽธ์ง‘-HTML์—์„œ head ํƒœ๊ทธ ์•ˆ ์•„๋ฌด๊ณณ์—๋‚˜ ๋ณต์‚ฌํ•œ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค. ๋‚˜๋Š” head ํƒœ๊ทธ ์‹œ์ž‘๋ถ€๋ถ„์— ๋ถ™์—ฌ์คฌ๋‹ค.

 

 

 

โœ”๏ธ ํ•˜์ด๋ผ์ดํŠธ.js์—” ๊ต‰์žฅํžˆ ๋งŽ์€ ํ…Œ๋งˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

ํ…Œ๋งˆ ์ƒ˜ํ”Œ ํŽ˜์ด์ง€์—์„œ ๋งŽ์€ ํ…Œ๋งˆ๋ฅผ ์–ธ์–ด๋ณ„๋กœ ์„ ํƒํ•˜์—ฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์™ผ์ชฝ์˜ Themes ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ๋งˆ์Œ์— ๋“œ๋Š” ํ…Œ๋งˆ๋ฅผ ๊ณ ๋ฅธ ํ›„ ์œ„์—์„œ ๋ณต์‚ฌํ•œ ์ฝ”๋“œ์˜ link ํƒœ๊ทธ href์—์„œ min.css ์•ž์˜ default๋งŒ ํ•ด๋‹น ํ…Œ๋งˆ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

 

๋Œ€๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋กœ, ๋„์–ด์“ฐ๊ธฐ๋Š” ํ•˜์ดํ”ˆ(-)์œผ๋กœ, ์Šฌ๋ž˜์‰ฌ(/)๋Š” ๊ทธ๋ƒฅ ์“ฐ๋ฉด ๋˜๋”๋ผ.

๋‚˜๋Š” Base16/Railscasts๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

 

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/styles/base16/railscasts.min.css">

 

์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ํ•˜๊ณ  ์Šคํ‚จํŽธ์ง‘์—์„œ ์ ์šฉ-์ƒˆ๋กœ๊ณ ์นจ ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

โœ… ํฐํŠธ ๋ณ€๊ฒฝํ•˜๊ธฐ

ํ…Œ๋งˆ๋ฅผ ๋ฐ”๊ฟ”์ค˜๋„ ์ค„๊ฐ„๊ฒฉ๊ณผ ํฐํŠธ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•˜๋‹ค.

ํฐํŠธ๋Š” ๊ตฌ๊ธ€ํฐํŠธ์—์„œ ์›ํ•˜๋Š” ํฐํŠธ๋ฅผ ๊ฐ€์ ธ์™€ html์— ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค. 

๋‚˜๋Š” Open Sans Regular 400 ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

<!-- ์ฝ”๋“œ๋ธ”๋Ÿญ ํฐํŠธ ๋ณ€๊ฒฝ -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet">

 

์›ํ•˜๋Š” ํฐํŠธ๋ฅผ ํด๋ฆญํ•ด ๋“ค์–ด๊ฐ€๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ขŒ์ธก ๋ฉ”๋‰ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

Review ํƒญ์—์„œ ์ž์‹ ์ด ์„ ํƒํ•œ ํฐํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ , Use on the web ํƒญ์˜ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ๋ฅผ htmlํŽธ์ง‘๊ธฐ์˜ <head> ํƒœ๊ทธ ๋‚ด ์•„๋ฌด๊ณณ์—๋‚˜ ๋ถ™์—ฌ์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํฐํŠธ ํŒจ๋ฐ€๋ฆฌ์— ๋Œ€ํ•œ css๋„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๊ฒŒ ๋‘ ๋ฒˆ์งธ ์ฝ”๋“œ์ด๋‹ค.

css ํŽธ์ง‘๊ธฐ์—์„œ ํ‚ค์›Œ๋“œ code๋กœ ๊ฒ€์ƒ‰ํ•ด์„œ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์•„์˜ˆ code๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

code {
	font-family: 'Open Sans', sans-serif;
	line-height: 155%; 
	font-size: 0.9em;
}

line-height๋กœ ์ค„๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•˜๊ณ  ํฐํŠธ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋„ˆ๋ฌด ์ž‘์•„ ํ‚ค์›Œ์คฌ๋‹ค.

 

 

๐ŸŽŠ ์ ์šฉ ์™„๋ฃŒ 

๋ณดํ†ต ์ฝ”๋“œ๋Š” Roboto Mono ๊ฐ™์€ ๋™๊ธ€๋™๊ธ€ํ•˜๋ฉด์„œ ์‚์นจ์žˆ๋Š”? ํฐํŠธ๋กœ ๋ณด์—ฌ์ง€๊ณค ํ•˜์ง€๋งŒ tab ๊ฐ„๊ฒฉ์ด ๋„ˆ๋ฌด ๋ฒŒ์–ด์ ธ์„œ.. ใ… ใ… 

Open Sans๋„ ๊น”๋”ํ•˜๋‹ˆ ๊ดœ์ฐฎ์ง€ ์•Š๋‚˜ ใ…Žใ…Ž

๊ทผ๋ฐ ํฌ์ŠคํŒ… ํ•˜๋ฉด์„œ ์ฒดํฌํ•ด๋ณด๋‹ˆ๊นŒ ์ด ํ…Œ๋งˆ ์‘๊ทผ ์ž˜ ์•ˆ ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‹ค์‹œ ๋ฐ”๊ฟ”๋ด์•ผ๊ฒ ๋‹ค.. ์•„ํ†ฐ ์› ๋ธ”๋ž™์ด ๊ฐ€์žฅ ๋ฌด๋‚œํ•œ ๊ฒƒ ๊ฐ™์Œ

 

 


์ฐธ๊ณ 

๋Œ“๊ธ€