V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
beichenshao
V2EX  ›  问与答

关于 esbuild 的一个问题: golang 是怎么编译为 npm 库的?

  •  
  •   beichenshao · 2022-08-11 09:02:28 +08:00 · 1201 次点击
    这是一个创建于 595 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我搜索了一下,在 2020 年有 v 友问了相同的问题,
    但是回答的人寥寥无几,可能是因为发到了 node 的节点,
    这个问题根本原因还是需要会 go 的朋友帮忙解答下,

    我简单看了下 esbuild 的官网,
    一开始以为是使用 wasm 的方式,但官网提示不推荐这种方式,
    那大概率也不是通过 wasm 来实现的,

    有没有会 go 的朋友帮忙解答下,golang 是怎么编译为 npm 库的?
    第 1 条附言  ·  2022-09-27 12:04:19 +08:00
    如果在 2022 年以后翻到这个帖子,恭喜你,我已经帮你踩坑了,

    答案在这里: https://lyn.one/2020/09/11/rust-napi

    这里解释了如何通过 Rust 来编写一个 npm 库,

    简单引用一下核心:“不同平台的 NATIVE ADDON 通过不同的 NPM PACKAGE 分发,最近前端很火的新一代构建工具 esbuild 就采用了这种方式。每一个 native addon 对应一个 npm package 。然后通过 postinstall 脚本去安装当前系统对应的 native addon package 。”
    3 条回复    2022-08-11 09:33:56 +08:00
    learningman
        1
    learningman  
       2022-08-11 09:04:20 +08:00 via Android
    package.json 里面指定一下 files 啥都能传上去,不同平台对应一个不同的包,里面放编译好的二进制不就好了
    bokchoys
        2
    bokchoys  
       2022-08-11 09:09:55 +08:00
    stoluoyu
        3
    stoluoyu  
       2022-08-11 09:33:56 +08:00
    去他的 npm 看了下,esbuild 依赖了很多不同的 esbuild-xxx 包,exbuild-xxx 都是各个平台的二进制版本,更详细的构建流程就得多翻翻他的 github 仓库了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   941 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:51 · PVG 04:51 · LAX 13:51 · JFK 16:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.