{"id":13837032,"url":"https://github.com/emacs-eldev/eldev","last_synced_at":"2025-07-10T16:31:38.160Z","repository":{"id":40289907,"uuid":"228267985","full_name":"emacs-eldev/eldev","owner":"emacs-eldev","description":"Elisp development tool","archived":false,"fork":false,"pushed_at":"2024-04-09T02:04:00.000Z","size":2019,"stargazers_count":222,"open_issues_count":14,"forks_count":15,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-10T10:18:57.802Z","etag":null,"topics":["build-tool","continuous-integration","developer-tools","emacs-lisp"],"latest_commit_sha":null,"homepage":"https://emacs-eldev.github.io/eldev/","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emacs-eldev.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-12-15T23:32:20.000Z","updated_at":"2024-04-24T19:26:12.584Z","dependencies_parsed_at":"2023-10-12T00:53:25.117Z","dependency_job_id":"95d1eebd-ea85-48f1-bfd6-496a9f2a414e","html_url":"https://github.com/emacs-eldev/eldev","commit_stats":null,"previous_names":["emacs-eldev/eldev"],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eldev%2Feldev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eldev%2Feldev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eldev%2Feldev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eldev%2Feldev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emacs-eldev","download_url":"https://codeload.github.com/emacs-eldev/eldev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225648078,"owners_count":17502172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build-tool","continuous-integration","developer-tools","emacs-lisp"],"created_at":"2024-08-04T15:00:59.602Z","updated_at":"2025-07-10T16:31:38.153Z","avatar_url":"https://github.com/emacs-eldev.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"ifndef::env-github[:icons: font]\nifdef::env-github[]\n:warning-caption: :warning:\n:caution-caption: :fire:\n:important-caption: :exclamation:\n:note-caption: :paperclip:\n:tip-caption: :bulb:\nendif::[]\n:empty:\n:uri-documentation: https://emacs-eldev.github.io/eldev/\n:uri-xdg: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html\n:uri-flycheck: https://www.flycheck.org/\n:uri-flycheck-eldev: https://github.com/flycheck/flycheck-eldev\n:uri-flymake: https://www.gnu.org/software/emacs/manual/html_node/emacs/Flymake.html\n:uri-flymake-eldev: https://github.com/emacs-eldev/flymake-eldev\n\n// Some text duplication with the full documentation is expected here.\n\n= Eldev\n\nimage:https://img.shields.io/badge/license-GPL_3-green.svg[License: GPL 3, link=http://www.gnu.org/licenses/gpl-3.0.txt]\nimage:https://img.shields.io/github/release/emacs-eldev/eldev.svg[Latest release, link=https://github.com/emacs-eldev/eldev/releases]\nimage:http://stable.melpa.org/packages/eldev-badge.svg[MELPA Stable, link=http://stable.melpa.org/#/eldev]\nimage:https://github.com/emacs-eldev/eldev/workflows/CI/badge.svg[CI, link=https://github.com/emacs-eldev/eldev/actions?query=workflow%3ACI]\n\nEldev (Elisp development tool) is an Emacs-based build tool, targeted\nsolely at Elisp projects.  It is an alternative to Cask.  Unlike Cask,\nEldev itself is fully written in Elisp and its configuration files are\nalso Elisp programs.  If you are familiar with Java world, Cask can be\nseen as a parallel to Maven — it uses project _description_, while\nEldev is sort of a parallel to Gradle — its configuration is a\n_program_ on its own.\n\n\n== Documentation\n\nNOTE: Detailed documentation on Eldev features is\n{uri-documentation}[*available online*].  This page intentionally\nprovides only a brief overview.\n\n\n== Eldev features\n\n* Eldev configuration is Elisp.  It can change many defaults, add\n  special cases for Emacs versions and much more — even define\n  additional Eldev commands and options.\n* Built-in {uri-documentation}#testing[support for regression/unit\n  testing].\n* Blends nicely into\n  {uri-documentation}#continuous-integration[continuous integration]\n  setups.\n* Can run on {uri-documentation}#different-emacs-versions[different\n  Emacs version] even on the same machine; can also use\n  {uri-documentation}#docker[Docker] or\n  {uri-documentation}#podman[Podman] for that.\n* There are {uri-documentation}#setup-procedure[four levels of\n  configuration] — you can customize most aspects of Eldev for your\n  project needs and personal preferences.\n* {uri-documentation}#dependencies[Project dependency] downloading,\n  installation etc. is fully automated, you only need to tell the tool\n  where to find them:\n** {uri-documentation}#package-archives[in package archives] (MELPA,\n   GNU ELPA, etc.);\n** {uri-documentation}#vc-repositories[in VC (Git) repositories];\n** {uri-documentation}#local-sources[in a local directory on your\n   machine] (this is similar to Cask linking, but with more\n   flexibility).\n* Full support for {uri-documentation}#autoloads[autoloads] during\n  development.\n* Miscellaneous operations useful during development:\n  {uri-documentation}#running-emacs[running Emacs] with only your\n  project, {uri-documentation}#linting[linting] source code,\n  {uri-documentation}#evaluating[evaluating expressions] in project’s\n  context, {uri-documentation}#profiling[profiling].\n* Can {uri-documentation}#maintainer-plugin[automate release process]\n  for your project.\n* Eldev by default {uri-documentation}#project-isolation[isolates]\n  your project for development, helping you to distinguish between\n  problems with setup or configuration and inherent bugs in the\n  project.\n* Full-featured {uri-documentation}#build-system[build system] for\n  complex projects.\n* Can {uri-documentation}#debugging-features[help you debug your\n  code].\n* {uri-documentation}#requirements[Runs on all major operating\n  systems]: Linux, macOS, Windows.\n* Eldev is fast.\n\nEldev source code itself comes with no examples, but there is a short\n{uri-documentation}#example-projects[list of real-world projects] in\nthe documentation.\n\nTIP: If you are using {uri-flycheck}[Flycheck] or\n{uri-flymake}[Flymake], check out {uri-flycheck-eldev}[flycheck-eldev]\nor, correspondingly, {uri-flymake-eldev}[flymake-eldev] package.  They\nprovide integration between Flycheck/Flymake and Eldev, allowing the\nformer to automatically use proper dependencies in Eldev projects.\n\n\n== Installation\n\nThe easiest and most common way to install Eldev on Linux, macOS,\netc. is this shell oneliner:\n\n    $ curl -fsSL https://raw.github.com/emacs-eldev/eldev/master/webinstall/eldev | sh\n\nThis will install `eldev` script to `~/.local/bin`.  Usually,\n{uri-xdg}[this directory should already be in your `PATH`].  But if\nnot, e.g. in `~/.profile` add this:\n\n    export PATH=\"$HOME/.local/bin:$PATH\"\n\nDocumentation {uri-documentation}#installation[lists several other\nways to install Eldev], including on Windows.  They are not more\ndifficult than the one above.\n\n\n== Safety concerns\n\nTIP: In general, it is not recommended to execute Eldev, GNU Make,\nScons, any other build tool or anything based on one in a directory\nthat contains untrusted code.\n\nLike many (if not most) other development tools, Eldev is unsafe when\nexecuted on untrusted code.  For example, simply running `eldev` in a\nproject you have just downloaded from `hackerden.org` can result in\nanything, including emptied home directory.  For that matter, running\n`make` or `gradle` is not better in this regard.  Eldev is perhaps _a\nbit_ more dangerous, because even `eldev help` reads file `Eldev`,\nthus executing arbitrary code.\n\nEven seemingly harmless things, like opening a `.el` file in Emacs can\nlead to unforeseen consequences.  If you e.g. have\n{uri-flycheck}[Flycheck] or {uri-flymake}[Flymake] enabled everywhere,\nthis will result in byte-compiling said file, which also can execute\narbitrary code, for example using `(eval-when-compile ...)` form.  The\nsame holds for installing (not even using!) Elisp packages.\n\nOnly use build tools on code that you trust.  Better yet, don’t even\ntouch code that you don’t plan running.\n\n\n== Getting started\n\nEldev comes with built-in help.  Just run:\n\n    $ eldev help\n\nThis will list all the commands Eldev supports.  To see detailed\ndescription of any of those, type:\n\n    $ eldev help COMMAND\n\nIn the help you can also see lots of options — both global and\nspecific to certain commands.  Many common things are possible just\nout of the box, but {uri-documentation}#extending-eldev[later we will\ndiscuss] how to define additional commands and options or change\ndefaults for the existing.\n\nTwo most important global options to remember are `--trace` (`-t`) and\n`--debug` (`-d`).  With the first one, Eldev prints lots of additional\ninformation about what it is doing to stdout.  With the second, Eldev\nprints stacktraces for most errors.  These options will often help you\nfigure out what’s going wrong without requesting any external\nassistance.  Also check out section on\n{uri-documentation}#debugging-features[various debugging features]\ndiscussed later.\n\nEldev mostly follows GNU conventions in its command line.  Perhaps the\nonly exception is that global options must be specified before command\nname and command-specific options — after it.\n\n\n== Documentation\n\nNOTE: Detailed documentation on Eldev features is\n{uri-documentation}[*available online*].  This page intentionally\nprovides only a brief overview.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-eldev%2Feldev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femacs-eldev%2Feldev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-eldev%2Feldev/lists"}