Chaque fois que vous créez ou installez un thème ou un composant, Discourse lui attribue un identifiant. Si vous visitez la page de ce composant, vous devriez voir cet identifiant dans l’URL (le nombre à la fin).

Lorsque ce composant est ajouté à votre thème, son ordre d’exécution semble être basé sur son identifiant — de manière très basique (en effectuant un console.log sans aucun report). Ainsi, 233 s’exécutera avant 234, et ainsi de suite.
Cela fonctionne pour la plupart des cas car les modifications ultérieures sont généralement ajoutées dans de nouveaux composants, ce qui fait que tout fonctionne simplement.
À long terme, nous pourrions faire en sorte que l’ordre respecte celui de la liste des composants que vous avez ajoutés au thème.
mais cela ne figure sur aucune feuille de route pour le moment.
Ce dont vous avez vraiment besoin, c’est d’un ordre d’initialisation. Je ne pense pas que vous puissiez le faire sauf si vous déplacez votre code vers la nouvelle méthode de création de JS de thème. Cette méthode vous permet de donner un nom et un ordre d’exécution à l’initialiseur. Par exemple, disons que j’ai ce fichier
/javascripts/discourse/initializers/initialize-for-foo.js
et qu’il ressemble à ceci
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "foo",
initialize() {
withPluginApi("0.8.7", api => {
console.log("foo")
});
}
}
et que j’ai un autre initialiseur qui ressemble à ceci
/javascripts/discourse/initializers/initialize-for-bar.js
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "bar",
initialize() {
withPluginApi("0.8.7", api => {
console.log("bar")
});
}
}
Si je veux m’assurer que bar s’exécute après foo, je peux ajouter un argument after: à celui-ci, ce qui garantira qu’il s’exécute après le nom de l’initialiseur que je passe. Ainsi, pour faire en sorte que bar s’exécute après foo, je ferais ceci dans
/javascripts/discourse/initializers/initialize-for-bar.js
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "bar",
+ after: "foo",
initialize() {
withPluginApi("0.8.7", api => {
console.log("bar");
});
}
};