我们为 Custom Wizard 插件创建了一个自定义 Sprockets 指令

Custom Wizard 插件会创建自己的 Ember 应用,并从 Discourse 核心借用部分资源。

为此,我们使用一个名为 wizard-custom.js 的 JavaScript 文件,其中包含针对各个文件的 Sprockets 指令。

在某些情况下,我们需要从同一文件夹中引入大量文件,曾一度考虑使用 require_tree,但遗憾的是,由于以下原因无法实现:

  • wizard-custom.js 文件位于插件内部,因此其 load path 与 Discourse 不同,我们只能引用 load path 内的文件。
  • 使用 require_tree 时,Sprockets 不允许使用绝对路径。

解决这一问题还将意味着插件因 Discourse 核心变更而崩溃的情况会减少。

为缓解这一问题,我们创建了一个自定义的 Sprockets 指令 require_tree_discourse,该指令专门使用绝对路径在 Discourse 文件夹内查找资源。包含该代码的 PR 如下:

这对 Discourse 开发者以及广大 Rails 开发者来说应该会很有趣。

很遗憾,我们不得不回滚此更改,因为它在生产环境中无法正常工作。

似乎插件的加载时间比读取 JS 文件的时间稍晚。

它确实可以工作。我们将很快重新引入此更改。

我们终于在我们的代码中引入了这一功能。

请注意,我预计我们将在12个月内放弃 sprockets,转而采用基于 ember-cli 的构建方式。@eviltrout 已经开始着手调查这一迁移工作。

提前告知,非常感谢。任何相关指引都将大有帮助。cc @angus