Sempre que você criar ou instalar um tema ou componente, o Discourse atribuirá um ID a ele. Se você visitar a página desse componente, deverá ver esse ID na URL (o número no final)

Quando esse componente é adicionado ao seu tema, sua ordem de execução parece ser baseada no seu ID — em um nível muito básico (fazendo um console.log sem qualquer adiamento). Assim, o 233 será executado antes do 234, e assim por diante.
Isso funciona na maioria dos casos porque alterações subsequentes geralmente são adicionadas em novos componentes, então simplesmente funciona.
A longo prazo, poderíamos fazer com que a ordem respeite a lista de componentes que você adicionou ao tema
mas isso não está em nenhum roteiro no momento.
O que você realmente precisa é da ordem dos inicializadores. Não acho que seja possível fazer isso a menos que você mova seu código para o novo modo de criar JS de tema. Esse método permite que você dê um nome ao inicializador e defina a ordem de execução. Por exemplo, digamos que eu tenha este arquivo
/javascripts/discourse/initializers/initialize-for-foo.js
e ele se pareça com isso
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "foo",
initialize() {
withPluginApi("0.8.7", api => {
console.log("foo")
});
}
}
e eu tenha outro inicializador que se pareça com isso
/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")
});
}
}
Se eu quiser garantir que bar seja executado após foo, posso adicionar um argumento after: a ele, o que garantirá que ele seja executado após o nome do inicializador que eu passar ali. Então, para fazer bar ser executado após foo, eu faria isso em
/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");
});
}
};