mirror of
https://github.com/discourse/discourse.git
synced 2025-03-26 13:45:36 +08:00
DEV: Support colocation of component templates in plugins (#18598)
This allows plugins to colocate component JS and HBS under `/plugins/{name}/assets/javascripts/discourse/components`. `discourse-presence` is updated to use this new pattern, which also serves as an integration test for this part of the build pipeline.
This commit is contained in:
parent
7e372b3a15
commit
f5419521f0
app/assets/javascripts/discourse-plugins
plugins/discourse-presence/assets/javascripts/discourse
components
connectors
@ -0,0 +1,19 @@
|
||||
const ColocatedTemplateProcessor = require("ember-cli-htmlbars/lib/colocated-broccoli-plugin");
|
||||
|
||||
module.exports = class DiscoursePluginColocatedTemplateProcessor extends (
|
||||
ColocatedTemplateProcessor
|
||||
) {
|
||||
detectRootName() {
|
||||
const entries = this.currentEntries().filter((e) => !e.isDirectory());
|
||||
|
||||
const path = entries[0]?.relativePath;
|
||||
|
||||
const match = path?.match(
|
||||
/^discourse\/plugins\/(?<name>[^/]+)\/discourse\//
|
||||
);
|
||||
|
||||
if (match) {
|
||||
return `discourse/plugins/${match.groups.name}/discourse`;
|
||||
}
|
||||
}
|
||||
};
|
@ -7,6 +7,7 @@ const mergeTrees = require("broccoli-merge-trees");
|
||||
const fs = require("fs");
|
||||
const concat = require("broccoli-concat");
|
||||
const RawHandlebarsCompiler = require("discourse-hbr/raw-handlebars-compiler");
|
||||
const DiscoursePluginColocatedTemplateProcessor = require("./colocated-template-compiler");
|
||||
|
||||
function fixLegacyExtensions(tree) {
|
||||
return new Funnel(tree, {
|
||||
@ -169,6 +170,8 @@ module.exports = {
|
||||
tree = namespaceModules(tree, pluginName);
|
||||
|
||||
tree = RawHandlebarsCompiler(tree);
|
||||
|
||||
tree = new DiscoursePluginColocatedTemplateProcessor(tree);
|
||||
tree = this.compileTemplates(tree);
|
||||
|
||||
tree = this.processedAddonJsFiles(tree);
|
||||
|
Loading…
x
Reference in New Issue
Block a user