
HTML, CSS, JS, PHP 등 언어를 블로그에 올릴 때 플러그인 없이 사용하고 싶어졌다.
Prism.js랑 Highlight.js 중에 고민하다가 Prism.js가 더 가볍다고 해서 Prism.js로 결정했다.
Prism.js 이용하여 구문 강조 하는 방법 알아보자.
구문 강조 (Syntax Highlighter)
구문 강조 파일
구문 강조 파일을 CDN 주소로 테마에 추가하건, 파일 자체를 다운로드 받아서 내 테마에 추가하건 파일이 테마에 추가되어있어야한다.
- CDN 이용
jsDelivr, cdnjs, UNPKG 중 한 곳에서 CDN 주소를 받아서 사용할 수 있다.
위 사이트 중 jsDelivr를 선택, 필요한 언어, 플러그인 등을 선택해봤다.
jsDelivr에서 CDN 주소 복사
-
jsDelivr 접속
-
필요한 언어, 플러그인 선택 » [Show & Configure all links]
-
JS 아래에 있는 [COPY ALL] 선택 » 메모장에 붙여넣기 진행 » CSS 아래에 있는 [COPY ALL] 선택 » 메모장에 붙여넣기 진행
-
얼만큼 선택했는지 확인해볼까?
언어 선택https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-c.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-cpp.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-clike.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-csharp.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-docker.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-excel-formula.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-go.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-java.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-json.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-nginx.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-php.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-powershell.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-scss.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-shell-session.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sass.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-swift.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-visual-basic.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-xml-doc.min.js플러그인 선택https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/show-language/prism-show-language.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/inline-color/prism-inline-color.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/download-button/prism-download-button.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/command-line/prism-command-line.min.js
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js플러그인 CSS 선택https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.css
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.css
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/inline-color/prism-inline-color.min.css
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/command-line/prism-command-line.min.css
-
CND 이용하려니 Functions.php에 추가 해야 할 JS, CSS 파일이 굉장히 많아 지는 것 같다.
-
- 다운로드
Prism 홈페이지에서 js, css 파일들을 다운로드 받을 수 있다.
Prism 홈페이지에서 js, css 파일 다운로드 받는 방법을 알아보자.
다운로드 받는 방법
-
Prism 홈페이지 접속 » [DOWNLOAD] 선택
-
필요한 항목 선택
-
[DOWNLOAD JS] 선택하여 JS 파일 다운로드 » [DOWNLOAD CSS] 선택하여 CSS 파일 다운로드
다운로드 받았다면 웹서버 » wp-content/themes/’테마 이름’ 폴더 내에 업로드한다.
-
테마에 적용
CDN 이용
내 테마의 functions.php 파일에 아래 코드를 추가한다.
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.css' );
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.css' );
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/inline-color/prism-inline-color.min.css' );
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/command-line/prism-command-line.min.css' );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-c.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-cpp.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-clike.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-csharp.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-docker.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-excel-formula.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-go.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-java.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-json.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-nginx.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-php.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-powershell.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-scss.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-shell-session.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sass.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-swift.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-visual-basic.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-xml-doc.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/show-language/prism-show-language.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/inline-color/prism-inline-color.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/download-button/prism-download-button.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/command-line/prism-command-line.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js', array(), '1.29.0', true );
파일 다운로드
내 테마의 functions.php 파일에 아래 코드를 추가한다.
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . '/prism.css' );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . '/prism.js', array(), '1.29.0', true );
구문 강조 사용
<pre><code class="language-[alias]">구문 강조 코드 입력</code></pre>
구문 강조 코드를 넣을 때는 위 코드를 사용해야 하며 [alias] 부분엔 아래 표를 참고하여 사용하고자 하는 언어의 별칭을 입력해야 한다.
별칭은 한 가지만 골라서 작성한다.
예: language-markup, language-js 등…
Languages | Alias |
---|---|
Markup | markup, html, xml, svg, mathml, ssml, atom, rss |
CSS | css |
C-like | clike |
JavaScript | javascript, js |
Bash | bash, sh, shell |
C | c |
C# | csharp, cs, dotnet |
C++ | cpp |
Docker | dockerdockerfile |
Excel Formula | excel-formula, xlsx, xls |
Go | go |
Java | java |
JSON | json, webmanifest |
Markdown | markdown, md |
nginx | nginx |
PHP | php |
PowerShell | powershell |
Python | python, py |
Sass (Sass) | sass |
Shell session | shell-session, sh-session, shellsession |
Sass (SCSS) | scss |
SQL | sql |
Swift | swift |
Visual Basic | visual-basic, vb, vba |
XML doc (.net) | xml-doc |
마무리
prism.js는 한 줄 한 줄 마우스 가져갔을 때 보여지는 효과(hover effect)를 설정할 수 없다.