Most popular elm related npm packages by usage

Problem

Finding a fair way to rank packages or tools is not easy.

Method tested

I am currently evaluating a popularity ranking that aims to be more fair than github stars or download counts and is based on real usage in open source projects. For now it ignores documentation or tests, but I believe that real usage is impacted implicitly by those, even if explicit evaluation could be also useful.

I will start with a ranking of npm tools and packages related to elm.
More exactly, all npm packages matching the regex /(^|-|/)elm(-|$)/and whose last release is more recent than elm 0.19.0 one (if your tool was not included because of this filter and works with 0.19.x, tell me about it, I will add it manually if possible).

The ranking uses the number of public repositories that depend of the tool. This value can be found for npm tools on GitHub in “Insights -> Dependency graph -> Dependents”, it also usually appears since recently on the repository homepage next to stars as “Used by”. As far as I can tell, it includes indirect dependencies.

As a consequence to using GitHub to find dependents, packages without a GitHub repository informed in the package.json have a ranking of 0 except for those I added manually (elm-verify-examples, elm-pages, elm-canvas).

Also to avoid giving an unfair advantage to old tools compared to new tools, the value found is divided by the number of moons (28 days) since the first release of the npm package (I used 28 days quite arbitrary to avoid anomalies with a too short value like a day). So the final result is close to the average number of new users per month.

Potential issues

  • npm packages without a GitHub repository have an evaluated usage of 0
  • Maybe some packages like elm-json are more likely to be installed globally and may be penalized by this method.
  • The effect of dividing by the numbers of “moons” can be noticed for example with elm-pages. As far as I know, its release has not been announced yet (except for a work in progress announcement), but its ranking is pretty high because it is used in two projects in less than one month. On the other hand, the elm installer is highly downranked by its very old first release in 2014. So maybe 28 days is a little short.

Results

Here are the results, tell me what you think, and maybe give a try at some tools:

Avatar Tool Usage/Moon Description
elm-hot elm-hot 47,23 Hot code swapping for Elm
elm-hot-webpack-loader elm-hot-webpack-loader 30,78 Webpack loader providing hot code swapping for Elm
elm-format elm-format 27,47 Install elm-format
find-elm-dependencies find-elm-dependencies 22,59 Find elm dependencies
elm-serve elm-serve 18,02 Node.js module to refresh and reload your Elm Application in your browser when your code changes.
elm-webpack-loader elm-webpack-loader 16,43 Webpack loader for the Elm programming language.
elm-brunch elm-brunch 14,42 Brunch plugin to compile Elm code (http://elm-lang.org)
elm-test elm-test 14,34 Run elm-test suites.
elm-live elm-live 13,33 A flexible dev server for Elm. Live reload included!
elm-verify-examples elm-verify-examples 7,92 Verify examples in Elm doc-comments
elm elm 7,85 Installer for Elm: just downloads the binary into node_modules
elm-hot-loader elm-hot-loader 7,79 Hot swapping for Elm module.
create-elm-app create-elm-app 6,66 Elm apps with zero configuration
elm-analyse elm-analyse 5,9 A tool that allows you analyse your Elm code and identifies deficiencies and best practices.
@dillonkearns/elm-graphql @dillonkearns/elm-graphql 4,78 Autogenerate type-safe GraphQL queries in Elm.
parcel-plugin-elm-env-vars parcel-plugin-elm-env-vars 4,27 A parcel plugin for generating Elm file for your env vars automatically.
node-elm-compiler node-elm-compiler 4,11 A Node.js interface to the Elm compiler binaries.
@dawehner/elm-static-html-lib @dawehner/elm-static-html-lib 3,76 Generate HTML from Elm views
elm-css elm-css 3,39 Elm-based CSS Preprocessor
elm-pages elm-pages 2,59 Type-safe static sites, written in pure elm with your own custom elm-markup syntax.
elm-doc-preview elm-doc-preview 2,01 Elm offline documentation previewer with hot reloading.
react-elm-components react-elm-components 1.40 Write React components in Elm
elm-typescript-interop elm-typescript-interop 1,27 Code generator for type-safe elm-typescript interprocess messages.
parcel-plugin-elm parcel-plugin-elm 1,19 A parcel plugin that enables elm support
elm-debug-transformer elm-debug-transformer 1,18 Transform Elm Debug.log output into nice log object with custom formatter
elm-upgrade elm-upgrade 0,96 Upgrade Elm projects
elm-xref elm-xref 0,96 Cross referencing tool for Elm - find usages and unused code
prettier-plugin-elm prettier-plugin-elm 0,96 Adds Elm language support to Prettier via elm-format
elm-asset-webpack-loader elm-asset-webpack-loader 0,93 Webpack loader for assets (like images or fonts) in Elm programming language
elm-coverage elm-coverage 0,76 > Work in progress - Code coverage tooling for Elm
elm-canvas elm-canvas 0,72 Custom element to be used in conjunction with Elm
elm-doc elm-doc 0,7 Elm dependency documentation tool
elm-json elm-json 0,69 Deal with your elm.json
elm-css-modules-loader elm-css-modules-loader 0,53 webpack loader for using CSS modules in Elm code
elm-mapbox elm-mapbox 0,51 A custom element designed for use with elm-mapbox
elm-css-modules-plugin elm-css-modules-plugin 0,5 Babel plugin for use within cultureamp/elm-css-modules-loader
gatsby-plugin-elm gatsby-plugin-elm 0,5 Gatsby plugin to handle elm files
elm-module-parser elm-module-parser 0,46 Parses Elm module declaration and import statements.
elm-fancy-brunch elm-fancy-brunch 0,41 Elm support for brunch, with error display.
elm-ethereum-ports elm-ethereum-ports 0,4 Helpers to wire Elm ports to your elm-ethereum app.
elm-monitor elm-monitor 0,4 Monitor your elm program with redux-devtools
tree-sitter-elm tree-sitter-elm 0,39 Tree sitter definitions for elm
@elm-tooling/elm-language-server @elm-tooling/elm-language-server 0,38 Implementation of an elm language server in node.
elm-lsp elm-lsp 0,36 Linting through LSP protocol for Elm
elm-select elm-select 0,36 Select DOM elements and optionally call a function.
@kachkaev/run-elm @kachkaev/run-elm 0,29 Temporary fork of run-elm
elm-ethereum-generator elm-ethereum-generator 0,24 Install elm-ethereum-generator
rollup-plugin-elm rollup-plugin-elm 0,24 Import .elm files as ES6 modules.
elm-simple-loader elm-simple-loader 0,19 A simple Webpack loader for Elm sources. Uses your system Elm installation.
getto-code-stat-elm getto-code-stat-elm 0,19 code statistics for Elm
fuse-box-elm-plugin fuse-box-elm-plugin 0,17 A plugin for fuse-box for transpiling and bundling Elm programs
elm-outdated elm-outdated 0,16 Keep your Elm dependencies up-to-date
html-elm html-elm 0,15 Convert html to elm-html
@whiletruu/format-elm-webpack-errors @whiletruu/format-elm-webpack-errors 0,12 Colours and formats elm compiler error messages in json format it finds in webpack errors.
parcel-plugin-elm-bundle parcel-plugin-elm-bundle 0,12 Parcel plugin for bundling multiple Elm applications.
bs-elm bs-elm 0,1 Bindings for mounting and interacting with Elm applications in Reason.
elm-docstyle elm-docstyle 0,1 A tool that allows you to check the quality fo your Elm code documentation.
elm-doctest elm-doctest 0,09 doctest for elm
elm-ts elm-ts 0,09 A porting of TEA to TypeScript featuring fp-ts, io-ts, rxjs5 and React
elm-element elm-element 0,08 Use Elm applications as web components.
graphql-to-elm-package graphql-to-elm-package 0,07 Support package for graphql-to-elm, which generates Elm types, encoders and decoders from GraphQL queries
ng-elm ng-elm 0,07 Write Angular 2 components in Elm
pwac-elm pwac-elm 0,06 elm environment for pwac
elm-gen elm-gen 0,05 Experimental CLI tool for generating Elm JSON Decoders and Encoders, written mostly in Elm
elm-rings elm-rings 0,05 Capture and record the state of your Elm application in Elm 0.19 and 0.18.
elm-string-representation elm-string-representation 0,05 Parses Elm string representation for data
ember-elm ember-elm 0,05 Write Elm in your Ember app
graphql-to-elm graphql-to-elm 0,05 Generates Elm types, encoders and decoders from GraphQL queries
literate-elm literate-elm 0,04 Runs literate Elm code blocks and calculates Elm expressions
elm-docs elm-docs 0,03 Markdown documentation generator for elm-make compatible projects
@poi/plugin-elm @poi/plugin-elm 0 Use Poi to build your Elm apps.
@revathskumar/babel-plugin-elm @revathskumar/babel-plugin-elm 0 Babel plugin to compile elm code embedded in your app
css-modules-elm-types-loader @teamthread/css-modules-elm-types-loader 0 Generate Elm type aliases for CSS Modules
elm-web-components @teamthread/elm-web-components 0 Run your Elm apps through web components.
@the-sett/serverless-elm-bridge @the-sett/serverless-elm-bridge 0 Use Elm with the serverless framework (deploy to AWS, Azure, Google)
@thought2/elm-edit 0
angularjs-ng-elm angularjs-ng-elm 0 AngularJS directive for Elm modules with interoperation via ports
babel-elm-assets-plugin babel-elm-assets-plugin 0 This Babel plugin allows you to search for a particular function call in Elm, and replace it with a require() JS call. This allows you to use webpack generated assets directly in your Elm code.
build-elm-assets build-elm-assets 0 Builds an Elm file containing all paths of assets in a directory
create-elm-batteries create-elm-batteries 0 Create an Elm app, batteries included.
css-in-elm css-in-elm 0 Elm-based CSS Preprocessor
elm-antique-bugfix-binary elm-antique-bugfix-binary 0 The Elm Platform: Binaries for the Elm programming language.
elm-app-gen elm-app-gen 0 A CLI for generating Elm projects that build with Parcel
elm-app-webcomponent 0 ### Installation
elm-app elm-app 0 Create [Elm 0.19][elm] + [Webpack 4][webpack] apps with no build configuration.
elm-deps-rss elm-deps-rss 0 Generate an Elm project RSS feed for its dependencies releases
elm-desktop-app elm-desktop-app 0 the simplest way to write desktop applications in Elm
elm-enums elm-enums 0 Process ./enums.defs -> ./Enums.elm, autogenerating custom types and JSON encoders/decoders from enums.
elm-git-install elm-git-install 0 A tool for installing private Elm packages from any git url.
elm-habitat elm-habitat 0 Helpers for mounting Elm applications in specific parts of the DOM.
elm-js elm-js 0 Elm architecture in javascript
elm-kitchen elm-kitchen 0 An utility to generate an Elm SPA skeleton.
elm-local-packages elm-local-packages 0 Launch elm packages site with local elm caches.
elm-markup elm-markup 0 Command Line Interface to Elm Markup.
elm-minify elm-minify 0 Minify compiled Elm modules!
elm-node elm-node 0 Run Elm + JS programs easily in node
elm-packages elm-packages 0 Elm packages info library
elm-project-inspect elm-project-inspect 0 Elm project inspection
elm-smuggle elm-smuggle 0 Install the elm-smuggle binary
elm-svg-cli elm-svg-cli 0 Convert svg assets to elm
elm-svg-webpack-plugin elm-svg-webpack-plugin 0 webpack plugin to convert svg assets to elm
elm-symfony-bridge elm-symfony-bridge 0 Webpack plugin exposing symfony’s translations and routing to elm.
elm-system elm-system 0 Deploy a system of Elm applications as a single-page web app.
elm-translator elm-translator 0 Type safe translations for Elm. The npm package contains a binary to autogenerate Elm code from a json specification.
elm-update elm-update 0 The elm-update command allows to list the updatable dependencies listed in an elm.json file. Future releases will allow optional auto update of the file as well.
elm-web-server elm-web-server 0 An API with Node.js-bindings for Elm WebSocket/HTTP-servers
elm-webpack-project-loader elm-webpack-project-loader 0 Webpack Loader for Elm Projects.
generate-elm-app generate-elm-app 0 Simple setup for elm application
generator-elm-parcel generator-elm-parcel 0 Generate a baisc Elm project with Parcel
generator-elm-starter-kit generator-elm-starter-kit 0 Generate a simple Elm Spa
generator-elm generator-elm 0 Generate a minimal Elm + Webpack 4 project
getto-elm getto-elm 0 basic structure with elm
gulp-elm gulp-elm 0 elm compiler for Gulp
icons-to-elm icons-to-elm 0 Convert a directory with svg files into an Elm icon module
laravel-elixir-elm laravel-elixir-elm 0 A package to provide support for compiling Elm in Laravel Elixir 6
laravel-mix-elm laravel-mix-elm 0 Compile Elm files with Laravel Mix
material-components-elm-js-imports material-components-elm-js-imports 0 JavaScript imports for material components for elm
parcel-plugin-elm-css-modules parcel-plugin-elm-css-modules 0 A Parcel plugin for generating Elm file for your CSS Modules automatically.
parcel-plugin-elm-hot parcel-plugin-elm-hot 0 Elm HMR in Parcel without losign state
protoc-gen-elm protoc-gen-elm 0 Elm protoc plugin
razzle-examples-with-elm razzle-examples-with-elm 0 ## How to use
razzle-plugin-elm razzle-plugin-elm 0 ## Installation
redux-elm-subscriptions redux-elm-subscriptions 0 A tiny, zero-dependency package to listen to global events in an Elm Architecture manner.
static-html-from-elm static-html-from-elm 0 Turn your Elm app into a static HTML site
svg-to-elm svg-to-elm 0 Convert SVG to Elm HTML modules.
todomvc-example-in-vanilla-javascript-using-elm-architecture- todomvc-example-in-vanilla-javascript-using-elm-architecture- 0 Learn how to use The Elm Architecture in JavaScript to create functional and fast UI!
8 Likes

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.