πͺ Introduction
Eask was built to use as a package development tool in your Elisp packages. But now, Eask supports various types of Emacs Lisp tasks. It can be used in three major ways:
- Dev tool for Elisp packages
- Dependency management for your configuration
- Run elisp programs for all other purposes
So what are the major differences between Eask and other build tools like Cask, makem.sh, and Eldev, other than the things above?
Good question! Eask is more than a build tool now, it can be used for various purposes! But here are Eask aims to be:
- Consistent enough to sandbox across all systems
- General enough to have Emacsers frequently used commands (
byte-compile
,checkdoc
, etc) - Robust enough to provide useful results even in the presence of user errors
- Dependency-free so that the tool can be run on any platform
P.S. See Why Eask? for more detailed information.
Eask
has the same philosophy as Cask, see their site Why Cask?
to understand why you should use Eask (or Cask).
Many tools like Cask, makem.sh, or Eldev don’t “really” support
Windows. Cask
has dropped support for Legacy Windows, makem.sh
runs on bash,
Eldev
does support Windows, but the author doesn’t use it on Windows (not
having full tests, see their
CI workflows).
Eask
aims to adapt all platforms, including Linux
, macOS
, and Windows
.
It focuses on the cross-platform capability and the consistency between each
OS. If Eask works on your machine, then it will work on any platform.
Here are our suggestions; if you plan to work on an OS-specific package (never going to other platforms), go for other tools. On the other hand, Eask aims to provide the best consistency between each OS. Alternatively, if you want to learn a tool that works everywhere, Eask is one of the best choices.
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 |
π‘ 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 | β | β | β | β |
Built-in linters | β | β | β | β |
Built-in tests | β | β | β | β |
Run script | β | β | β | β |
Self-defined commands | β | β | β | β |
Subcommand | β | β | β | β |
0.9.x
- Improve UX in general0.8.x
- Addlink
command0.7.x
- Fixdefault-directory
isn’t honored by -g option0.6.x
- You can now useeask create
to create an Elisp project0.5.x
- Handle error for failed archive0.4.x
- Add color logger0.3.x
- Add verbosity level and timestamps0.2.x
- Done basic error handling with exit code at the end of executions0.1.39
- Usespawn
insteadexec
; now messages will be printed immediately0.1.x
- Project bare-bones are pretty much complete!
- [DEV] Publish package to winget
- [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: