참고이 프로젝트는 현재 인정되지 않았으며, 완벽한 특징이있는 Golang 기반 응용 프로그램으로 대체되었습니다.
Chronicle은 간단한 텍스트 파일의 디렉토리를 정적 HTML 웹 로그 (또는 원하는 경우 블로그)로 변환하는 도구입니다.
이 저장소에는 속도와 유연성 측면에서 상당한 업그레이드를 나타내는 Chronicle Static Blog Compiler의 Scratch Rewrite에서 중대한 재 작성이 포함되어 있습니다.
시스템은 의도적으로 간단하지만 지원합니다.
이 구현은 각 게시물이 RAM으로 읽지 않고 게시물이 구문 분석되고 SQLite 데이터베이스에 삽입되기 때문에 이전 릴리스보다 Page Generation에서 상당히 빠릅니다.
블로그 게시물이 SQLite 데이터베이스에 채워지면 일련의 템플릿에 삽입되어 궁극적으로 출력이 생성됩니다.
SQLITE 데이터베이스를 주위에 보관한다고 가정하지만 삭제하더라도 중요하지 않습니다. 모든 출품작을 파싱하는 행위는 여전히 매우 빠른 과정입니다.
저장소를 복제 한 다음 CPAN 모듈처럼 설치하십시오.
perl Makefile.PL
make test
su - make install
블로그 형식은 매우 간단하고 다음 파일은 샘플입니다.
title: The title of my post
date: 12 August 2007
tags: foo, bar, baz
The text of the actual entry goes here.
However much there is of it.
항목은 여러 개의 의사 헤더 필드로 구성된 작은 헤더로 접두사로 표시됩니다. 헤더는 적어도 하나의 빈 줄로 신체에서 분리되어야 합니다 .
알려지지 않은 헤더 값은 무시되며 헤더의 일부는 생성 된 출력에 포함되지 않습니다.
다음 헤더 값이 인식됩니다.
추가 헤더가 삽입 될 수 있으며, 특정 플러그인으로 액세스하기 위해 기본적으로 무시됩니다. 예를 들어 Chronicle::Plugin::SkipDrafts 플러그인은 블로그 항목이 여전히 초안 인 경우 무시되고 draft:1 헤더를 포함합니다. 마찬가지로 PostSpooler 라는 플러그인이 있는데, 이는 기본 데이터까지 게시물을 무시하고 기본 date 아닌 특별 publish 헤더를 사용합니다.
여러 블로그 게시물이 포함 된 디렉토리가 있다고 가정하면 블로그를 생성 할 수 있어야합니다.
chronicle --input=path/to/input --output=/path/to/output
--theme=blog.steve.org.uk
이것은 path/to/input/*.txt 읽고 디렉토리 /path/to/output/ Directory가 누락 된 경우 해당 디렉토리 아래에 블로그를 생성합니다.
SQLITE 데이터베이스는 기본적으로 ./blog.db 에서 작성되며 삭제되면 재생됩니다.
이전 예는 기본 사용법을 보여 주었고 대부분의 사용자가 선호하는 명백한 변경 사항 중 하나는 블로그 제목과 자막을 설정하는 것입니다.
chronicle --title="Steve Kemp's Blog" --sub-title="Writings about cake" ..
여러 값을 설정하기 시작하면 대신 구성 파일을 사용하는 것이 좋습니다. 크로니클은 시작하기 전에 /etc/chronicle/config , ~/.chronicle/config 읽습니다. via --config=/path/to/conf .의 구성 파일을 지정할 수 없습니다.
구성 파일은 명령 줄 인수와 정확히 일치하므로 "--foo = bar"구성 파일은 다음을 통해 동일한 것을 설정할 수 있습니다.
foo = bar
앞에서 언급했듯이 블로그 세대는 일련의 플러그인을 통해 발생합니다. 예를 들어 사이드 바에는 모든 태그의 목록이 표시 될 수 있으며, 이는 다루기 어려울 수 있습니다. 비활성화하려면 다음을 통해 그렇게 할 수 있습니다.
chronicle --exclude-plugins=AllTags,RecentPosts --force ..
참고 : 출력 페이지를 생성하는 플러그인은
Chronicle::Plugin::Generate아래에 있습니다. 모든 페이지에서 사용할 수있는 스 니펫을 생성하는 플러그인은Chronicle::Plugin::Snippets이름 공간 아래에 있습니다.
참고 : 스 니펫은 모든 페이지에 포함되어 있기 때문에 기본 테마에 출력 페이지가 업데이트되도록
--force추가했습니다.
이상적으로는 목적과 주요 작업이 동일하기 때문에 이전 크로니클 릴리스 에서이 코드베이스로 직접 마이그레이션 할 수 있어야합니다.
--input "을 통해 다른 경로를 지정하지 않는 한 블로그 항목은 여전히 data/ 에서 읽습니다.--pattern=*.blog "를 지정하지 않는 한 *.txt 는 여전히 블로그 항목이라고 가정합니다.그러나 변경 사항이 있으며 이는 구현 차이와 함께 템플릿과 크게 관련이 있습니다.
Chronicle 5에서 기본 스크립트는 명령 줄 인수를 구문 분석하고 블로그 게시물을 읽지 만 사이트의 실제 생성은 전적으로 플러그인 기반입니다. 플러그인은 Chronicle::Plugin 이름 공간 아래에있는 표준 PERL 모듈이며, 모듈 :: pluggable :: 주문 클래스의 사용 덕분에 세부 사항을 알 필요는 없지만 주문할 수는 없습니다.
템플릿 변경은 내가 원하는 것보다 조금 더 중요하지만 행복하게 이러한 변경 사항은 주로 사물의 새로운 위치와 추가 페이지로 구성됩니다.
언급했듯이 핵심 코드는 매우 최소이며 모든 출력 기능은 플러그인에 의해 수행됩니다.
플러그인에있는 경우 코어는 다음 방법을 호출합니다.
on_db_createon_db_openon_inserton_initiateon_generateon_initiate 사이에는 이전 플러그인 방법이 on_generate 호출되기 전에 호출 된 것을 제외하고는 논리적 차이가 없습니다.