FAQ
Here is a list of general frequently asked questions.
The answer is NO.
Eask builds native executable on every release, see our release page to download it! However, Node.JS is required if you are going to develop Eask!
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.
You can download the latest executable (snapshot) in our emacs-eask/binaries repository!
Node provides better support for various terminal applications compared to shell scripts. It offers features like a rich, colorful interface and access to the vast npm ecosystem, making cross-platform development more convenient. This is especially true since Microsoft acquired npm Inc., likely ensuring strong support for their own systems.
Cask seems to have dropped support for Windows (while still supporting WSL)
after version 0.8.6
. Earlier versions were built on Python, but Pythonβs support
on Windows has traditionally been less reliable than Node.js.
See issue #140 for more information!
There are many languages I could use to build around Eask, so why did I choose JavaScript?
I have three reasons:
- JavaScript is easy to learn.
- It offers excellent cross-platform compatibility, thanks to the Node.js runtime.
- I just happen to know JavaScript, and Iβm comfortable with it.
I also considered Rust and Common Lisp. However, Rust was still relatively new when I started this project, and Common Lisp, while powerful, has a steeper learning curve and is often seen as somewhat outdated. So, I went with JavaScript.
yargs has a large and active community and is widely used in various tools. Itβs fully cross-platform and, most importantly, works seamlessly on Linux, macOS, and Windows.
One key difference between Eask and other alternatives is how they handle scripting. Tools like Cask, makem.sh, and Eldev rely heavily on batch and bash scripts. Instead, we took a different approach by leveraging a high-level programming language-JavaScript. This made development significantly easier, as we no longer need to worry about shell compatibility.
The main drawback is the Node.js runtime requirement, but we can mitigate this by packaging the entire CLI program into an executable. This way, users wonβt need to install Node or npm beforehand to use Eask!
Eask
-file is an Elisp file, similar to .emacs
or init.el
.
Just as Emacs allows you to customize aspects you donβt like,
Eask follows the same principle, letting you configure anything you dislike about Eask.
Another way to configure your workspace is similar to configuring Emacs itself:
- Use
.eask/VERSION_NO/early-init.el
(only after Emacs27.1
onward) - Use
.eask/VERSION_NO/init.el
There are several ways to do this, but the standard method is to define a recipe format in the Eask file.
(depends-on "organize-imports-java"
:repo "jcs-elpa/organize-imports-java"
:fetcher 'github
:files '(:defaults "sdk" "default"))
Eask builds the package once and hosts a local ELPA, allowing you to use it for later installation. This is the safest way to install packages as it simulates the most practical scenario.
However, any other alternative would work as well since Eask is also an Elisp file.
The example error message,
http://melpa.org/packages/lsp-mode-20220429.647.tar: Not found
The issue is caused by the mismatch from the backup archives. Generally, Eask
will pick up the latest archive-contents
from sources unless you have been
pinging sources too many times. Then the source could block your IP for few
minutes.
You can either wait for few minutes for the source to remove you from their black list. Or wait for the backup archives to update to the latest version. The backup archives repository is here.
The example error message,
Package not installable `helm'; make sure package archives are included
First, determine the origin of the package and the specific source that
provides its information. In the example above, helm
is listed under the
melpa
source. To properly include it, update your Eask-file as follows:
...
(source "melpa") ; <- add this line
(depends-on "helm")
The example error message,
Loading package information... done v
Installing 1 specified package...
- [1/1] Installing markdown-mode (20250226.231)... Package `emacs-28.1' is unavailable
Wrong type argument: package-desc, nil
This error occurs when Emacs attempts to install a package that requires a newer version of Emacs. In some cases, the requirement does not come directly from the package itself but from one of its dependencies.
You can either refrain from using this package or upgrade Emacs to the required version.
If you get this sample error message:
Loading package information... done β
- Installing s (20210616.619)... Failed (status 2): git --no-pager remote get-url upstream .
...
You may have bug-reference-prog-mode
enabled. It is not yet compatible with Eask and
should be disabled when running any of Easkβs commands.
See this issue for more information.
If you get this sample error message:
Created your-package-0.1.0.tar containing:
tar exited with status 2
Error: Process completed with exit code 1.
You might get this error while using the BSD tar. The workaround is to use GNU tar instead.
(setq package-build-tar-executable "/path/to/gnu/tar")
In Windows, BSD tar is used by default. If you have Git installed, you can use the tar executable from Git; it uses GNU tar.
Add the following code snippet to your Eask-file:
;; Use GNU tar in Windows
(when (memq system-type '(cygwin windows-nt ms-dos))
(setq package-build-tar-executable "C:/Program Files/Git/usr/bin/tar.exe"))