플러그인 설치

이 페이지

EmDash 플러그인은 두 가지 방법으로 설치할 수 있습니다: 관리자 대시보드를 통해 마켓플레이스에서 설치하거나, Astro 구성에 직접 추가합니다. 마켓플레이스 플러그인은 항상 샌드박스에서 실행됩니다; 구성 기반 플러그인은 선언된 배열(sandboxed: [] vs plugins: [])에 따라 샌드박스 또는 인프로세스로 실행됩니다.

마켓플레이스에서

관리자 대시보드에는 플러그인을 검색, 설치 및 관리할 수 있는 마켓플레이스 브라우저가 포함되어 있습니다.

사전 요구사항

마켓플레이스 플러그인을 설치하려면 사이트에 다음이 필요합니다:

  1. 샌드박스 러너 구성 — 마켓플레이스 플러그인은 격리된 런타임에서 실행되며 샌드박스 러너가 필요합니다. 다음 구성으로 활성화합니다:

    import { defineConfig } from "astro/config";
    import emdash from "emdash/astro";
    
    export default defineConfig({
      integrations: [
        emdash({
          marketplace: "https://marketplace.emdashcms.com",
          sandboxRunner: "@emdash-cms/sandbox-cloudflare",
        }),
      ],
    });
  2. 관리자 액세스 — 관리자만 플러그인을 설치하거나 제거할 수 있습니다.

탐색 및 설치

  1. 관리자 패널을 열고 플러그인 > 마켓플레이스로 이동합니다
  2. 플러그인을 탐색하거나 검색합니다
  3. 플러그인 카드를 클릭하여 상세 페이지를 확인합니다 — README, 스크린샷, 기능 및 보안 감사 결과
  4. 설치를 클릭합니다
  5. 기능 동의 대화상자를 검토합니다 — 플러그인이 액세스할 수 있는 항목이 표시됩니다
  6. 설치를 확인합니다

플러그인이 다운로드되어 사이트의 R2 버킷에 저장되고 샌드박스 러너에 로드됩니다. 즉시 활성화됩니다.

기능 동의

설치 전에 플러그인이 액세스해야 하는 항목을 나열하는 대화상자가 표시됩니다:

기능의미
content:read콘텐츠 읽기
content:write콘텐츠 생성, 업데이트 및 삭제
media:read미디어 라이브러리에 액세스
media:write미디어 업로드 및 관리
network:request특정 호스트에 네트워크 요청 수행

보안 감사

마켓플레이스의 모든 플러그인 버전은 자동 보안 감사를 거쳤습니다. 감사 결과는 플러그인 카드에 표시됩니다:

  • Pass — 문제가 발견되지 않음
  • Warn — 경미한 우려 사항 플래그됨(결과 검토)
  • Fail — 중대한 보안 문제 감지됨

플러그인 상세 페이지에서 개별 결과와 심각도를 포함한 전체 감사 보고서를 볼 수 있습니다.

업데이트

설치된 플러그인의 최신 버전이 사용 가능한 경우:

  1. 관리자 패널에서 플러그인으로 이동합니다
  2. 마켓플레이스 플러그인에 업데이트 가능 배지가 표시됩니다
  3. 업데이트를 클릭하여 변경 로그 및 기능 변경 사항을 확인합니다
  4. 새 버전에 추가 기능이 필요한 경우 차이를 확인하고 승인해야 합니다
  5. 업데이트를 확인합니다

제거

  1. 관리자 패널에서 플러그인으로 이동합니다
  2. 제거할 마켓플레이스 플러그인을 클릭합니다
  3. 제거를 클릭합니다
  4. 플러그인의 저장된 데이터를 유지할지 삭제할지 선택합니다
  5. 확인합니다

플러그인의 샌드박스 코드가 R2 버킷에서 제거되고 즉시 실행이 중지됩니다.

구성에서

네이티브 플러그인 — 자신의 코드 또는 npm을 통해 설치된 패키지 — 은 Astro 구성에 직접 추가됩니다. 다음 예제는 SEO 플러그인을 등록합니다:

import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import seoPlugin from "@emdash-cms/plugin-seo";

export default defineConfig({
  integrations: [
    emdash({
      plugins: [
        seoPlugin({ generateSitemap: true }),
      ],
    }),
  ],
});

네이티브 플러그인:

  • 인프로세스로 실행됩니다(샌드박스 아님)
  • Node.js API에 전체 액세스 권한이 있습니다
  • 빌드 시 및 모든 서버 시작 시 로드됩니다
  • 관리자 UI에서 설치하거나 제거할 수 없습니다

마켓플레이스 vs. 구성 — 언제 어떤 것을 사용할지

마켓플레이스(샌드박스)구성(네이티브 또는 인프로세스 샌드박스)
설치 방법관리자 UI에서 원클릭코드 변경 + npm install + 배포
실행구성된 러너를 통한 샌드박스 런타임인프로세스(또는 sandboxed: [] 아래 나열되고 러너가 사용 가능한 경우 샌드박스)
기능샌드박스 브리지에 의해 시행 — ctx.* 게이팅 + 런타임 격리ctx.* 게이팅만(인프로세스 플러그인은 직접 fetch(), env, imports를 통해 우회 가능)
Node.js API사용 불가전체 액세스(인프로세스만)
React 관리 페이지아니요(대신 Block Kit)예(네이티브 플러그인)
PT 렌더링 컴포넌트아니요예(네이티브 플러그인)
업데이트관리자에서 원클릭버전 범프 + 배포
최적대부분의 플러그인빌드 시 통합이 필요한 플러그인