1
0
mirror of https://github.com/danog/gojekyll.git synced 2024-11-27 11:24:42 +01:00
gojekyll/README.md

164 lines
5.5 KiB
Markdown
Raw Normal View History

2017-07-01 19:34:32 +02:00
# Gojekyll
2017-06-13 18:47:59 +02:00
[![Build Status](https://travis-ci.org/osteele/gojekyll.svg?branch=master)](https://travis-ci.org/osteele/gojekyll)
2017-06-12 02:05:38 +02:00
[![Go Report Card](https://goreportcard.com/badge/github.com/osteele/gojekyll)](https://goreportcard.com/report/github.com/osteele/gojekyll)
2017-07-01 19:34:32 +02:00
Gojekyll is an incomplete implementation of the [Jekyll](https://jekyllrb.com) static site generator, in the [Go](https://golang.org) programming language.
Missing features:
- Themes, drafts, tags, excerpts, plugins (except for `avatar`), and pagination
- Site variables: `pages`, `static_files`, `html_pages`, `html_files`, `documents`, and `tags`
- Jekyll's `group_by_exp`, `pop`, `shift`, `cgi_escape`, `uri_escape`, `scssify`, and `smartify` filters
- Jekyll's `include_relative`, `post_url`, `gist`, and `highlight` tags
- The [Go Liquid template engine](https://github.com/osteele/gojekyll) is also missing some tags and filters.
- Data files must be YAML; CSV and JSON are not supported.
- Parse errors aren't reported very nicely.
Other differences from Jekyll:
- `serve` generates pages on the fly; it doesn't write to the file system.
- No `.sass-cache`; therefore, no `--safe` option.
- Server live reload is always on.
- The server reloads the `_config.yml` file too.
## Installation
1. [Install go](https://golang.org/doc/install#install). On macOS running Homebrew, `brew install go` is easier.
2. `go get -u osteele/gojekyll/cmd/gojekyll`
## Usage
```bash
gojekyll -s path/to/site build # builds into ./_site
gojekyll -s path/to/site serve # serves from memory, w/ live reload
gojekyll help
gojekyll help build
```
2017-06-28 23:13:12 +02:00
2017-07-01 19:34:32 +02:00
## Status
2017-06-19 01:12:33 +02:00
- [ ] Content
- [x] Front Matter
- [ ] Posts
2017-07-01 15:35:26 +02:00
- [x] Categories
2017-06-19 01:12:33 +02:00
- [ ] Tags
- [ ] Drafts
- [ ] Future
2017-07-01 04:05:55 +02:00
- [x] Related
2017-06-19 01:12:33 +02:00
- [x] Static Files
- [x] Variables
2017-06-22 14:34:37 +02:00
- [x] Collections
2017-06-19 01:12:33 +02:00
- [ ] Data Files
2017-06-19 20:44:34 +02:00
- [ ] CSV
- [ ] JSON
- [x] YAML
2017-06-19 01:12:33 +02:00
- [ ] Assets
- [ ] Coffeescript
2017-06-19 04:24:10 +02:00
- [x] Sass/SCSS
2017-06-29 15:41:33 +02:00
- [ ] Sass cache
2017-06-19 01:12:33 +02:00
- [ ] Customization
- [x] Templates
2017-06-29 15:41:33 +02:00
- [ ] Jekyll filters
2017-07-01 04:38:27 +02:00
- [ ] `group_by_exp` `pop` `shift` `cgi_escape` `uri_escape` `scssify` `smartify`
2017-06-29 15:41:33 +02:00
- [x] everything else
- [ ] Jekyll tags
- [x] `include`
- [ ] `include_relative`
- [x] `link`
- [ ] `post_url`
- [ ] `gist`
- [ ] `highlight`
2017-06-28 20:42:04 +02:00
- [ ] `markdown=1`
2017-06-19 01:12:33 +02:00
- [x] Includes
2017-06-29 15:41:33 +02:00
- [x] `include` parameters
- [ ] `include` variables (e.g. `{% include {{ expr }} %}`)
2017-06-19 01:12:33 +02:00
- [x] Permalinks
- [ ] Pagination
2017-07-01 19:34:32 +02:00
- [ ] Plugins
- [x] `jekyll-avatar`
- [ ] `jekyll-coffeescript`
- [x] `jekyll-live-reload` (always on)
- [ ] `jekyll-paginate`
2017-06-19 01:12:33 +02:00
- [ ] Themes
- [x] Layouts
- [x] Server
- [x] Directory watch
2017-07-01 19:34:32 +02:00
- [ ] Commands
- [x] `build`
2017-07-01 21:03:36 +02:00
- [x] `--source`, `--destination`, `--future`, `--unpublished`
- [ ] `--config`, `--drafts`, etc.
2017-07-01 19:34:32 +02:00
- [x] `clean`
- [ ] `doctor`
- [x] `help`
- [ ] `import`
- [ ] `new`
- [ ] `new-theme`
- [x] `serve`
- [x] `--open-uri`
- [ ] `--detach`, `--host`, `--port`, etc.
2017-06-29 15:41:33 +02:00
- [ ] Windows
2017-06-23 16:27:57 +02:00
## Contributing
2017-06-20 15:00:04 +02:00
Install package dependencies and development tools:
```bash
make setup
```
2017-06-23 16:27:57 +02:00
### Testing
2017-06-19 15:15:52 +02:00
2017-06-19 20:03:51 +02:00
```bash
2017-06-20 15:00:04 +02:00
make test
make lint
2017-06-23 16:27:57 +02:00
gojekyll -s path/to/site render index.md # render a file to stdout
gojekyll -s path/to/site render / # render a URL to stdout
gojekyll -s path/to/site variables / # print a file or URL's variables
2017-06-22 23:53:46 +02:00
./scripts/coverage && go tool cover -html=coverage.out
2017-06-19 20:03:51 +02:00
```
2017-06-19 15:15:52 +02:00
`./scripts/gojekyll` is an alternative to the `gojekyll` executable, that uses `go run` each time it's invoked.
2017-06-23 16:27:57 +02:00
### Profiling
2017-06-19 15:15:52 +02:00
```bash
2017-06-23 16:27:57 +02:00
gojekyll -s path/to/site profile
2017-06-19 15:15:52 +02:00
go tool pprof gojekyll gojekyll.prof
```
2017-06-12 00:59:02 +02:00
## Credits
2017-06-29 13:08:37 +02:00
Gojekyll uses these libraries:
2017-06-20 15:00:04 +02:00
2017-06-29 13:08:37 +02:00
| Package | Author | Description |
| --- | --- | --- |
| [github.com/jaschaephraim/lrserver](https://github.com/jaschaephraim/lrserver) | Jascha Ephraim | Live Reload server |
| [github.com/osteele/liquid](https://github.com/osteele/liquid) | Oliver Steele | Liquid processor |
| [github.com/pkg/browser](https://github.com/pkg/browser) | [pkg](https://github.com/pkg) | The `serve -o` option to open the site in the browser |
| [github.com/russross/blackfriday](https://github.com/russross/blackfriday) | Russ Ross | Markdown processor |
| [github.com/sass/libsass](https://github.com/sass/libsass) | Listed [here](https://https://github.com/sass/libsass) | C port of the Ruby SASS compiler |
| [github.com/wellington/go-libsass](https://github.com/wellington/go-libsass) | Drew Wells | Go bindings to libsass |
| [gopkg.in/alecthomas/kingpin.v2](https://github.com/alecthomas/kingpin) | Alec Thomas | command line and flag parser |
| [gopkg.in/yaml.v2](https://github.com/go-yaml) | Canonical | YAML support |
2017-07-01 05:10:58 +02:00
In addition to being totally and obviously inspired by the Jekyll, Jekyll's solid documentation was indispensible. Many of the filter test cases are taken directly from the Jekyll documentation, and the [Jekyll docs](https://jekyllrb.com/docs/home/) were always open in at least one tab.
2017-06-22 01:19:08 +02:00
2017-07-01 20:55:50 +02:00
The help text was taken from the output of `jekyll help`.
2017-06-12 03:05:17 +02:00
The gopher image in the test directory is from [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Gophercolor.jpg). It is used under the [Creative Commons Attribution-Share Alike 3.0 Unported license](https://creativecommons.org/licenses/by-sa/3.0/deed.en).
2017-06-12 00:59:02 +02:00
## Related
[Hugo](https://gohugo.io) isn't Jekyll-compatible (-), but actually works (+++).
2017-06-12 02:30:25 +02:00
[Jekyll](https://jekyllrb.com), of course.
2017-06-12 00:59:02 +02:00
## License
MIT
## Alternate Naming Possibilities
* "Gekyll". (Hard or soft "g"? See [gif](https://en.wikipedia.org/wiki/GIF#Pronunciation_of_GIF).)
* "Gekko"