关于ASDF/Quickload/Sly的开发疑问:需每次手动加载依赖?
关于ASDF、Quickload与Sly的使用解答
问题1:测试流程是否正确?有没有便捷加载方式?
你的测试流程是正确的,但可以通过以下方式简化操作:
- 优化ASDF系统配置:在
foobar.asd中,把测试系统(比如命名为foobar-test)的:depends-on字段加上:rove和:foobar,这样只需执行一次(ql:quickload :foobar-test),就能自动加载所有依赖(包括Rove和你的项目系统),之后直接运行(asdf:test-system :foobar)即可。 - 利用Sly快捷键/内置命令:
- 加载当前编辑的文件:按下
C-c C-k - 加载指定系统:输入
M-x sly-load-system,再输入系统名(如foobar-test)即可一键完成加载 - 配置自动加载:在项目根目录创建
.slyrc文件,写入(ql:quickload :foobar-test),启动Sly时会自动执行这条命令,无需手动输入
- 加载当前编辑的文件:按下
- 自定义测试快捷函数:在REPL中定义一个简单函数:
之后只需调用(defun run-foobar-tests () (asdf:test-system :foobar))(run-foobar-tests)就能快速运行测试。
问题2:日常开发流程与克隆仓库后的高效工作方式
日常开发不会反复手动输入冗长命令,克隆仓库后可以按以下流程高效开展工作:
- 让ASDF/Quickload识别项目:
- 方式一:把项目目录添加到ASDF的搜索路径:
(push #P"/path/to/your/foobar/" asdf:*central-registry*) - 方式二:将项目放到Quickload的
local-projects目录下(通常是~/quicklisp/local-projects/),Quickload会自动识别系统
- 方式一:把项目目录添加到ASDF的搜索路径:
- 启动Sly并加载项目:
- 直接在REPL中执行
(ql:quickload :foobar-test),一次性加载所有开发与测试依赖 - 或通过Sly的
M-x sly-load-system命令加载目标系统
- 直接在REPL中执行
- 日常开发循环:
- 修改代码后,用
C-c C-k重新加载当前文件,或C-c C-l重新加载整个系统 - 运行测试:使用
M-x sly-run-tests(Sly集成的测试命令),或调用之前定义的run-foobar-tests函数 - 若使用Rove,还可以开启自动测试模式:
(rove:enable-autotest),修改代码后会自动触发相关测试
- 修改代码后,用
- 进阶优化:可以配置Sly的项目模板,或使用
quickproject这类工具快速初始化符合规范的项目,减少手动配置步骤。
内容的提问来源于stack exchange,提问作者phtrivier
相关产品推荐
相关产品推荐

