What’s the best practice to have your custom elisp natively compiled, along with external packages?

So far I’ve only succeeded by doing the following:

  • Move my custom elisp to a new file (emacs-lib.el) which starts with (provide 'emacs-lib)

  • Manually run emacs-lisp-native-compile-and-load while visiting that file

  • Change my init file to load the library:

    (setq elisp-dir “~/config/elisp”) (add-to-list 'load-path elisp-dir) (require 'emacs-lib)

After restarting Emacs, I’ve checked that many of my custom functions are indeed native-compiled.

It would be nice if I could have my init file take care of compiling the library when missing or outdated. Even better if I didn’t need the separate file, but that’s no big deal.