如何将IHP应用便捷封装为库并导入至其他IHP项目?
在IHP中封装功能为独立库并跨项目导入的简便方法
1. 抽离功能为独立Haskell包
- 用
cabal init或stack new新建独立Haskell包,将需复用的IHP代码(模型、控制器辅助函数、视图组件等)迁移至此。 - 在包的
.cabal文件中声明IHP相关依赖(如ihp、ihp-model),版本需与主项目保持一致。 - 配置
exposed-modules字段,列出主项目需要调用的模块,确保代码可被外部访问。
2. 本地开发时的依赖引用
- 若暂不发布到Hackage,可在主项目的
cabal.project中添加本地路径依赖,实现实时同步修改:
这样修改库代码后,主项目重新构建即可生效,支持库与主项目的独立开发。packages: . ../path/to/your/library-package
3. 版本化与共享(可选)
- 功能稳定后,可将库发布到Hackage,或通过Git仓库作为依赖源。例如在主项目
cabal.project中添加Git依赖:
方便其他项目快速引入该库。source-repository-package type: git location: https://github.com/your-username/your-library.git tag: v0.1.0
4. 保持项目独立的注意事项
- 库中仅保留通用可复用功能,避免依赖主项目的特定业务逻辑。
- 单独开发库时,可编写单元测试或搭建小型IHP测试项目验证功能,无需启动主项目。
- 定期同步主项目与库的IHP版本,避免版本不一致引发兼容性问题。
内容的提问来源于stack exchange,提问作者Chris Schankula
相关产品推荐
相关产品推荐

