获取自己的文件名

Get name of own file

榆树版本:0.19.1

有没有办法使用 project-metadata-utils(或其他工具/解决方案)在 Elm 项目中进行一些元编程?简单的东西,比如“获取自己的文件名”、“获取自己的文件目录”,然后我将在我的 elm 应用程序中使用它们。

我想要的是这样的:

moduleName : String
moduleName = MetaData.moduleName

从根本上说,Elm 不提供对此类信息的访问(没有反射 API),因此没有单一的好方法可以纯粹在 Elm 中执行此操作。您可以尝试使用 Ports 和 JS,但如果您谈论的是 Elm 源文件的文件名,则不太可能仍然是编译代码中的数据。

实际上,现在执行此操作的方法可能是在任何构建过程中将其作为代码生成构建步骤来实现,并生成一些仅包含所需常量的简单 Elm 文件。

例如,我的一个项目使用 a simple NPM prebuild script that just does a simple sed command to insert the version (found from an environment variable set by the build environment) into an Elm file 执行此操作。这显然非常简单和脆弱,但如果需要,您可以创建一个更强大的系统来提供更多元数据。

显然缺点是总是有可能 运行 Elm 构建而不更新元数据。据我所知,没有办法避免这种情况,因为 elm 编译器当前不提供任何挂钩。