单文件软件包由单个 Emacs Lisp 源文件构成。该文件必须符合 Emacs Lisp 库的头部规范(see Emacs 库的标准文件头)。软件包的各项属性取自文件头部字段,示例如下:
;;; superfrobnicator.el --- Frobnicate and bifurcate flanges -*- lexical-binding:t -*- ;; Copyright (C) 2022, 2025 Free Software Foundation, Inc.
;; Author: J. R. Hacker <[email protected]> ;; Version: 1.3 ;; Package-Requires: ((flange "1.0")) ;; Keywords: multimedia, hypermedia ;; URL: https://example.com/jrhacker/superfrobnicate ... ;;; Commentary: ;; This package provides a minor mode to frobnicate and/or ;; bifurcate any flanges you desire. To activate it, just type ... ;;;###autoload (define-minor-mode superfrobnicator-mode ...
软件包名称与文件首行的基础文件名一致。本例中为 ‘superfrobnicator’。
简要描述同样取自首行。本例中为 ‘处理与分支法兰’。
版本号优先取自 ‘Package-Version’ 头部,若无则取自 ‘Version’ 头部。二者必须存在其一。本例版本号为 1.3。
若文件包含 ‘;;; Commentary:’ 段落,该段落将作为详细描述。(Emacs 显示描述时会省略 ‘;;; Commentary:’ 行以及注释本身开头的注释符号。)
若文件包含 ‘Package-Requires’ 头部,则其内容作为软件包依赖。上例中该软件包依赖 ‘flange’ 软件包 1.0 及以上版本。See Emacs 库的标准文件头 中有关于 ‘Package-Requires’ 头部的说明。若要指定依赖特定版本的 Emacs,可将软件包名称写为 ‘emacs’。省略该头部则表示无依赖。
‘Keywords’ 与 ‘URL’ 头部为可选但推荐项。describe-package 命令会使用它们在输出中添加链接。‘Keywords’ 头部应至少包含一个来自 finder-known-keywords 列表的标准关键字。
文件中还应包含一个或多个自动加载魔法注释,如 软件包基础 所述。上例中通过魔法注释自动加载了 superfrobnicator-mode。
See 创建与维护软件包归档 中说明了如何将单文件软件包添加到软件包归档。