Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

업그레이드

이전 버전에서 업그레이드하는 경우, 중단된 변경 사항과 마이그레이션 단계에 대한 업그레이드 가이드를 참조하시기 바랍니다.

소개

MJML은 반응형 이메일 코딩 과정을 간소화하기 위해 특별히 설계된 마크업 언어입니다. 그 의미론적 구문은 용이성과 단순성을 보장하며, 표준 구성 요소의 광범위한 라이브러리는 개발을 가속화하고 이메일 코드베이스의 복잡성을 줄입니다. MJML의 오픈 소스 엔진은 베스트 프랙티스에 맞는 고품질의 반응형 HTML을 생성합니다. Outlook 작업에서의 불만을 경험하셨다면, 이 패키지는 여러분을 위해 맞춰졌습니다.

우리의 MJML 구현은 공식 MJML API에 대한 래퍼 역할을 합니다. 이를 통해 PHP 내에서 직접 MJML을 HTML로 편리하게 컴파일할 수 있습니다. NodeJS 없이. 이 패키지는 NodeJS 및 MJML CLI를 설치하는 번거로움 없이 MJML을 통합하고자 하는 PHP 애플리케이션에 적합합니다.

예제

// Laravel 없이
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// 축소된 HTML
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Laravel과 함께
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Laravel과 축소된 HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

설치

  1. 먼저, composer.json 파일에 다음을 추가하여 패키지가 설치될 때 운영 체제에 맞는 올바른 바이너리를 가져오도록 지시합니다. 바이너리는 install, update 또는 dump-autoload를 실행한 후 다운로드됩니다.

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    MJML 바이너리는 컴포저 설치 또는 업데이트 중에 CDN에서 가져와 이 패키지의 "bin" 폴더에 저장됩니다. 로컬 및 프로덕션 환경 모두에서 필요한 바이너리가 로드되었는지 확인하세요.

    기본적으로, all은 우리가 지원하는 모든 바이너리를 가져옵니다. 대역폭과 설치 시간을 절약하기 위해 필요한 운영 체제 및 아키텍처 시스템으로 이 범위를 줄이는 것을 권장합니다. 사용 가능한 바이너리는 다음과 같습니다.

    운영 체제 아키텍처 Composer 후 업데이트 명령
    전체 전체 DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64
    Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-musl
    Linux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl
  2. 다음으로, 다음 composer 명령어를 실행하여 PHP 패키지를 설치합니다:

    composer require defectivecode/mjml
  3. 그게 전부입니다! Laravel을 사용할 경우, 우리의 패키지는 Laravel의 패키지 발견 기능을 사용하여 자동으로 설치됩니다.

사용법 (Laravel 없이)

Laravel을 사용하는 경우 아래의 Laravel 사용법을 참조하세요.

MJML 렌더링

MJML을 렌더링하려면 MJML 문자열을 render 메서드에 전달하기만 하면 됩니다:

use DefectiveCode\MJML\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

MJML 유효성 검사

MJML을 유효성 검사하려면 MJML 문자열을 isValid 메서드에 전달하기만 하면 됩니다:

use DefectiveCode\MJML\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

사용법 (Laravel과 함께)

MJML 렌더링

MJML을 렌더링하려면 MJML 패사드의 render에 MJML 문자열을 전달하기만 하면 됩니다:

use DefectiveCode\MJML\Facades\MJML;
 
$html = MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

MJML 유효성 검사

MJML을 유효성 검사하려면 MJML 패사드의 isValid 메서드에 MJML 문자열을 전달하기만 하면 됩니다:

use DefectiveCode\MJML\Facades\MJML;
 
$isValid = MJML::isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

구성

다음 명령어를 사용하여 구성 파일을 게시할 수 있습니다:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

이렇게 하면 config 폴더에 mjml.php 구성 파일이 생성됩니다. 구성 파일에 나열된 모든 옵션은 MJML 패사드를 사용할 때 config 객체에 전달됩니다.

구성

모든 구성 옵션은 MJML 객체에서 직접 다음 메서드를 호출하여 설정할 수 있습니다.

use DefectiveCode\MJML\MJML;
 
$html = (new MJML)
->setMinify(true)
->setBeautify(false)
->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

우리 패키지는 공식 MJML 패키지와 동일한 구성을 따르며, 다음 사항은 제외됩니다:

글꼴

우리의 패키지는 기본적으로 다음 글꼴을 사용합니다:

다음 메서드를 사용하여 글꼴을 변경할 수 있습니다:

주석

주석은 기본적으로 유지됩니다. 주석을 제거하려면 removeComments() 메서드를 사용할 수 있습니다.

removeComments()를 취소하려면 keepComments() 메서드를 호출하면 됩니다.

포함 무시

기본적으로, 우리 패키지는 mj-include 태그를 무시합니다. 이는 MJML 5의 보다 안전한 기본값에 맞아떨어집니다. 포함을 활성화하려면 ignoreIncludes(false)를 호출하면 됩니다.

포함을 활성화할 때는 filePath(string $path)를 기본 디렉터리로 사용하고 includePath(string|array|null $path)를 사용하여 추가 포함 디렉터리를 허용합니다.

아름답게 꾸미기

우리 패키지는 js-beautify를 사용하여 HTML을 아름답게 꾸밉니다. MJML 5.2는 내부적으로 js-beautify를 사용하지만, 이 패키지는 래퍼 레벨에서 아름답게 꾸미는 기능을 유지하여 사용자 정의 PHP beautifyOptions가 계속 작동하도록 합니다. 기본 옵션은 다음과 같습니다:

js-beautify가 snake_case를 사용하여 옵션을 제공하지만, 우리 패키지를 사용할 때는 camelCase를 사용해야 합니다. 우리는 이 패키지를 구성 옵션의 나머지와 일관되게 유지하기 위한 선택을 했습니다. 우리 패키지는 자동으로 camelCase 옵션을 snake_case로 변환합니다.

다음 메서드를 사용하여 이러한 옵션 중 어떤 것이든 무효화할 수 있습니다:

축소

우리 패키지는 활성화되면 HTML 출력을 축소합니다. 축소는 다음을 수행합니다:

minify(bool $minify) 메서드를 호출하여 축소를 활성화하거나 비활성화할 수 있습니다.

왜 PHP 기반의 축소인가요? MJML 5는 더 이상 구식의 취약한 html-minifier 패키지를 사용하지 않습니다. 이 패키지는 여전히 2.x 버전에서 도입된 출력 동작을 보존하기 위해 PHP에서 축소를 유지합니다. MJML 5의 네이티브 htmlnano/cssnano 축소 옵션이 필요하면 요구 사항에 맞게 이슈를 열어주세요.

유효성 검사 수준

우리 패키지는 기본적으로 soft 유효성 검사 수준을 사용하여 MJML을 유효성 검사합니다. validationLevel(ValidationLevel $validationLevel) 메서드를 사용하여 이를 변경할 수 있습니다. 사용 가능한 유효성 검사 수준은 다음과 같습니다:

파일 경로

우리 패키지는 기본적으로 . 디렉터리를 사용합니다. filePath(string $path) 메서드를 호출하여 이를 변경할 수 있습니다.

MJML 5는 filePath를 포함 샌드박스 기본으로 취급합니다. 포함이 활성화되면 filePath 외부의 경로는 명시적으로 includePath(string|array|null $path)를 사용하여 허용되지 않는 한 거부됩니다.

주스

우리 패키지는 기본적으로 주스 옵션을 제공하지 않습니다. 다음 메서드를 사용하여 주스 옵션을 추가할 수 있습니다:

지원 지침

우리의 오픈 소스 패키지를 선택해 주셔서 감사합니다! 이 지원 지침을 확인하는데 잠시 시간을 할애해 주세요. 이 지침은 우리 프로젝트를 최대한 활용하는 데 도움이 될 것입니다.

커뮤니티 주도 지원

우리의 오픈 소스 프로젝트는 훌륭한 커뮤니티에 의해 구동됩니다. 질문이 있거나 도움이 필요하다면 StackOverflow와 다른 온라인 리소스가 최선의 선택입니다.

버그 및 기능 우선순위

오픈 소스 프로젝트를 관리하는 현실은 모든 보고된 버그나 기능 요청을 즉시 처리할 수 없다는 것입니다. 우리는 문제를 다음과 같은 순서로 우선 처리합니다:

1. 유료 제품에 영향을 주는 버그

우리의 유료 제품에 영향을 미치는 버그는 항상 최우선 순위입니다. 경우에 따라 우리에게 직접적인 영향을 미치는 버그만 처리할 수도 있습니다.

2. 커뮤니티 풀 리퀘스트

버그를 발견하고 해결책이 있다면, 풀 리퀘스트를 제출해 주세요. 우리 제품에 영향을 미치는 문제 다음으로, 이러한 커뮤니티 주도 수정을 우선적으로 처리합니다. 리뷰하고 승인된 후, 귀하의 해결책을 병합하고 기여를 인정할 것입니다.

3. 재정적 지원

언급된 범주 외의 문제에 대해서는 해결을 위한 자금을 기부할 수 있습니다. 각 열려 있는 문제는 재정적으로 기여할 수 있는 주문 양식에 연결되어 있습니다. 제공된 자금 금액에 따라 이러한 문제를 우선 처리합니다.

커뮤니티 기여

오픈 소스는 커뮤니티가 활발할 때 성장합니다. 버그를 수정하지 않더라도 코드 개선, 문서 업데이트, 튜토리얼, 또는 커뮤니티 채널에서 다른 사람들을 도와주는 방식으로 기여하는 것을 고려해 보세요. 우리는 모두가 커뮤니티로서 오픈 소스 작업을 지원하는 것을 강력히 권장합니다.

다시 말해, DefectiveCode는 유료 제품에 영향을 미치는 정도, 커뮤니티 풀 리퀘스트 및 문제에 대한 재정적 지원을 기반으로 버그를 우선 처리할 것입니다.

라이선스 - MIT 라이선스

Copyright © Defective Code, LLC. 모든 권리 보유.

본 소프트웨어 및 관련 문서 파일(이하 "소프트웨어")의 사본을 얻은 모든 개인에게 무료로 사용 권한이 부여되며, 소프트웨어를 제한 없이 사용할 수 있습니다. 여기에는 소프트웨어를 사용, 복사, 수정, 병합, 게시, 배포, 서브 라이센스 및/또는 판매하는 권리가 포함되며, 소프트웨어가 제공된 사람에게 그러한 권한을 허용하는 것이 포함됩니다. 단, 다음 조건을 준수해야 합니다:

위의 저작권 고지 및 이 사용 허가 고지는 소프트웨어의 모든 복사본 또는 상당 부분에 포함되어야 합니다.

소프트웨어는 "있는 그대로" 제공되며, 명시적이거나 암시적인 어떤 종류의 보증도 없이 제공됩니다. 여기에는 상업성, 특정 목적에 대한 적합성 및 비침해성에 대한 보증이 포함되지만 이에 국한되지 않습니다. 어떤 경우에도 저자나 저작권자는 계약, 불법행위 또는 기타 방식으로 소프트웨어 또는 소프트웨어의 사용이나 기타 거래와 관련하여 발생하는 어떤 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.