草庐IT

使用 vuepress 快速搭建文档

风筝啊 2023-10-07 原文

vuepress官方教程,em...也是用vuepress搭建的,哈哈。

这句很经典,也是表明了vuepress最好的用处:
VuePress 专注在以内容为中心的静态网站上,同时提供了一些为技术文档定制的开箱即用的特性。

当前版本v1.0

使用这个框架,不需要服务器,不需要空间,只要有支持pages的git托管仓库就可以搭建一个技术文档站点,任性!当然你也可以放到自己的服务器上直接作为静态网站使用,无所谓。

我这里使用的是码云Gitee,国内的,好用!

在码云上申请账号,然后新建仓库,这些流程不做演示了。我这里的仓库名称是vuepress划重点,后面要用!!!

image.png

因为后面所作的操作,都在这里面,后面还要用到这个仓库

git到本地(从下图指示找仓库下载地址位置,按个人喜欢的方式把项目clone到本地)

git clone https://gitee.com/axhuangs/vuepress.git
image.png

image.png

进入到本地仓库,并且安装vuepress框架到本地(npmyarn喜欢哪个都行,但是需要安装相应的工具)

下面开始按顺序来做:

1. 使用你喜欢的包管理器进行初始化, 我比较喜欢npm

npm init
// yarn init

最后会有一句确认信息截图没有截全Is this OK? (yes) 敲入yes或者y直接回车就可以

image.png

2.将 VuePress 安装为本地依赖(就是下载vuepress框架到本地)

npm install -D vuepress
//yarn add -D vuepress
image.png

image.png

不要在意太多黄色的细节,正经的应该这样就表明安装成功了。

另外我一直再用vscode的窗口操作,所以项目完成之后,会出现下面的提示:

image.png

点击,主要是一般node_modules文件有的没有的一大堆(有一部分这个原因,所以node的作者又生了个新儿子deno),占空间比较大,所以一般情况下咱们不上传到远端,浪费空间,有package.json文件,在这个项目下载到别的地方的时候在根目录运行npm install一下就可以了,你会惊奇的发现,node_modules又出来了。

3.重点来了!新建第一个文档

老老实实创建一个文件夹docs, 然后新建一个文件README.md,并且用markdown的方式写上一句,嗯,老老实实..., 我这里用官方提供的方式,报错...

# Hello VuePress

4.在 package.json 中添加下面的话

{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}

很重要的两句话,一句是运行本地开发环境,一句是打包准备部署到线上的文件

5.在本地启动服务器 来查看成果了

npm run docs:dev
//yarn docs:dev

经过各种输出和好看的进度条之后,你会看到下面的信息:

image.png

说明启动起来了,浏览器打开: http://localhost:8080/:

image.png

那么现在你修改README.md文件, 这里会实时更新
image.png

到这里,前期搭建基本上及可以算是搞定了。
如果需要markdown的书写方式的话,可以去看看

再墨迹点很重要的东西最后在说怎么布置到码云上

现在顶部和左侧还是跟官方文档差点儿东西

左侧导航配置
docs文件夹下新建文件夹.vuepress 并且新建config.js

module.exports = {
    title: 'vuepress文档',  // 文档标题,左上角显示
    description: 'vuepress文档描述',
    base: '/vuepress/', // 这里写你的仓库名称
    head: [
        ['link', { rel: 'shortcut icon', type: "image/x-icon", href: `/jyjwebdocs/favicon.ico` }]
    ], //这里配置你的网页头部信息等
    themeConfig: {
        /**
         * 设置侧边栏最大深度
         * 一般是以单个md文件中的 # ## ### #### 这几个标题文字为锚点自动生成导航
         * **/
        sidebarDepth: 4,
        // 设置侧边栏内容
        sidebar: [
            {
                title: '第一个侧边栏',
                collapsable: false,  // 是否具有展开收起功能
                children: ['/firstslde/']  // 这个是根据自己的需求来订,对应自己在docs下的文件夹名,默认首页是README.md
            }
        ]
    }
}

注意:每次配置config.js文件都需要重新运行一下项目

这是目前的目录结构:


image.png

这是docs/firstside/README.md下的内容:

# 第一个侧边栏

firstside
firstside

firstside

firstside

## 二级第一个侧边栏

二级第一个侧边栏
二级第一个侧边栏

## 二级第二个侧边栏

二级第二个侧边栏
二级第二个侧边栏

### 三级第一个侧边栏
三级第一个侧边栏
三级第一个侧边栏
三级第一个侧边栏

## 二级第三个侧边栏
二级第三个侧边栏
二级第三个侧边栏
二级第三个侧边栏

重新运行npm run docs:dev之后效果是这样的:

image.png

当然有的时候整篇内容会比较长,或者分不同的模块,那么就可以多建几个md文件,并在config.js中配置一下

比如我在/firstside/文件夹下创建了otherModel.md文件,并创建了child文件夹,如下:


image.png

config.js的配置是这样的:

        // 设置侧边栏内容
        sidebar: [
            {
                title: '第一个侧边栏',
                collapsable: false,
                children: ['/firstside/', '/firstside/otherModel', '/firstside/child/'] 
            }
           // 根据自己的需求来订,对应自己在docs下的文件夹名,默认首页是README.md
        ]

运行效果是这样的:

image.png

config.js中的sidebar的配置方式可以组合各种姿势,下面只是一个小栗子,可以试下,当然开启更多组合,需要你来定,这里只是介绍一下基础方式

这是目录结构:


image.png

这是config.js侧边栏设置

// 设置侧边栏内容
        sidebar: [
            {
                title: '第一个侧边栏',
                collapsable: false,
                children: ['/firstside/', '/firstside/otherModel', '/firstside/child/']  // 这个是根据自己的需求来订,对应自己在docs下的文件夹名,默认首页是README.md
            },
            {
                title: '第二个侧边栏',
                collapsable: true, // 开启展开收起功能,注意下图中菜单名称旁边的小角标
                children: [
                    '/second/',
                    {
                        title: '侧边栏组合',
                        collapsable: true,
                        children: [
                            '/second/child/',
                            '/second/child/secondChild'
                        ]
                    }
                ]
            }
        ]

最后的展示效果:


image.png

侧边栏差不多就这些了,当然还有顶部导航部分设置

// 设置菜单
        nav: [
          { text: '首页', link: '/' },
          { text: '其他文档', items: [
            { text: 'demo1', link: 'http://www.baidu.com' },
            { text: 'demo2', link: 'http://www.baidu.cn' },
          ] }
        ],

navsidebar为同级

效果:


image.png

config.js的全部内容

module.exports = {
    title: 'vuepress文档',
    description: 'vuepress文档描述',
    base: '/vuepress/', // 这里写你的仓库名称
    head: [
        ['link', { rel: 'shortcut icon', type: "image/x-icon", href: `/jyjwebdocs/favicon.ico` }]
    ], //这里配置你的网页头部信息等
    themeConfig: {
        nav: [
            { text: '首页', link: '/' },
            { text: '其他文档', items: [
              { text: 'demo1', link: 'http://www.baidu.com' },
              { text: 'demo2', link: 'http://www.baidu.cn' },
            ] }
          ],
        /**
         * 设置侧边栏最大深度
         * 一般是以单个md文件中的 # ## ### #### 这几个标题文字为锚点自动生成导航
         * **/
        sidebarDepth: 4,
        // 设置侧边栏内容
        sidebar: [
            {
                title: '第一个侧边栏',
                collapsable: false,
                children: ['/firstside/', '/firstside/otherModel', '/firstside/child/']  // 这个是根据自己的需求来订,对应自己在docs下的文件夹名,默认首页是README.md
            },
            {
                title: '第二个侧边栏',
                collapsable: true,
                children: [
                    '/second/',
                    {
                        title: '侧边栏组合',
                        collapsable: true,
                        children: [
                            '/second/child/',
                            '/second/child/secondChild'
                        ]
                    }
                ]
            }
        ]
    }
}

基本上页面配置就这些,主要还是config.js的配置

如果想放入图片的话

个人觉得最好的方式就是哪里需要放哪里,但是目前还没想到怎么配置

目前总结到的方法是,把图片放到新建目录.vuepress/public/assets/下,

这样打完包之后图片会被load到dist/assets/下面

image.png

然后再使用的地方,基本可以用两种方式引入

![firstside_01](/vuepress/assets/firstside_01.jpg)

<img :src="$withBase('/assets/firstside_01.jpg')" alt="foo">

效果是这样的

image.png
image.png

最最重要的点来了

打包:

npm run docs:build
image.png

打包完成,使用git把整个源码上传到码云吧

然后来到码云的仓库喽

image.png

找到你的仓库,打开Gitee Pages

image.png

点击启动,等待部署完成

image.png

大工告成,上面已经出现了你的文档链接

注意:每次修改文档内容,哪怕一个标点符号,都需要到这里更新一下,才能正确显示文档

有关使用 vuepress 快速搭建文档的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐