Git Product home page Git Product logo

ink-1's Introduction

Introduction

InkPaper is a static blog generator developed in Golang. No dependencies, cross platform, easy to use, fast building times and an elegant theme.

apm

InkPaper - An Elegant Static Blog Generator

Features

  • YAML format configuration
  • Markdown format articles
  • No dependencies, cross platform
  • Super fast build times
  • Continuously improving theme and typography
  • Multiple article authors support
  • Archive and tag generation
  • Real-time preview when saving
  • Offline full-text keyword search
  • $\LaTeX$ style math formula support (MathJax):

$$ \int_{-\infty}^\infty g(x) dx = \frac{1}{2\pi i} \oint_{\gamma} \frac{f(z)}{z-g(x)} dz $$

Quick Start

  • Download & Extract Ink and run ink preview

    Tip:Linux/macOS, use ./ink preview

  • Open http://localhost:8000 in your browser to preview

Website Configuration

Edit config.yml, use this format:

site:
    title: Website Title
    subtitle: Website Subtitle
    limit: Max Article Count Per Page
    theme: Website Theme Directory
    comment: Comment Plugin Variable (Default is disqus username)
    root: Website Root Path # Optional
    lang: Website Language # Support en, zh, ru, ja, de, pt-br, configurable in theme/lang.yml
    url: Website URL # For RSS generating
    link: Article Link Scheme # Default is {title}.html, Support {year}, {month}, {day}, {hour}, {minute}, {second}, {title} variables

authors:
    AuthorID: # Your author ID, used in article's author field
        name: Author Name
        intro: Author Motto
        avatar: Author Avatar Path

build:
    output: Build Output Directory # Optional, default is "public"
    port: Preview Port
    copy:
        - Copied Files When Build
    publish: |
        Excuted command when 'ink publish' is used

Blog Writing

Create a .md file in the source directory (Supports subdirectories). Use this format:

title: Article Title
date: Year-Month-Day Hour:Minute:Second #Created Time. Support timezone, such as " +0800"
update: Year-Month-Day Hour:Minute:Second #Updated Time, optional. Support timezone, such as " +0800"
author: AuthorID
cover: Article Cover Path # Optional
draft: false # Is draft or not, optional
top: false # Place article to top or not, optional
preview: Article Preview, Also use <!--more--> to split in body # Optional
tags: # Optional
    - Tag1
    - Tag2
type: post # Specify type is post or page, optional
hide: false # Hide article or not. Hidden atricles still can be accessed via URL, optional
toc: false # Show table of contents or not, optional
---

Markdown Format's Body

Publish

  • Run ink publish in the blog directory to automatically build and publish
  • Or run ink build to manually deploy generated public directory

Tips: When files changed, ink preview will automatically rebuild the blog. Refresh browser to update.

Customization

Modifying The Theme

The default theme is placed in the theme folder, run npm install and npm run build to rebuild in this folder.

page page.html (article list) and article.html (article), use variable with Golang Template syntax.

New Page

Created any .html file will be copied to source directory, could use all variables on site field in config.yml.

Define Custom Variables

InkPaper supports defining custom variables in pages, which must be placed under site.config in config.yaml, such as:

site:
    config:
        MyVar: "Hello World"

The variable can be referenced in the page by {{.Site.Config.MyVar}}.

Note

Although the field names in other parts of config.yaml are all lowercase, the name of the custom variable must be used correctly. Otherwises, such a variable:

site:
    config:
        MYVAR_aAa: "Hello World"

must be referenced in the page as {{.Site.Config.MYVAR_aAa}}.

Use Functions (Experimental)

InkPaper defines a minimal set of functions that can be used in HTML pages (except for .md source files), such as

{{ readFile "path/to/file" }}

This will read the content of the file path/to/file and include it in the page without any processing.

For file-related functions, when executed in the source directory, the file path is relative to the source directory; when executed in other directories, the file path is relative to the theme (such as theme).

See the source file funcs.go for a list of all functions.

Blog Migration (Beta)

Supports simple Jeklly/Hexo post convertions. Usage:

ink convert /path/_posts

Building from source

Local Build

  1. Install Golang environment
  2. Run git clone https://github.com/InkProject/ink && cd ink && go install to compile and install ink
  3. Run ink preview $GOPATH/src/github.com/InkProject/ink/template to preview blog

Docker Build (Example)

  1. Clone code git clone [email protected]:InkProject/ink.git
  2. Build image docker build -t ink . in source directory
  3. Run container docker run -p 8888:80 ink

Theme

Related Tutorials

License

CC Attribution-NonCommercial License 4.0

Reporting An Issue

https://github.com/InkProject/ink/issues

These blogs are driven by InkPaper

ink-1's People

Contributors

bronger avatar dependabot[bot] avatar dignissimus avatar dozen avatar dr4g0nsr avatar fofen avatar gnawux avatar hannesdejager avatar imeoer avatar lipengfeihb avatar shallowclouds avatar shery avatar sombriks avatar taadis avatar vorons avatar w568w avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.