升级到 vuepress2.49

从 vuepress2.0.0-beta.40 开始,vuepress 使用了新的 api 接口,意味着原来的配置文件也要进行修改才能使其正确运行。


配置文件

请将如下代码放至到 ./vuepress 目录下:

点击查看 config.js
const navConf = require('../../config/navConf.js')
const pluginConf = require('../../config/pluginConf.js')
const sidebarConf = require('../../config/sidebarConf.js')
const headConf = require('../../config/headConf.js')
// const secretKeyConf = require('../../config/secretKeyConf')

const { defaultTheme } = require('vuepress')

module.exports = {
    lang: 'zh-CN',
    title: 'EchoXu Note',
    description: 'ENote 是一个记录 IT 知识点的文档生成器。IT 知识,文档管理,文档记录,文档生成器',
    // base: '/v2/',  // 部署时如果地址是:https://192.168.1.20/v2  这里的路径就要写为 /v2/ 如果是 / 就需要注释此项。
    head: headConf,
    plugins: pluginConf,

    theme: defaultTheme({
        logo: '/favicon.svg',

        docsDir: 'docs',

        navbar: navConf,

        sidebar: sidebarConf,
        sidebarDepth: 0,

        lastUpdatedText: '上次更新',
        contributorsText: '贡献者',

        tip: '提示',
        warning: '注意',
        danger: '警告',

        notFound: [
            '这里什么都没有',
            '我们怎么到这来了?',
            '这是一个 404 页面',
            '看起来我们进入了错误的链接',
          ],
        backToHome: '返回首页',

        toggleColorMode: '切换夜间模式',
        toggleSidebar: '切换侧边栏',

        themePlugins: {
            externalLinkIcon: false,
        },
        
    }),

    markdown: {
        // headers: {
        //     level: [2,3,4,5],
        // },
        toc: {
            level: [2,3,4,5],
        },
        code: {
            lineNumbers: false
        },
        
    }, 

}

请将插件配置文件放至到 /config 目录下:

点击查看 pluginConf.js
const { rightAnchorPlugin } = require('vuepress-plugin-right-anchor')
//const { searchPlugin } = require('@vuepress/plugin-search')
const { containerPlugin } = require('@vuepress/plugin-container')
const { pwaPlugin } = require('@vuepress/plugin-pwa')
const { docsearchPlugin } = require('@vuepress/plugin-docsearch')
const { sitemapPlugin } = require("vuepress-plugin-sitemap2");

module.exports = [
    rightAnchorPlugin({
        customClass: 'customClass',
        showDepth: 4,
        ignore: [
            '/'
        ],
        expand: {
            trigger: 'click',
            clickModeDefaultOpen: true
        }
    }),
    // searchPlugin({
    //     locales: {
    //         '/': {
    //             placeholder: 'Search',
    //         },
    //         '/zh/': {
    //             placeholder: '搜索',
    //         },
    //         maxSuggestions: 8,
    //     },
    // }),
    docsearchPlugin({
        apiKey: '你的 api key',
        appId: '你的 appID',
        indexName: '你的 index',
        locales: {
          '/': {
            placeholder: '搜索文档',
            translations: {
              button: {
                buttonText: '搜索文档',
              },
            },
          },
          '/zh/': {
            placeholder: '搜索文档',
            translations: {
              button: {
                buttonText: '搜索文档',
              },
            },
          },
        },
    }),
	sitemapPlugin({
      hostname: 'https://www.echoxu.cn',
    }),
    pwaPlugin({
        skipWaiting: true,
    }),
    containerPlugin({
        type: 'col2left',
    }),
    containerPlugin(
    {
        type: 'col2right',
    }),
    containerPlugin(
    {
        type: 'col2leftgray',
    }),
    containerPlugin(
    {
        type: 'col2rightbg',
    }),
    containerPlugin(
    {
        type: 'col2leftbgcode',
    }),
    containerPlugin(
    {
        type: 'col2rightbgcode',
    }),
    containerPlugin(
    {
        type: 'collapselist',
        before: (info) => `<details class="custom-container collapselist">${info ? `<summary>${info}</summary>` : ''}\n`,
        after: () => '</details>\n',
    }), 
    // titlenobg 用来取消背景色
    containerPlugin({
        type: 'col2leftnobg',
        before: (info) =>
        `<div class="custom-container col2leftnobg">${info ? `<p class="custom-container-title titlenobg">${info}</p>` : ''}\n`,
        after: () => '</div>\n',
    }),
    containerPlugin({
        type: 'col2rightnobg',
        before: (info) =>
        `<div class="custom-container col2rightnobg">${info ? `<p class="custom-container-title titlenobg">${info}</p>` : ''}\n`,
        after: () => '</div>\n',
    }),
    containerPlugin(
    {
        type: 'highlight-blue',
    }),
    
    containerPlugin({
        type: 'highlight-orange',
    }),
    containerPlugin({
        type: 'highlight-red',
    }),
    containerPlugin({
        type: 'highlight-green',
    }),
    containerPlugin({
        type: 'highlight-purple',
    }),
    containerPlugin({
        type: 'highlight-gray',
    }),
    containerPlugin({
        type: 'img-grid',
    }),
    containerPlugin({
        type: 'content-flex',
    }),
]



升级至 2.0.0-beta.49

下载插件

  • 下载 vuepress-plugin-right-anchor,此插件已支持 vuepress-2.0.0-beta.49,只是它的 package.json 中版本指定为 2.0.0-beta.45
  • unzip -o vuepress-plugin-right-anchor-2.1.0-rc.2.zip

安装悬浮目录插件

  • cd vuepress-plugin-right-anchor-2.1.0-rc.2
  • 创建新的 vuepress 目录:mkdir vuepress
  • 修改插件的 package.json 使其支持 vuepress2.0.0-beta.49,需要修改两处
    • sed -i 's/2.0.0-beta.45/2.0.0-beta.49/g' example/package.json
    • sed -i 's/2.0.0-beta.45/2.0.0-beta.49/g' package.json
  • 删除 vuepress-plugin-right-anchor-2.1.0-rc.2 下的 yarn.lock,防止报错,rm -rf yarn.lock
  • 在 vuepress-plugin-right-anchor-2.1.0-rc.2 下执行:yarn install
  • 复制所需的文件:cp example/package.json vuepress/
  • 将 vuepress-plugin-right-anchor-2.1.0-rc.2/package.json 中 example 全部替换为 vuepress:sed -i 's/example/vuepress/g' package.json
  • 将插件安装到 vuepress 目录:yarn build:vuepress

安装最新版本的 vuepress

  • 为新的 vuepress 安装依赖:cd vuepress && yarn install
  • 复制你的文档到新的 vuepress 中:
    • 进入原来的 vuepress 目录然后复制docs 下除了 .vuepress 目录的所有内容到新的 vuepress 下的 docs 目录
    • 进入原来的 vuepress 目录然后复制 docs/.vuepress 下的 styles、public、config.js 到新的 vuepress/docs.vuepress 目录下,点我查看配置文件,这里一定不要复制 .cache 和 .temp 目录,dist 目录也不要复制
    • 进入原来的 vuepress 目录然后复制 config、deploy.sh、.gitignore
    • 如有其它内容也要复制进去,我这里有如下文件需要复制:getmdlinkAfter.txt、getmdlinkBefore.txt、getmdLink.sh、images、imgbak、uploadQN-linux.sh
  • 安装需要的插件,插件是否启用相关设置
# 如果使用默认的搜索请使用:@vuepress/plugin-search@2.0.0-beta.49
yarn add -D @vuepress/plugin-docsearch@2.0.0-beta.49
yarn add -D @vuepress/plugin-container@next
yarn add -D @vuepress/plugin-pwa@2.0.0-beta.49
yarn add -D vuepress-plugin-sitemap2
  • 使用新的 vuepress
    • 将 vuepress 目录移动到 ~/Programe 中
    • 运行:cd vuepress && yarn docs:dev
  • 部署时需要修改 deploy.sh 中的 vuepress 版本号为 vuepress2.0.0-beta.49


FAQ

问:@vuepress/plugin-search: Uncaught (in promise) Error: useRouteLocale() is called without provider.

上次更新:
贡献者: iEchoxu