plugins - 尝试写一个 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”下的项目目录中
任何想法表示赞赏
解决方案
现在它可以工作了。两个问题:
我正在运行/调试的版本与 package.json 中的版本不同。有 vuepress 可执行文件和插件所需的 vuepress 库。该库在运行时始终是旧版本。
我需要将 index.html 中的路径导入从更改
const { path } = require('path')
为const { path } = require('@vuepress/shared-utils').
这是我的文档问题 - 我在任何地方都没有看到记录。
感谢@Sun Haoran让我找对了地方。
推荐阅读
- mysql - 如何在一列中计算多个不同类型的总数
- linux - 将来自独立 nginx 服务的外部流量路由到 kubernetes nginx 入口
- google-cloud-platform - 限制服务帐户可以配置的角色和资源的最佳实践
- java - Spring AnnotationConfigApplicationContext StartupStep spring.context.annotated-bean-reader.create
- javascript - 在 Jest 中模拟 HTML 元素
- python - 使用 suds 在 python 中解析 ArrayOfArrayOfStrings
- webpack - Webpack4车把项目文件夹连字符问题
- string - 如何在颤动中动态出现的字符串之间添加间距?
- javascript - 使 Paypal 按钮重定向而不是打开弹出窗口
- javascript - javscript 中的 replaceAll 函数不会替换所有出现的事件