首页 > 解决方案 > 尝试写一个 vuepress 插件

问题描述

(关于编写插件的文档非常稀少......)

目标

创建一个插件来向页面添加标题。

尝试

创建了一个遵循指南的插件和一个示例插件(大概可以工作......)来做类似的事情。

问题

插件不会加载。

配置.js

  plugins: [
    [
    'vuepress-plugin-headertags',
    { headerTags: ["<script src='https://cdn.jsdelivr.net/npm/netlify-identity-widget@1.5.2/build/netlify-identity-widget.min.js'></script>"]}
    ]
  ],

(在这种情况下,我要插入 <script> 标签。

插件 index.js

const { path } = require('path')
// was:  const { path } = require('@vuepress/shared-utils')
// dunno.  No documentation on this...
// got the current version from the 'default-theme' code

module.exports = (options) => ({
  define () {
    return {
      headerTags: options.headerTags || []
    }
  },
  enhanceAppFiles () {
    return [path.resolve(__dirname, 'enhanceAppFile.js')]
  },
  globalUIComponents: ['HeaderTags']
})

插件安装 我将它发布到 npm as vuepress-plugin-headertags,然后安装它:

yarn add -D vuepress-plugin-headertags

这是相关的 package.json 内容:

{
  "name": "vuepress-netlifycms",
  "version": "0.0.0",
  "scripts": {
    "dev": "vuepress dev",
    "build": "vuepress build",
    "debug": "node --nolazy --inspect=9229 /home/rickb/.yarn/bin/vuepress build"
  },
  "devDependencies": {
    "vuepress": "^0.14.8",
    "vuepress-plugin-headertags": "^1.0.3"
  },
  "dependencies": {}
}

VUEPRESS 安装

我从 git 克隆了 vuepress repo 并做了一个 yarn 链接,这使它在全球范围内可用。有了它,我可以通过“调试”脚本在调试器中跟踪它。

追踪

我已经在调试器中跟踪了 VP 源代码并resolvePathPackage()进入moduleResolver.js. 传入路径不正确:

/home/(...)/VuePress-NetlifyCMS/vuepress-plugin-headertags

它应该是:

/home/(...)/VuePress-NetlifyCMS/node_modules/vuepress-plugin-headertags

无论如何,即使在“标准化”过程之后,它也无法解决。

更多的眼睛

我需要更多的关注来帮助我弄清楚。该项目已经在 github 上以“rickbsgu/VuePress-NetlifyCMS.git”的形式发布。如果您进行安装,插件将位于“node_modules/vuepress-plugin-headertags”下的项目目录中

任何想法表示赞赏

标签: pluginsvuepress

解决方案


现在它可以工作了。两个问题:

  • 我正在运行/调试的版本与 package.json 中的版本不同。有 vuepress 可执行文件插件所需的 vuepress 库。该库在运行时始终是旧版本。

  • 我需要将 index.html 中的路径导入从更改const { path } = require('path')const { path } = require('@vuepress/shared-utils'). 这是我的文档问题 - 我在任何地方都没有看到记录。

感谢@Sun Haoran让我找对了地方。


推荐阅读