作为开发人员,我安装deno并使用有用的附加功能(例如doc生成,格式化,整理,捆绑,文件监视,测试等)来开发程序。此Deno版本中包含与程序一旦部署无关的所有内容。在这里,它还将具有deno编译所需的功能。 compile子命令不需要安装Rust工具链即可运行,因为它会破坏使用Deno开发的好处之一,那就是只需要一个自包含的二进制文件即可开始开发。如果可能的话,应该通过使用目标架构的预编译deno-run二进制文件,deno编译可以为不同平台创建一个自包含的二进制文件。这些deno-run二进制文件不需要包含在完整deno二进制文件中。实际上,应该可以使用一个标志来指向要包含在最终二进制文件中的轻量级Deno二进制文件(作为一项额外的好处,这使开发人员可以根据实现选项B的结果灵活地使用自定义的二进制文件)。否则,deno可以从Denoland下载适当的deno-run二进制文件,并默认将其缓存以备将来使用。最终的“编译”二进制文件只是经过适当测试的Deno包和deno-run的包装
作为管理员,我可以下载Deno程序的源代码,根据需要对其进行检查,然后使用deno-server在服务器上运行(或使用CI工具自动执行此操作)。这个Deno版本仍然具有将TS转换为JS,从URL下载模块,完整的日志记录功能,锁定文件,安全标志(管理员更可能理解其含义,并且将具有更大的价值)的能力,等等。管理员可以还包括插件,并使用此选项扩展原始开发人员代码。最终,我希望作为管理员,我可以编译开发人员的Deno代码以及在容器化环境中使用的任何所需插件,但这取决于我。如果仅安装一个deno-server二进制文件并从中运行一堆代码有意义,那么我可以选择。在这些情况下,在启动时从TS转换为JS也不大可能成为主要问题,因为查看源代码的好处将胜过启动速度减慢的任何问题,如果有问题,我可以自己编译。
作为最终用户,我可以下载一个自包含的,轻量级的二进制文件,而不必知道其中包含的代码(包装上标明的内容除外)的含义。我知道它可以执行任何其他可执行文件可以执行的任何操作(不需要权限标志)。这些二进制文件仅包含开发人员捆绑的源代码和链接的deno-run二进制文件。如果需要记录致命错误以外的所有内容,则开发人员将自己编写该代码。由于TS的转译是在开发人员机器上完成的,并且删除了不再需要的Deno的所有其他功能,因此它尽可能快且轻巧。