This folder contains a sample plugin for Mailspring that adds components to the composer's "action bar" and the right sidebar shown in the message viewer.
Copy or symlink this project into ~/Library/Application Support/Mailspring/packages
on MacOS, or the corresponding location on Windows and Linux. (You can find this directory by going to Developer > Show Mailsync Logs in Mailspring).
You can rename this directory and change the name
field of package.json
to rename your plugin. Keep in mind that plugins are like node modules and the names cannot contain spaces!
To get started, run npm install
in your plugin's directory and then npm run-script build
to compile the src
folder into the lib
folder. To see your changes in Mailspring, quit and relaunch the app OR open the developer tools and reload the app's main window.
For documentation of how to build plugins, check out https://foundry376.github.io/Mailspring/ for (slightly outdated) information and also have a look at the many plugins that ship within the core app: https://github.com/Foundry376/Mailspring/tree/master/app/internal_packages. Some of the bundled plugins, like composer-translate
, composer-templates
, and phishing-detection
are great starting points!
Mailspring does not transpile the source code in your plugin when it runs - it expects that your JSX files, TypeScript, etc. has already been converted to plain ES2017 JavaScript. To give your plugin to other people, you should commit the lib
directory so that they can download the repository, put it in place via the "Install a Plugin..." menu item in Mailspring, and be done.
In the next year or so, we'll be launching a first-class "plugin gallery" in Mailspring and formalizing the development and release processes. Right now, building a plugin using TypeScript is a real pain because Mailspring - while written in TypeScript - doesn't export the types for you to build against. Stay tuned!
Right now, if your plugin depends on external node modules (say, a CSV parser like node-csv
), you'd need to package up a zip file that contained those modules already installed in node_modules
, or have your users run npm install
. In the future, Mailspring will run npm install for you.
However, we do not plan to support Mailspring plugins that require native node modules - the kind that compile C++ or C code into platform-specific binaries. It's really hard to ship all of the tooling required to build these reliably, pre-packing them for each platform is annoying, and they often break when the node / nan versions change. Be warned! (An example of this would be sqlite
or something like node-addressbook
. You can often tell if a module contains native code if there is a binding.gyp
file or if the install process takes a while and calls out to make
or gcc
.)