2023-05-29 18:35:38 +00:00
|
|
|
# Jekyll to Hugo Converter
|
|
|
|
|
|
|
|
Jekyll to Hugo Converter is a simple tool to convert Jekyll posts to Hugo posts.
|
|
|
|
|
2023-06-03 13:23:58 +00:00
|
|
|
I've used this tool to convert [my blog](https://blog.nuculabs.dev) from WordPress to Jekyll and finally to Hugo.
|
|
|
|
|
|
|
|
The tool has the following features:
|
|
|
|
- Batch conversion.
|
|
|
|
- Post header fields drop/ignore.
|
|
|
|
- Links rewrite. (Search and Replace)
|
|
|
|
- Author name rewrite.
|
|
|
|
|
|
|
|
It was written in a way that is easy to extend, while I wrote it for my own personal use, I hope you'll find some use for it as well.
|
2023-05-29 18:35:38 +00:00
|
|
|
|
2023-06-03 12:37:50 +00:00
|
|
|
Note: This tool is not perfect, it will not convert everything. If you find a bug, please open a PR.
|
|
|
|
|
|
|
|
## Table of Contents
|
|
|
|
|
|
|
|
* [Usage](#usage)
|
|
|
|
* [PiPy](#pipy)
|
|
|
|
* [Python From Source](#python-from-source)
|
|
|
|
* [Docker](#docker)
|
|
|
|
* [Configuration](#configuration)
|
2023-06-03 13:12:00 +00:00
|
|
|
* [Example Configuration](#example-configuration)
|
2023-06-03 12:37:50 +00:00
|
|
|
* [License](#license)
|
2023-05-29 18:58:32 +00:00
|
|
|
|
2023-05-29 18:35:38 +00:00
|
|
|
## Usage
|
|
|
|
|
2023-06-03 13:09:43 +00:00
|
|
|
### PiPy or Pipx
|
2023-06-03 12:37:50 +00:00
|
|
|
|
|
|
|
If you have Python installed, you can use the following commands:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
pip install jekyll-to-hugo
|
|
|
|
jekyll-to-hugo
|
|
|
|
```
|
|
|
|
|
|
|
|
You will need to create a `config.yaml` file in the current directory. See example [here](./config.yaml).
|
|
|
|
|
2023-06-03 13:09:43 +00:00
|
|
|
_`pipx` is a tool to install Python CLI tools in isolated environments_
|
|
|
|
|
2023-06-03 12:37:50 +00:00
|
|
|
### Python From Source
|
2023-06-03 12:13:36 +00:00
|
|
|
|
|
|
|
If you have Python installed, you can use the following commands:
|
|
|
|
|
2023-05-29 18:35:38 +00:00
|
|
|
```bash
|
|
|
|
pip install -r requirements.txt
|
|
|
|
python3 jekyll-to-hugo.py <jekyll_post_path> <hugo_post_path>
|
|
|
|
```
|
|
|
|
|
2023-05-29 19:02:49 +00:00
|
|
|
To change the config, edit `config.yaml`.
|
|
|
|
|
|
|
|
The configuration file path can be configured with the `CONFIG_PATH` environment variable.
|
|
|
|
|
2023-06-03 12:13:36 +00:00
|
|
|
### Docker
|
|
|
|
|
|
|
|
If you don't have Python installed, you can use Docker:
|
|
|
|
|
|
|
|
1. Build the image.
|
|
|
|
|
|
|
|
```bash
|
2023-06-04 16:27:29 +00:00
|
|
|
docker build -t jekyll-to-hugo -f ./docker/Dockerfile .
|
2023-06-03 12:13:36 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
2. Run the image. You will need to mount the following directories: config file, Jekyll posts directory, Hugo posts directory.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run -it --rm -v $(pwd):/app jekyll-to-hugo
|
|
|
|
```
|
|
|
|
|
2023-06-03 12:37:50 +00:00
|
|
|
## Configuration
|
|
|
|
|
|
|
|
The configuration file is a YAML file. See example [here](./config.yaml).
|
|
|
|
The configuration file path can be configured with the `CONFIG_PATH` environment variable.
|
|
|
|
|
2023-06-03 13:12:00 +00:00
|
|
|
### Example Configuration
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
logging_level: "INFO"
|
|
|
|
source_path: "/Users/dnutiu/PycharmProjects/jekyll-to-hugo/my_test_data/_posts"
|
|
|
|
output_path: "/Users/dnutiu/NucuLabsProjects/NucuLabsDevBlog/content/posts"
|
|
|
|
converter: "wordpress_markdown_converter"
|
|
|
|
converter_options:
|
|
|
|
enable_regex_heuristics: true
|
|
|
|
author_rewrite: "Denis Nuțiu"
|
|
|
|
links_rewrite:
|
|
|
|
- source: "http://localhost/"
|
|
|
|
target: "/"
|
|
|
|
- source: "https://nuculabs.wordpress.com/"
|
|
|
|
target: "https://nuculabs.dev/posts/"
|
|
|
|
- source: "https://twitter.com/metonymyqt"
|
|
|
|
target: "https://twitter.com/nuculabs"
|
|
|
|
header_fields_drop:
|
|
|
|
- restapi_import_id
|
|
|
|
- original_post_id
|
|
|
|
- timeline_notification
|
|
|
|
- wordads_ufa
|
|
|
|
- spay_email
|
|
|
|
- amp_status
|
|
|
|
- advanced_seo_description
|
|
|
|
- publicize_twitter_user
|
|
|
|
```
|
|
|
|
|
2023-06-03 12:37:50 +00:00
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under the GPL-3.0 license - see the [LICENSE](LICENSE) file for details.
|
|
|
|
|
2023-05-29 18:35:38 +00:00
|
|
|
---
|
2025-01-07 11:41:45 +00:00
|
|
|
Made with ❤️ by [NucuLabs.dev](https://blog.nuculabs.dev)
|