Как изменить содержимое страницы VuePress через плагин - PullRequest
3 голосов
/ 07 марта 2019

Я пытаюсь настроить плагин для изменения содержимого файла уценки VuePress на сервере dev и в производственной сборке. Согласно документации, я должен иметь возможность использовать _content и _strippedContent, которые мне доступны с extendPageData

Следующий код - это то, что я настроил в плагине для этого.

module.exports = (options = {}, context) => ({
  extendPageData($page) {
    const {
      _filePath, // file's absolute path
      _computed, // access the client global computed mixins at build time, e.g _computed.$localePath.
      _content, // file's raw content string
      _strippedContent, // file's content string without frontmatter
      key, // page's unique hash key
      frontmatter, // page's frontmatter object
      regularPath, // current page's default link (follow the file hierarchy)
      path, // current page's real link (use regularPath when permalink does not exist)
    } = $page

    $page._content = "replaced"
    $page._strippedContent = "replaced"
  }
})

Лучшее, что я могу сказать, это то, что этот код должен работать, так как он обновляет $page._content, однако он показывает не testing, а скорее исходное содержимое.

Я знаю, что я вхожу в этот код, как только могу console.log из файла, и он отображается в консоли.

Я боюсь, что $page._content является неизменным, и мне интересно, есть ли способ сделать такой обмен содержимым во время dev или build

1 Ответ

0 голосов
/ 19 июля 2019

Я думаю, что Вы должны сделать это с использованием extendMarkdown https://v1.vuepress.vuejs.org/config/#markdown-extendmarkdown.

Попробуй вот так

// index.js

module.exports = () => ({
  name: 'vuepress-plugin-foo-bar',
  extendMarkdown: md => {
    const render = md.render;

    md.render = (...args) => {
      // original content
      const html = render.call(md, ...args);

      return 'new content';
    };
  },
});
...