strapiのMarkdownエディタのプレビューのCSSを変更してみる

4 min read読了の目安(約4200字

strapiのBlog Starterを使い、管理画面にあるMarkdownエディタのプレビューのCSSを変更してみます。

strapiのプロジェクトは下記のものを使用しています。

https://zenn.dev/mseto/articles/strapi-starter-blog

変更前

デフォルトで用意されている記事を編集して試します。
メニューから"Articles"を選択し、テスト用の記事をクリックします。
今回は"Id"が6の記事を選択しました。

"Articles"を選択し、テスト用の記事をクリック

今回はマーカーのスタイルを変更してみます。
"Content"に==テスト==と入力し、"Switch to preview"(または"プレビューに切り替える")をクリックします。
"Content"にと入力し、"Switch to preview"(または"プレビューに切り替える")をクリック

マーカーが薄い黄色で表示されていることを確認します。
マーカーが薄い黄色で表示されていることを確認

プレビューのCSSを変更

プレビューのCSSは下記にあります。

backend/node_modules/strapi-plugin-content-manager/admin/src/components/PreviewWysiwyg/Wrapper.js

これを下記にコピーします。

backend/extensions/content-manager/admin/src/components/PreviewWysiwyg/Wrapper.js

マーカーはmarkタグでマークアップされているのでmarkタグにスタイルを追加します。

backend/extensions/content-manager/admin/src/components/PreviewWysiwyg/Wrapper.js
import styled from 'styled-components';

/* eslint-disable */

const Wrapper = styled.div`
  max-height: 555px;
  min-height: 294px;
  overflow: auto;
  padding: 20px 20px 0 20px;
  font-size: 16px;
  background-color: #fff;
  line-height: 24px !important;
  font-family: 'Lato';
  cursor: text;

  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    margin-block-start: 10px;
    margin-block-end: 10px;
    font-family: 'Lato';
  }

  h1 {
    font-size: 36px;
    font-weight: 600;
  }

  h2 {
    font-size: 30px;
    font-weight: 500;
  }

  h3 {
    font-size: 24px;
    font-weight: 500;
  }

  h4 {
    font-size: 20px;
    font-weight: 500;
  }

  blockquote {
    margin-top: 41px;
    margin-bottom: 34px;
    font-size: 16px;
    font-weight: 400;
    border-left: 5px solid #eee;
    font-style: italic;
    padding: 10px 20px;
  }

  img {
    max-width: 100%;
  }

  table {
    font-size: 13px;
    thead {
      background: rgb(243, 243, 243);
      tr {
        height: 43px;
      }
    }
    tr {
      border: 1px solid #c6cbd1;
    }
    th,
    td {
      padding: 0 25px;
      border: 1px solid #c6cbd1;
      border-bottom: 0;
      border-top: 0;
    }

    tbody {
      tr {
        height: 54px;
      }
    }
  }

  pre,
  code {
    font-size: 13px;
    font-family: 'Lato';
    border-radius: 3px;
    background-color: #002b36;
  }

  /* Inline code */
  p,
  pre,
  td {
    > code {
      color: #839496;
    }
  }

  /* 追加 */
  mark {
    background:linear-gradient(transparent 60%, #ffff66 60%);
    font-weight:bold;
  }

  .warning {
    background-color: #faa684;
    padding: 30px;
    border-radius: 3px;
  }
  .tip {
    background-color: ${props => props.theme.main.colors.darkBlue};
    padding: 30px;
    border-radius: 3px;
  }

  .footnote-ref,
  .footnote-backref {
    color: #007bff;
  }

  ${({ isFullscreen }) => {
    if (isFullscreen) {
      return `
        max-height: calc(100% - 70px) !important;
        margin-bottom: 0;
        margin-top: 9px;
        padding: 10px 20px;
        overflow: auto;
      `;
    }
  }}


`;

export default Wrapper;

確認

管理画面をカスタマイズした場合、strapiは下記コマンドで起動します。

$ yarn develop --watch-admin

通常strapiは (http://localhost:1337/)で起動しますが、--watch-adminのオプションを付けた場合、(http://localhost:8000)で起動します。

こちらの環境ではまずhttp://localhost:1337/で起動し、少し時間がかかってからhttp://localhost:8000で起動しました。

変更前と同様に記事を編集し、"Switch to preview"(または"プレビューに切り替える")をクリックして確認します。
"Switch to preview"(または"プレビューに切り替える")をクリックして確認

スタイルが変更されていれば成功です。
--watch-adminオプションを付けた場合だけ変更が反映されている状態なので、下記コマンドでビルドし、通常起動時にも変更が反映されるようにします。

$ yarn build

このスタイル変更はstrapi管理画面のみのもので、フロントで表示するMarkdownのスタイルは別途変更する必要があります。

strapiの管理画面のカスタマイズについて

同様にstrapiの管理画面は

./node_modules/strapi-admin/admin/src/

にある変更したいファイルを

./admin/src/

にコピーし、そのファイルを変更することでカスタマイズできます。

たとえば、./node_modules/strapi-admin/admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.jsの場合は./admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.jsにコピーして編集することでカスタマイズできます。