knap은(는) 무엇을 하나요?
Knap CLI를 사용하여 변수, 필터 및 논리를 포함한 마크다운 템플릿을 렌더링하세요.
설치되지 않은 경우: npm install -g knap (Node.js 20 이상 필요). 또는 npx knap을 사용하세요.
사용 가능한 명령어와 옵션을 보려면 knap --help를 실행하세요. CLI의 오프라인 참조를 통해 언어를 알아보세요:
knap help syntax
knap help filters
knap help filter date
knap help tags
knap help tag for
목록을 사용하여 이름을 찾은 후, 개별 도움말을 요청하여 구문, 매개변수 및 예상 출력을 포함한 예제를 확인하세요.
사용법
JSON 변수와 템플릿 렌더링:
knap render template.md --data article.json -o note.md
템플릿과 데이터를 인라인으로 제공:
knap render -t '# {{ title | trim }}' --data-json '{"title":"Hello"}'
변수 재정의 또는 JSON 데이터 파이프:
knap render template.md --data article.json --set 'title=Custom title'
cat article.json | knap render template.md --data -
데이터는 JSON 객체여야 하며, 해당 속성이 템플릿 변수가 됩니다. --set은 리터럴 최상위 키를 문자열로 재정의합니다. 중첩 객체, 배열, 숫자 및 부울에는 JSON을 사용하세요.
하나의 템플릿 소스(파일, -t 또는 stdin)와 하나의 데이터 소스(--data 또는 --data-json)를 선택하세요. 한 번에 하나의 입력만 stdin을 읽을 수 있습니다. 템플릿 파일이나 -t가 없으면 Knap은 stdin에서 템플릿을 읽습니다.
출력은 기본적으로 stdout입니다. -o는 부모 디렉터리를 생성하고 렌더링이 성공한 후 대상을 덮어씁니다. 오류가 발생하면 종료 코드 1로 종료되며, 진단 정보는 stderr로 전송됩니다. 경고는 성공적인 출력과 함께 나타날 수 있습니다.
템플릿
{{ variable }}는 값, |는 필터, {% ... %}는 논리 구문에 사용합니다. 예를 들어, 이 내용을 template.md로 저장하세요:
---
{{ title | yaml_property:"title" }}
{{ tags | yaml_property:"tags" }}
---
# {{ title | trim }}
{% if author %}
By {{ author }}
{% endif %}
{{ content }}
yaml_property를 사용하여 완전한 frontmatter 속성을 생성하면 값이 올바르게 인용되고 들여쓰기됩니다. CLI에는 표준 필터가 포함되어 있지만, Web Clipper 브라우저 변수, 선택자, 프롬프트 또는 DOM 종속 HTML 필터는 제공하지 않습니다. JSON을 통해 변수를 제공하세요.
렌더링 전에 템플릿을 확인:
knap validate template.md
유효성 검사는 데이터나 파일 출력 없이 구문, 필터 이름 및 정적 필터 인수를 확인합니다. 변수 존재, 런타임 값 또는 동적 인수는 확인하지 않습니다. 런타임 동작을 확인하려면 실제 데이터로 렌더링하세요. 진단 정보는 stderr로 전송되며 관련 도움말 명령어를 포함합니다.
Defuddle 파이프라인
웹 페이지를 JSON(마크다운 콘텐츠 포함)으로 추출한 후 노트로 렌더링:
defuddle parse https://example.com/article --md --json \
| knap render template.md --data - -o note.md
Defuddle의 JSON 속성(예: title 및 content)이 템플릿 변수로 직접 전달됩니다.
배치 렌더링
CSV 행, JSON 배열 객체 또는 폴더 내 JSON 파일당 하나의 파일 생성:
knap batch template.md --data articles.csv --output-dir notes \
--filename '{{ title | safe_name }}.md'
배열의 경우 --data articles.json을, JSON 객체 폴더의 경우 --data ./articles를 사용하세요. CSV 헤더는 변수 이름이 되고 값은 문자열로 유지됩니다. 파이프된 데이터는 기본적으로 JSON입니다. 파이프된 CSV의 경우 --format csv를 추가하세요.
--dry-run을 사용하면 파일을 쓰지 않고 출력 경로를 검증하고 나열할 수 있습니다. 기존 파일이 있으면 --overwrite가 필요하며, dry-run 중에도 마찬가지입니다. 배치 내에서 중복된 출력 이름은 --overwrite가 있어도 오류로 처리됩니다.
파일명 템플릿은 디렉터리 없이 확장자를 포함한 단일 파일명을 생성해야 합니다. 데이터에서 파생된 이름에는 safe_name을 사용하세요. --filename이 없으면 Knap은 JSON 파일명을 그대로 사용하거나 CSV 행과 배열 항목에 1.md, 2.md 등으로 번호를 매깁니다.