You can write 2 types of plugins for the DMX platform. Both rely on the DMX backend and data model, but differ at the frontend:
Plugins that extend the DMX Webclient.
You can e.g. mount custom (Vue) components to the Webclient’s toolbar or provide custom renderers for e.g. the detail panel. You’re fixed to use Vue (and Vuex) as this is the technology the DMX Webclient is based on.
Plugins that create a proprietary web frontend – besides the DMX Webclient (like e.g. the dm5-mobile plugin).
In this case you’re free to choose any frontend technology you like.
What kind of plugin do you want develop?
As you mention Elm I guess you’re aiming for 2.
In this case the dm5-plugin-template is not suitable.
See the webpack.config.js of the dm5-mobile project as a template instead.
But in case you’re aiming for 1.: from my point of view, architecturally it does not make lot of sense to mix Elm and Vue/Vuex in one application as both perform basically the same task (state management and reactivity). Although technically possible, by mixing both technologies you buy unnecessary complexity, resulting in more headaches than needed, in particular when it comes to more advanced components. (Besides that your plugin will grow in size.)
That said, if you change your dmx-zettelkasten
webpack.config.js like this (exactly as appearing in elm-vue-bridge’s
exclude: [/elm-stuff/, /node_modules/],
… then the webpack build works:
dmx-zettelkasten$ npm install
dmx-zettelkasten$ npm run build
> firstname.lastname@example.org build /Users/jri/Documents/DMX/Development/modules-external/dmx-zettelkasten
> ../../node_modules/.bin/webpack -p --hide-modules
Version: webpack 4.41.5
Built at: 02/06/2020 10:57:51 AM
Asset Size Chunks Chunk Names
6d0ce3d676cecf7ddd63.style.css 34 bytes 0 [emitted] [immutable] main
ae7fd52ee9425f3c7e48.plugin.js 37.8 KiB 0 [emitted] [immutable] main
I’m very interested in Elm, but unfortunately have no experience yet. Developing a DMX based frontend in Elm (e.g. the Zettelkasten application) that runs independently from the DMX Webclient, would be a very interesting task.