나는 등, 특정 layout
의 페이지가 YAML 검증해야합니다 있도록 빌드가 특정 필드가없는 경우 erroring과 더불어, 지킬 사이트에서 논리를 구축, 또는 값의 잘못된 유형을하고 싶은지정된 YAML 필드가없는 경우 Jekyll 빌드 중에 예외 발생?
한 가지 해결 방법은 단순히 오류 메시지를 받아 예외 발생시키는 액체 필터에 대한 미봉책 플러그인을 작성 통해 :
{% unless page.necessary_field %}
{{ "You're missing necessary_field" | raise_error }}
{% endunless %}
,536 : 템플릿 내에서, 그리고
module Jekyll
module ExceptionFilter
def raise_error(msg)
bad_file = @context.registers[:page]['path']
err_msg = "On #{bad_file}: #{msg}"
raise err_msg
end
end
end
Liquid::Template.register_filter(Jekyll::ExceptionFilter)
을, 예를 들어,이를 포함 할 수 있습니다
이런 종류의 작업이 완료됩니다.
하나의 문제는 빌드 프로세스가 하나의 오류를 찾으면 즉시 중단된다는 것입니다. 나는 repo의 모든 .md 파일을 통해 빌드를 계속하고 모든 페이지의 오류 목록을 수집하여 끝에 표시하는 것을 좋아합니다. Based on the Jekyll docs, 나는 _config.yml
에 liquid: error_mode: warn
가 이럴 것이라고 생각했지만 그렇지 않았습니다.
아, 예를 들어, 최종적으로 예외를 발생시키기 전에 모든 페이지에서 반복 할 수 있으므로 발전기가 더 이해할 수 있습니다. – mdlincoln
템플릿/액체 필터 솔루션에서 얻게되는 이점 중 하나는 액체 마크 업을 통해 로직을 정의 할 수 있다는 것입니다. 이 사이트는 많은 기여자들에 의해 편집되었으며 필요에 따라 논리를 유지하고 변경할 수있는 액상 마크 업을 잘 알고 있지만 루비로 작성된 확장 내에서 규칙을 변경하고 확신을 가지지 않습니다. – mdlincoln
물론. 그것은 모두 다릅니다 :-) – Christian