Thanks for the guides, I think I have the basics to get me started with Plugin dev.
Wanted to ask about whether its worth having an IDE for plugin development?
Secondly, I’m hosting my dev server on a remote cloud VPS because my laptop is too slow to run a VM locally at reasonable speed, as suggested by @Hector
In this setup, whats the best workflow?
Can I use some protocol to connect to the remote VPS files directly within an IDE running locally, or should I clone locally, edit, commit, then separately download from source control to server and restart to test?
I use both an IDE (IntelliJ IDEA) and a text editor (Notepad++) for working with code. Generally I start with the text editor for simple pre-alpha code and when things get more complex I import the code into an IDE project to make it easier to work with.
I have two localhost installs. One is “production” and the other “development”. I generally start in the development install where I can change folders and files without needing to pull them in from a GitHub repository. Once things get a bit more stable I put the code into a repo and pull the repo into the production install.
This could then keep my client files up-to-date with my remote dev server and then I could use an IDE/text editor locally to inspect and edit? Once happy with testing server side, I could commit the files directly?
Confirmed rsync is in default build of both macOS and Ubuntu 16.04 on Scaleway.
I use Unison File Synchronizer. The main difference with rsync is that it’s bidirectional. This is useful because you can build in the server or in your development machine. It also has a watch mode so that as soon as you save a file in your editor it’s syncrhonized with the server. You should exclude the .git directory from the syncronization. But you can pull from a repository in both machines and it recognizes that the same changes were made in both very fast. It works flawlessly.
Update: after a lot of manual package installation of dependencies on the server side to get the appropriate server running, I’ve managed to install https://nuclide.io which gives me a nice local graphical file browser for editing remote files within https://atom.io as if they were local … probably overkill … but now i can start navigating and hacking code efficiently on my remote dev server!
PS most of the work to achieve this was on the server side, so suggest you need a persistent dev server which obviously comes with a cost. The upside is you can have many clients which are quick to set up … just install Atom add the Nuclide add-in, enter your server credentials and you are good to go! Laptop, home workstation … easy!
For most stuff, I’m using atom.io with the remote-sync package together with a DigitalOcean box. Works like a charm and you can have it auto-save everything to remote. You can specify exclude directories so it won’t be spending efforts on your test and vendor directories.
Specifically for Discourse plugin development, I’ve been using https://janitor.technology/ since a few weeks.
UPDATE: nuclide is no longer supported sadly. I use VSCode now which has a native remote editing extension and has now become arguably much more slick than Atom (on which it is shamelessly based! )