--- title: Cosy Starter Guide top: 1 categories: - Hexo status: doing --- [πŸ‡¨πŸ‡³ δΈ­ζ–‡ζ–‡ζ‘£](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/) # Hexo Installation Installing a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`. ```yml # Locate the theme setting theme: hexo-theme-cosy ``` ## Acquiring Cosy - Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments. - Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases). - Extract it into your site's `themes` directory. - Enable it in Hexo's `_config.yml`. # Hexo Configuration Adjust settings in `Hexo`'s `_config.yml`. ## Basic Configuration ```yml # Website title title: 17px blog # Sidebar header subtitle: "Mozzie" # HTML meta description for SEO description: "" # HTML meta keywords for SEO keywords: # Copyright text displaying author's name author: Mozzie # Set your website URL here url: https://mozzie.cn ``` ## Language Switch You can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file ```yml language: en ``` ## Code Highlighting Disable Hexo's default highlight.js syntax highlighting. ```yml highlight: enable: false line_number: true auto_detect: false tab_replace: "" wrap: true hljs: false prismjs: enable: true preprocess: true line_number: true line_threshold: 0 tab_replace: "" ``` # Cosy Theme Configuration πŸ’‘ The following settings are based on the `_config.yml` under `hexo-theme-cosy`. ## Post Category Icons In sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/). ```yml postCategoryIcons: - ... - ... - ... ``` ## Website Favicon - Supports `svg` - Supports `image URL`, e.g., `/img/favicon.png` ```yml favicon: '' ``` ## ICP Number πŸ‡¨πŸ‡³ 😁 If not required, can be directly deleted. ```yml icp: 苏ICP倇xxxxxxx号-x ``` ## Footer Text on Homepage πŸ‡¨πŸ‡³ 😁 If not required, can be directly deleted or set to `false`. ```yml motto: false ``` ## Post Copyright Statement Enabled by default. When `enable: false`, it is disabled by default. ```yml postCopyright: enable: true license: CC BY-NC-SA 4.0 license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/ ``` ## Katex Mathematical Formulas You can configure the CDN yourself. ```yml katex: enable: true jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css ``` ## Mermaid Flowcharts To draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers. ```markdown {% mermaid %} graph TD; A --> B; A --> C; B --> D; C --> D; {% endmermaid %} ``` Corresponding configurations are as follows: ```yml mermaid: enable: true cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js ``` ## Valine Comments First, register as a `LeanCloud` international user and create a database. Please proceed in accordance with relevant regional regulations. ```yml valine: enable: true # 替捒 appId: appId # 替捒 appKey: appKey avatar: monsterid cdn: //unpkg.com/valine@latest/dist/Valine.min.js # 替捒 serverURLs: //xxxxxxxx.api.lncldglobal.com ``` # Algolia Search The blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month. ## Register & Acquire Key 1. Create a new `Index`, for example, `hex-blog` 2. Copy and save: - Application ID - Search-Only API Key - Admin API Key - Usage API Key ![API Keys](/img/algolia-api-keys.png) 3. Replace configurations Add the following to Hexo's `_config.yml` ```yml algolia: # Replace appId: Application ID # Replace apiKey: Usage API Key # Do not disclose, used for reporting, replace adminApiKey: Admin API Key # Replace SearchOnlyAPIKey: Search-Only API Key chunkSize: 5000 # Replace indexName: hex-blog fields: - content:strip - categories - date - permalink - slug - tags - title ``` ## Install hexo-algoliasearch This is a Hexo blog post index plugin that automates the submission of indexes to Algolia. > If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions. Installation command: ```bash npm install hexo-algoliasearch --save ``` ## Using Algolia Before publishing each blog post, carry out index uploading operations. The usual commands are as follows: ```bash hexo clean hexo generate hexo algolia ``` # QWeather Widget πŸ‡¨πŸ‡³ Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/). After registering, fill in your `appKey` and `cityCode` in the configuration. ```yml weather: enable: true # Replace cityCode: cityCode appKey: appKey ``` You can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`. # Front Matter In Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this: ```markdown --- title: My Article Title categories: - javascript tags: - Programming - JavaScript --- ``` ## top To pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a πŸ“Œ icon in the category list. For example, if there are three articles: - Article 1 ```markdown --- title: Article 1 top: 0 categories: - javascript --- ``` - Article 2 ```markdown --- title: Article 2 top: 1 categories: - javascript --- ``` - Article 3 ```markdown --- title: Article 3 categories: - javascript --- ``` Then, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`. ## status This is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses: - done: Completed - doing: In Progress - todo: To Do - other: Abandoned For example: ```markdown --- title: Article 1 categories: - javascript status: done --- ``` # Custom Page Hexo uses Markdown (or other rendering engine) to parse your article and generate static files for quick loading. In addition to the default generated articles and archive pages, Hexo also allows you to create custom pages. ## Roadmap To create a page, you can use the command ```bash hexo new page roadmap ``` After success, a new folder `/roadmap/index.md` will be generated under the `source/` folder You can refer to this template for configure `/roadmap/index.md`, parameter description: - title: Title of roadmap page HTML - initYear: Default displayed year ```markdown --- title: Title - roadmap layout: roadmap initYear: 2023 years: 2022: - title: reading start: 01-01 end: 1-5 - title: cooking start: 02-01 end: 05-30 2023: - title: Yue Mo Du Qian start: 01-01 end: 1-2 - title: To use and preserve in vain start: 02-01 end: 06-30 - title: Short Song Line start: 10-26 end: 10-31 content: Singing and drinking, geometry of life! For example, the morning dew is more bitter than the past. Be generous and forget your worries. How to relieve worries? Only Du Kang. Qingqing Zijin, carefree in my heart. But for your sake, I have been pondering until now. Yo, deer chirp, eating wild apples. - title: Prosody enlightenment start: 11-01 end: 11-31 content: The flowers bloom in red and beautiful colors, and the water ripples with azure glass. Going to my wife to explore my neighbor's date, going to my wife to plant a backyard sunflower --- ``` ## Resume To create a page, you can use the command ```bash hexo new page resume ``` After success, a new folder will be generated folder `/resume/index.md'` under the `source/` You can refer to this template for configure `/resume/index.md`, parameter description: - title: The title of the resume page's HTML - avatar: Address of the avatar image ```markdown --- title: resume layout: resume avatar: /img/avatar.png name: Hi! Mozzie role: Full Stack email: himozzie@gmail.com phone: +86 180-xxxx-xxx birth: Jan 21, 1994 location: Nanjing, China social: - name: github link: https://github.com/17px icon: about: - My job is to build your website so that it is functional and user-friendly but at the same time attractive. - Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies. skill: - Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects - Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps - Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields - Master basic Linux commands and understand the basic use of Nginx and Docker education: - school: University School of the Arts time: 2012-2016 workExp: - inc: Creative Director time: 2021.09 ~ today - inc: Web Designer time: 2021.01 ~ 2021.09 projectExp: - name: PC/React β€’ Annotation, Algorithm Data Center desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules. list: - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism - Develop the system server using Nest.js and use it for the microservice system of the project - name: PC/React β€’ Tavigator Aortic Root/Peripheral desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules. list: - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism - Develop the system server using Nest.js and use it for the microservice system of the project --- ```