# Como posso criar meus próprios plugins do Discourse?

**URL:** https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032
**Category:** Development
**Created:** [Junho 16, 2018, 8:39pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032 "2018-06-16T20:39:28Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Blinq](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/blinq/32/98523_2.png) [@Blinq](https://meta.discourse.org/u/Blinq)
#### Post date: [Junho 16, 2018, 8:39pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032/1 "2018-06-16T20:39:28Z")

</div>

Hi, I want to make my own discourse plugins and what languages I need to know and what tools/programs/apps I need to do so. I appreciate it.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Junho 16, 2018, 8:57pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032/2 "2018-06-16T20:57:19Z")

</div>

Eu só comecei agora, mas aqui está minha “dica inicial” para você começar:

Leia:

- [estes](https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins-part-1/30515)
- [este](https://meta.discourse.org/t/how-to-start-building-stuff-for-discourse-if-youre-newbie-like-myself/45954)
- Tente ler o código dos plugins mais simples, [mas populares](https://meta.discourse.org/c/plugin/l/top/yearly), e veja se consegue entender o que eles fazem (nem sempre é fácil, especialmente com a complexidade de lidar com múltiplos arquivos e a às vezes brutal brevidade funcional do JavaScript, mas persista)

Você precisa aprender:

- Muito JavaScript (não precisa ir além dos excelentes e divertidos (!) vídeos de @mpj, [Fun Fun Function](https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q) (obrigado, mano!))
- Muito Ember e um pouco de Ruby ([Comece aqui](https://www.youtube.com/watch?v=siIZb0yClQ4&t=190s))
- Github e Git
- (E HTML/CSS, claro!)

Instale:

- [Atom](https://atom.io) e considere o excelente complemento [nuclide](https://nuclide.io), que facilita a navegação e edição remota de árvores de arquivos
- Uma instância de desenvolvimento do Discourse [usando este guia](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-ubuntu-for-development/14727), de preferência em um servidor em nuvem barato, e provavelmente instale [o plugin de localizações de outlet](https://meta.discourse.org/t/plugin-outlet-locations/29589) para tornar as coisas mais visuais.

---

<div class="post-metadata">

### Author: ![Blinq](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/blinq/32/98523_2.png) [@Blinq](https://meta.discourse.org/u/Blinq)
#### Post date: [Junho 16, 2018, 10:47pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032/3 "2018-06-16T22:47:50Z")

</div>

I appreciate it! What “kind” of JavaScript, like web or node.js?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Junho 16, 2018, 11:00pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032/4 "2018-06-16T23:00:02Z")

</div>

[ECMAScript](https://en.m.wikipedia.org/wiki/ECMAScript). It’s used in both ‘places’.

---

<div class="post-metadata">

### Author: ![Blinq](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/blinq/32/98523_2.png) [@Blinq](https://meta.discourse.org/u/Blinq)
#### Post date: [Junho 17, 2018, 7:45pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032/5 "2018-06-17T19:45:25Z")

</div>

Would I just make a new atom file named `plugin.js` and work on a plugin there?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Junho 17, 2018, 7:53pm UTC](https://meta.discourse.org/t/how-can-i-make-my-own-discourse-plugins/90032/6 "2018-06-17T19:53:11Z")

</div>

No. There are no ‘.js’ files. JavaScript is mainly stored in ‘.js.es6’ files. Ruby in ‘.rb’ files. It’s more complex. Take a look at existing plugins for example file arrangement and content. You need to understand serialisation, Ember templates, the Router and the Model, View, Controller concept.

I would highly recommend you install a simple existing plugin of your choice and try modify it in some sensible way.

Dont skip on the reading.

I think it’s fair to say is a pretty steep learning curve because there are a lot of concepts to get to grips with, two languages, one framework and Discourse’s ‘way of doing things’ …
