Data Files
Currently, it is not smooth to update NexT theme from pulling or downloading new releases. It is quite often running into conflict status when updating NexT theme via `git pull`, or need to merge configurations manually when upgrading to new releases.
At present, NexT encourages users to store some options in site's `/_config.yml` and other options in theme's `/themes/next/_config.yml`. This approach is applicable, but has some drawbacks:
1. Configurations are splitted into two pieces
2. Users may be confused which place should be for options
In order to resolve this issue, NexT provides the following two solutions.
Option 1: Hexo-Way
With this way, all your configurations locate in main Hexo config file (`/_config.yml`), you don't need to touch `/themes/next/_config.yml` or create any new files. But you must preserve double spaces indents within `theme_config` option.
If there are any new options in new releases, you just need to copy those options from `/themes/next/_config.yml`, paste into `/_config.yml` and set their values to whatever you want.
### Usage
1. Please confirm that the `/source/_data/next.yml` file does not exist (delete it if exists).
2. Copy needed NexT theme options from theme's `/themes/next/_config.yml` into `/_config.yml`, then\
2.1. Move all this settings to the right with two spaces (in Visual Studio Code: select all strings, CTRL + ]).\
2.2. Add `theme_config:` parameter above all this settings.
### Useful links
* [Hexo Configuration](https://hexo.io/docs/configuration.html)
* [Hexo Pull #757](https://github.com/hexojs/hexo/pull/757)
Option 2: NexT-Way
With this way, you can put all your configurations into one place (`/source/_data/next.yml`), you don't need to touch `/themes/next/_config.yml`.
But option may not accurately procces all hexo external libraries with their additional options (for example, `hexo-server` module options may be readed only in default hexo config).
If there are any new options in new releases, you just need to copy those options from `/themes/next/_config.yml`, paste into `/source/_data/next.yml` and set their values to whatever you want.
This method relies on Hexo [Data files](https://hexo.io/docs/data-files.html). Because Data files is introduced in Hexo 3, so you need upgrade Hexo to 3.0 (or above) to use this feature.
### Usage
1. Please ensure you are using Hexo 3 (or above).
2. Create an file named `next.yml` in site's `/source/_data` directory (create `_data` directory if it does not exist).
And after that steps there are 2 variants, need to choose only one of them and resume next steps.
* **Variant 1: `override: false` (default)**:
1. Check your `override` option in default NexT config, it must set on `false`.\
In `next.yml` it must not be defined or set on `false` too.
2. Copy needed options from both site's `/_config.yml` and theme's `/themes/next/_config.yml` into `/source/_data/next.yml`.
* **Variant 2: `override: true`**:
1. In `next.yml` set `override` option on `true`.
2. Copy **all** NexT theme options from theme's `/themes/next/_config.yml` into `/source/_data/next.yml`.
3. Then, in main site's `/_config.yml` need to define `theme: next` option (and if needed, `source_dir: source`).
4. Use standard parameters to start server, generate or deploy (`hexo clean && hexo g -d && hexo s`).
### Useful links
* [NexT Issue #328](https://github.com/iissnan/hexo-theme-next/issues/328)