使用dotnet创建npm包

大家在使用npm包的时候,可能会遇到一些问题,比如在还原包(使用npm install)的时候会遇到报错,而报错信息可能会提示,需要C++编译环境,或者需要python环境。

包括现在前端的一些打包工具,它可能是使用C++或Rust编写的,但是我们都可以通过npm安装并使用。

这也就意味着,我们可以使用js/ts之外的语言来编写npm包。

背景

我之前使用C#Angular编写了一个代码生成器工具,以dotnet tool的形式发布,以加速开发速度。

其中一个功能,是根据后端的OpenAPI文档内容来生成前端的请求服务代码。

当前端开发想要使用该功能时,就得先安装dotnet sdk,然后通过dotnet tool install -g ater.dry命令来安装该工具。 虽然也不麻烦,但稍显奇怪,毕竟对于前端来说,都有node环境,但不需要dotnet环境。

为了让更多前端能够使用这个工具,那么更好的办法是直接发布成npm包,在package.json文件中引用该包,在还原项目后,就可以直接使用该工具。

那么问题来了,难道让我重新使用js/ts来编写相关的逻辑么?那是万万不能的!

使用dotnet编写npm包

直到我偶然发现微软开源了一个项目node-api-dotnetGithub地址

该项目提供两个能力,即在dotnet程序中调用js,或在nodejs中调用dotnet

这意味着,我之前已经使用好的C#代码,现在可以通过某种方式,在node项目中使用了。

于是按照这个思路,我对之前的程序进行了一些修改,并使用了node-api-dotnet,最终发布npm的命令行工具。目前我已经将两个项目发布成npm 命令行工具了。

当然,在使用的过程中遇到了一些问题,通过反馈问题,目前官方已经修复了该问题,并更新了文档示例。

我还没有尝试在dotnet项目中调用node项目,目前还没有这个需求。