benjycui / bisheng

Transform Markdown(and other static files with transformers) into a SPA website using React.
MIT License
2.9k stars 419 forks source link

【bug】plugins加载顺序不同会导致bisheng-plugin-toc报错 #226

Closed Luin-Li closed 4 years ago

Luin-Li commented 4 years ago

如标题,如果我的定义如下:

plugins: [
    'bisheng-plugin-description', 
    'bisheng-plugin-react?lang=__react',
    'bisheng-plugin-antd?injectProvider',
    'bisheng-plugin-toc?maxDepth=2&keepElem',
  ],

会爆这样的错, 微信截图_20200827155653 但是如果我把顺序改成如下,就不会报错:

plugins: [
    'bisheng-plugin-description', 
    'bisheng-plugin-react?lang=__react',
    'bisheng-plugin-toc?maxDepth=2&keepElem',
    'bisheng-plugin-antd?injectProvider'
  ],

虽然plugins插件从左到右依次加载,是有顺序的,但是我的理解,前面插件的加载不应该影响后面其他插件(bisheng-plugin-toc)的加载,不是吗 @zombieJ

zombieJ commented 4 years ago

bisheng-plugin-antd 依赖于 bisheng-plugin-toc 编译的 markdown 数据,交换顺序就没有数据了。

Luin-Li commented 4 years ago

@zombieJ bisheng-plugin-toc不是只是创建一个类似目录的东西吗,我可以不使用的呀,类似下面这两种写法都不会报错:

plugins: [
    'bisheng-plugin-description',
    'bisheng-plugin-toc?maxDepth=2&keepElem',
  ],

plugins: [
    'bisheng-plugin-description',
    'bisheng-plugin-antd?injectProvider',
    'bisheng-plugin-react?lang=__react',
  ],

既然都可以单独使用,是不是就不应该有耦合关系......

zombieJ commented 4 years ago

看了一下,讲错了。bisheng-plugin-antd 是最后一个环节,直接给官网使用使用。它会修改 bisheng 编译产物,所以它插入哪个中间都会把原来的搞挂掉。