πͺ Introduction
Eask was originally designed as a package development tool for Elisp projects. However, it has since expanded to support a wide range of Emacs Lisp tasks. It can now be used in three major ways:
- As a development tool for Elisp packages.
- For managing dependencies in your Emacs configuration.
- To run Elisp programs for a variety of purposes (essentially functioning as a runtime).
With these capabilities in mind, what sets Eask apart from other build tools like Cask, makem.sh, and Eldev?
Great question! Eask has evolved beyond just a build toolβit serves multiple purposes! Hereβs what Eask aims to be:
- Consistent: Provides a reliable sandboxing environment across all systems.
- Versatile: Includes commonly used Emacs commands like
byte-compilation
,checkdoc
, and more. - Robust: Delivers useful results even when user errors occur.
- Lightweight: Runs on any platform without dependencies.
π P.S. See Why Eask? for more detailed information.
Eask
follows the same philosophy as Cask. To understand why you should use
Eask
(or Cask), check out the Why Cask?
section on their website.
Many tools, such as Cask, makem.sh, and Eldev, donβt fully support Windows.
Cask
has dropped support for Legacy Windows, makem.sh
relies on Bash, and while
Eldev
does support Windows, its author doesnβt actively use it on the platform,
meaning it lacks full testing (as seen in their CI workflows). In contrast, Eask
is designed to work across all major platforms, including Linux, macOS, and Windows
It prioritizes cross-platform compatibility and ensures consistency across different
operating systems. If Eask
runs on your machine, it will work reliably on any platform.
Hereβs our recommendation: if youβre developing an OS-specific package that will never need cross-platform support, other tools may be a better fit. However, if you want a tool that ensures seamless consistency across different operating systems, Eask is an excellent choice.
Another major advantage of Eask
is its transparencyβthere are no hidden workflows
or obscure processes running in the background. Additionally, Eask
strictly
avoids hacks or workaround fixes, ensuring that solutions are clean, maintainable,
and aligned with best practices.
The table was compiled by reading these projectsβ documentation and source code, but the author is not an expert on these tools. Corrections are welcome.
The table shows what technology has been chosen by their author and how the project is being constructed. Furthermore, what technical decisions have they made? Drop support? Projectβs layout? Etc.
Eask | Cask | Eldev | makem.sh | |
---|---|---|---|---|
bin folder | binary, bash, bat | bash, bat | bash, bat, ps1 | bash |
Cross-Platform | β | β, no Windows support | β | β, no Windows support |
Emacs version | 26.1+ | 24.5+ | 24.4+ | 26.1+ |
Size | 9,000+ lines | 3,000+ lines | 8,000+ lines | 1,200+ lines |
Executable | β | β | β | β |
Pure Elisp | β, JavaScript | β | β | β |
CLI Parser | yargs | commander | built-in | built-in |
Noteπ‘ makem.sh has a good comparisons document as well, visit their site
This is the feature comparison between each tool. Every tool has its advantages; choose the right tool that works for you!
If the features are not listed below, either it is forgotten or simply considered too essential, so every tool has it; hence we donβt add them to the list.
Eask | Cask | Eldev | makem.sh | |
---|---|---|---|---|
Elisp configuration | β , DSL is optional | β, DSL only | β , pure elisp | β |
Handle archives failure | β , see archives | β | β | β |
create project, etc | β | β | β | β |
link local dependencies | β | β | β | β |
exec program | β | β | β | β |
eval expressions | β | β | β | β |
emacs execution | β | β | β | β |
Support docker | β | β | β | β |
Built-in linters | β | β | β | β |
Built-in tests | β | β | β | β |
Run script | β | β | β | β |
Self-defined commands | β | β | β | β |
Subcommand | β | β | β | β |
0.10.x
- Add five new commands and improve the default user experience.0.9.x
- Enhance overall user experience.0.8.x
- Addlink
command.0.7.x
- Fixdefault-directory
isnβt honored by -g option.0.6.x
- You can now useeask create
to create an Elisp project.0.5.x
- Handle error for failed archive.0.4.x
- Add color logger.0.3.x
- Add verbosity level and timestamps.0.2.x
- Done basic error handling with exit code at the end of executions.0.1.39
- Usespawn
insteadexec
; now messages will be printed immediately.
- [FEAT] Add
publish
command; to publish the package to the eask archive?
- N/A
The design of Eask was greatly influenced by the following projects: