이 글은 VuePress의 실제 경험을 공유할 것입니다. 이 글을 통해 VuePress + Github 페이지를 사용하여 블로그를 빠르게 구축하는 방법을 알려드리겠습니다.
최근 TypeScript 공식 문서인 Hanbook의 번역을 완료했습니다. 총 14개의 기사가 있으며 이는 중국 최고의 TypeScript4 입문 튜토리얼 중 하나라고 할 수 있습니다. 누구나 쉽게 읽을 수 있도록 VuePress + Github Pages를 사용하여 블로그를 구축했습니다. 블로그 효과는 다음과 같습니다.
0. 간단한 스타일과 구성을 갖춘 Vue 기반의 정적 웹 사이트 생성기 또한 비교적 간단합니다. VitePress
를 사용하지 않는 이유는 기존 테마를 사용하고 싶고 VitePress가 현재 VuePress 생태계와 호환되지 않는다는 점을 고려하여vue.js Tutorial"]1. 로컬 구성빠른 시작VuePress 공식 웹사이트와 동일
:1. 원하는 패키지를 만들고 입력하세요. 관리 서버를 초기화합니다// 文件名自定义 mkdir vuepress-starter && cd vuepress-starter3. VuePress를 로컬 종속성으로 설치합니다
yarn init # npm init4. VuePress는 문서를 문서 루트 디렉터리로 사용하므로 이 README.md는 홈페이지
yarn add -D vuepress # npm install -D vuepress5와 같습니다. . package.json
mkdir docs && echo '# Hello VuePress' > docs/README.md6에 일부 스크립트를 추가합니다. 로컬에서 서버를 시작합니다
{ "scripts": { "docs:dev": "vuepress dev docs", "docs:build": "vuepress build docs" } }VuePress는
http://localhost:8080
에서 핫 리로드된 개발 서버를 시작합니다(새 창에서 열림). 2. 기본 구성문서 디렉터리에 모든 VuePress 관련 파일이 위치할.vuepress
디렉터리를 만듭니다. 이 시점에서 프로젝트 구조는 다음과 같을 수 있습니다. yarn docs:dev # npm run docs:dev
.vuepress
폴더 아래에 config.js
를 추가하여 SEO를 용이하게 하기 위해 웹 사이트의 제목과 설명을 구성합니다. : . ├─ docs │ ├─ README.md │ └─ .vuepress │ └─ config.js └─ package.json현재 인터페이스는 다음과 유사합니다:
.vuepress
目录,所有 VuePress 相关的文件都会被放在这里。此时你的项目结构可能是这样:module.exports = { title: 'TypeScript4 文档', description: 'TypeScript4 最新官方文档翻译' }
在 .vuepress
文件夹下添加 config.js
,配置网站的标题和描述,方便 SEO:
module.exports = { title: '...', description: '...', themeConfig: { nav: [ { text: '首页', link: '/' }, { text: '冴羽的 JavaScript 博客', items: [ { text: 'Github', link: 'https://github.com/mqyqingfeng' }, { text: '掘金', link: 'https://juejin.cn/user/712139234359182/posts' } ] } ] } }
此时界面类似于:
我们现在在页首的右上角添加导航栏,修改 config.js
:
. ├─ docs │ ├─ README.md │ └─ .vuepress │ └─ config.js | └─ handbook | └─ ConditionalTypes.md | └─ Generics.md └─ package.json
效果如下:
更多的配置参考 VuePress 导航栏:
https://vuepress.vuejs.org/zh/theme/default-theme-config.html#%E5%AF%BC%E8%88%AA%E6%A0%8F
现在我们添加一些 md 文档,目前文档的目录如下:
module.exports = { themeConfig: { nav: [...], sidebar: [ { title: '欢迎学习', path: '/', collapsable: false, // 不折叠 children: [ { title: "学前必读", path: "/" } ] }, { title: "基础学习", path: '/handbook/ConditionalTypes', collapsable: false, // 不折叠 children: [ { title: "条件类型", path: "/handbook/ConditionalTypes" }, { title: "泛型", path: "/handbook/Generics" } ], } ] } }
我们在 config.js
配置如下:
npm install vuepress-theme-reco --save-dev # or yarn add vuepress-theme-reco
对应的效果如下:
现在基本的目录和导航功能已经实现,但如果我还想要加载 loading、切换动画、模式切换(暗黑模式)、返回顶部、评论等功能呢,为了简化开发成本,我们可以直接使用主题,这里使用的主题是 vuepress-theme-rec(https://vuepress-theme-reco.recoluan.com/):
现在我们安装 vuepress-theme-reco:
module.exports = { // ... theme: 'reco' // ... }
然后在 config.js
里引用该主题:
--- title: 条件类型 author: 冴羽 date: '2021-12-12' ---
刷新一下页面,我们会发现一些细节的改变,比如加载时的 loading 动画、以及支持切换暗黑模式:
但我们也会发现,像条件类型这一篇文章,条件类型(Conditional Types)
config.js
를 수정하세요:module.exports = { // ... locales: { '/': { lang: 'zh-CN' } }, // ... }효과는 다음과 같습니다:🎜🎜🎜
🎜자세한 구성은 다음을 참조하세요. VuePress 탐색 모음: 🎜🎜https://vuepress.vuejs.org/zh/theme /default-theme-config.html#%E5%AF%BC%E8%88%AA%E6%A0%8F🎜
module.exports = { //... themeConfig: { subSidebar: 'auto' } //... }🎜
config.js에서 구성합니다. 🎜<pre class="brush:js;toolbar:false;">$accentColor = #3178c6</pre>🎜해당 효과는 다음과 같습니다. 🎜🎜<img src="https:%20//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b53be542e6134a0c8637034cf4048618~tplv-k3u1fbpfcp-watermark.%20awebp" alt="" loading="lazy" class="medium-zoom-image">🎜5. 테마를 변경하세요🎜🎜이제 기본 디렉터리 및 탐색 기능이 구현되었지만, 로드, 애니메이션 전환, 모드 전환(다크 모드), 맨 위로 돌아가기, 댓글도 원할 경우에는 개발 비용을 단순화하기 위해 테마를 직접 사용할 수 있습니다. 여기서 사용한 테마는 다음과 같습니다. vuepress-theme-rec (https://vuepress-theme-reco.recoluan.com/): 🎜🎜이제 vuepress-theme -reco를 설치합니다: 🎜<pre class="brush:js;toolbar:false;">// 通过检查,查看元素样式声明
.dark .content__default code {
background-color: rgba(58,58,92,0.7);
color: #fff;
}</pre>🎜그런 다음 <code>config.js
에서 테마를 참조합니다. >: 🎜.page .page-title { display: none; }🎜페이지를 새로 고치면 로딩 중 로딩 애니메이션, 다크 모드 전환 지원 등 몇 가지 세부적인 변경 사항을 확인할 수 있습니다. :🎜🎜🎜
Conditional Types )
가 두 번 나타나는 것은 이 항목이 자동으로 첫 번째 큰 제목을 제목으로 추출하기 때문입니다. 이 기사에서는 각 기사의 md 파일에 몇 가지 정보 수정 사항을 추가할 수 있습니다. 🎜module.exports = { // 路径名为 "/<REPO>/" base: '/learn-typescript/', //... }🎜이 때 기사의 효과는 다음과 같습니다. 🎜
但如果你不想要标题、作者、时间这些信息呢,我们可以在样式里隐藏,这个稍后会讲到。
注意,上图的文章时间,我们写入的格式为 2021-12-12
,但是显示的是 12/12/2021
,这是因为 VuePress 默认的 lang 为 en-US
,我们修改一下 config.js:
module.exports = { // ... locales: { '/': { lang: 'zh-CN' } }, // ... }
可以发现时间换了一种展示方式:
在原本的主题里,我们发现每篇文章的目录结构出现在左侧:
而 vuepress-theme-reco 将原有的侧边栏的中的多级标题移出,生成子侧边栏,放在了页面的右侧,如果你要全局开启,可在页面 config.js 里设置开启:
module.exports = { //... themeConfig: { subSidebar: 'auto' } //... }
此时效果如下:
VuePress 基于 Vue,所以主题色用的是 Vue 的绿色,然而 TypeScript 的官方色则是蓝色,那如何修改 VuePress 的主题色呢?
你可以创建一个 .vuepress/styles/palette.styl
文件,文件代码如下:
$accentColor = #3178c6
此时可以发现主题颜色变了:
更多的颜色修改参考 VuePress 的 palette.styl。
如果你想自定义修改一些 DOM 元素的样式呢?就比如在暗黑模式下:
我们发现用作强调的文字颜色比较暗淡,在暗黑模式下看不清楚,我想改下这个文字的颜色和背景色呢?
而 VuePress 提供了一种添加额外样式的简便方法。你可以创建一个 .vuepress/styles/index.styl
文件。这是一个 Stylus 文件,但你也可以使用正常的 CSS 语法。
我们在 .vupress 文件夹下创建这个目录,然后创建 index.styl 文件,代码如下:
// 通过检查,查看元素样式声明 .dark .content__default code { background-color: rgba(58,58,92,0.7); color: #fff; }
此时文字就清晰了很多:
那之前我们提到的隐藏每篇文章的标题、作者、时间呢,其实也是类似的方式:
.page .page-title { display: none; }
最后的效果如下:
我们的博客就算是正式的做好了,接下来我们部署到免费的 Github Pages 上。我们在 Github 上新建一个仓库,这里我取得仓库名为:learn-typescript
。
对应,我们需要在 config.js
添加一个 base
路径配置:
module.exports = { // 路径名为 "/<REPO>/" base: '/learn-typescript/', //... }
最终的 config.js
文件内容为:
module.exports = { title: 'TypeScript4 文档', description: 'TypeScript4 最新官方文档翻译', base: '/learn-typescript/', theme: 'reco', locales: { '/': { lang: 'zh-CN' } }, themeConfig: { // lastUpdated: '上次更新', subSidebar: 'auto', nav: [ { text: '首页', link: '/' }, { text: '冴羽的 JavaScript 博客', items: [ { text: 'Github', link: 'https://github.com/mqyqingfeng' }, { text: '掘金', link: 'https://juejin.cn/user/712139234359182/posts' } ] } ], sidebar: [ { title: '欢迎学习', path: '/', collapsable: false, children: [ { title: "学前必读", path: "/" } ] }, { title: "基础学习", path: '/handbook/ConditionalTypes', collapsable: false, children: [ { title: "条件类型", path: "/handbook/ConditionalTypes" }, { title: "泛型", path: "/handbook/Generics" } ], } ] } }
然后我们在项目 vuepress-starter
目录下建立一个脚本文件:deploy.sh
,注意修改一下对应的用户名和仓库名:
#!/usr/bin/env sh # 确保脚本抛出遇到的错误 set -e # 生成静态文件 npm run docs:build # 进入生成的文件夹 cd docs/.vuepress/dist git init git add -A git commit -m 'deploy' # 如果发布到 https://<USERNAME>.github.io/<REPO> git push -f git@github.com:mqyqingfeng/learn-typescript.git master:gh-pages cd -
然后命令行切换到 vuepress-starter
目录下,执行 sh deploy.sh
,就会开始构建,然后提交到远程仓库,注意这里提交到了 gh-pages
分支,我们查看下对应仓库分支的代码:
我们可以在仓库的 Settings -> Pages
中看到最后的地址:
마지막으로 생성한 주소는 https://mqyqingfeng.github.io/learn-typescript/
이제 VuePress 및 Github 페이지 배포가 완료되었습니다.
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 소개를 방문하세요! !
위 내용은 VuePress + Github Pages를 사용하여 블로그를 구축하는 방법을 빠르게 알려주는 기사(실용)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!