πͺ Introduction (original) (raw)
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.
β Why Eask?
Eask follows the same philosophy as Cask. To understand why you should useEask (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 whileEldev 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, Easkis 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.
βοΈ Comparisons
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.
π Project Wise
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
π Feature Wise
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 | β | β | β | β |
π° News
0.11.x- Add commandsinstall-fileandinstall-vc.0.10.x- Add five new commands and improve the default user experience.0.9.x- Enhance overall user experience.0.8.x- Addlinkcommand.0.7.x- Fixdefault-directoryisnβt honored by -g option.0.6.x- You can now useeask createto 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.
π Todo list
π Core commands
- [FEAT] Add
publishcommand; to publish the package to the eask archive?
π Eask-file commands
- N/A
π Underlying Projects
The design of Eask was greatly influenced by the following projects: