更新标准插件的步骤

我有一个使用标准 Docker 安装创建的小型的自托管 Discourse 站点。多年来,我通过编辑 containers/app.yml 文件末尾的钩子来 git clone 插件仓库,安装了许多插件。我也做过一些插件开发。

然而,几个月前,许多标准插件被合并到了 Discourse 核心中。假设我 fork 了整个 Discourse 仓库,编辑了其中一个插件(比如 discourse-math),并在我的本地开发环境中使更改完美运行。如何将这个新插件应用到我的生产 Discourse 实例中的流程是什么?

顺便问一下——你为什么要分叉任何官方插件?

无论如何,在 app.yml 中,你可以运行一个命令来删除特定的插件目录,然后克隆你自己的,如果你绝对需要的话,例如:

<in after_code: somewhere >
    - exec:
        cd: $home/plugins
        cmd:
          - rm -r poll
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/myaccount/myplugin-replacement.git

你也许可以这样做,但请检查:

<in after_code: somewhere >
    - exec:
        cd: $home/plugins
        cmd:
          - rm -r poll
          - git clone https://github.com/myaccount/myplugin-replacement.git

我没有特别注意空格——请确保缩进是完美的。

2 个赞

因为我希望更新 discourse-math 插件使用的过时的 MathJax 版本。

好的,在我看来,我缺少的是这一行:

cmd:
  - rm -r poll

不过要说清楚,poll 是什么? 我认为我应该删除旧的 discourse-math 目录以防止我似乎遇到的冲突。也就是说,类似这样的命令

cmd:
  - -r plugins/discourse-math

看起来不像是一个可以随意运行的好的命令。 :slight_smile:

犯错也没关系,如果犯了就重建。

我的例子是使用 poll 插件。

不要重复插件目录。

2 个赞

@merefield 顺便说一下,我想你可能会喜欢我主页上的动画:https://discourse.marksmath.org/

我在制作过程中用了一些你的代码。

1 个赞

哈哈,不错,现在给用户卡片也加上点击功能!:slight_smile:

2 个赞

这招奏效了,@merefield - 非常感谢!!!

1 个赞

这可能是官方插件中一个 pr-welcome(欢迎拉取请求)的更改。如果您有兴趣尝试为所有依赖该插件的用户做点贡献,请开启一个 Feature(功能)主题来提议它。

3 个赞