KonghaYao / cn-font-split

划时代的字体切割工具,CJK与任何字符!支持 otf、ttf、woff2 字体多线程切割,完美地细颗粒度地进行包大小控制。A revolutionary font subetter that supports CJK and any characters! It enables multi-threaded subset of otf, ttf, and woff2 fonts, allowing for precise control over package size.

Home Page:https://chinese-font.netlify.app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bun 运行报错,疑似上游依赖导致

mobeicanyue opened this issue · comments

bun i cn-font-split

bun add v1.1.13 (bd6a6051)

installed cn-font-split@4.15.1 with binaries:
 - cn-font-split

31 packages installed [8.01s]
ls

bun.lockb              MiSansArabic-Demibold.otf  MiSansArabic-Normal.otf  package.json
MiSansArabic-Bold.otf  MiSansArabic-Medium.otf    node_modules             split.mjs
bun split.mjs ./MiSansArabic-Bold.otf ./build
217 |           )
218 |           try {
219 |             if (localFileExisted) {
220 |               nativeBinding = require('./woff-build.linux-x64-gnu.node')
221 |             } else {
222 |               nativeBinding = require('@napi-rs/woff-build-linux-x64-gnu')
                    ^
TypeError: ~/Code/npm/misans-bash/tmp/misana-arabic/node_modules/@napi-rs/woff-build-linux-x64-gnu/woff-build.linux-x64-gnu.node: undefined symbol: BrotliDecoderDecompress
      at ~/Code/npm/misans-bash/tmp/misana-arabic/node_modules/@napi-rs/woff-build/index.js:222:15

Bun v1.1.13 (Linux x64)

split.mjs 内容如下

import { fontSplit } from 'cn-font-split';

const args = process.argv.slice(2);

fontSplit({
    FontPath: args[0],
    destFold: args[1],
    testHTML: false, // html 报告文件
    reporter: false, // json 格式报告
    css: {
        comment: {
            base: false,
            nameTable: false,
        },
        compress: true, // 是否压缩 css
    },
    // 重命名输出文件
    renameOutputFont: '[index][ext]'
});

这个依赖好久没更新了,应该不是这个问题,如果可以的话,可以使用 node 跑跑试试

事实上 node 真的可以
image

依赖甚至还是 bun i cn-font-split 的依赖

感觉 bun 对于 .node 文件还没有适配完全,然后这个依赖写的有点问题,本来应该先尝试使用 wasm 的

后面会给一个选项,强制使用 wasm 模式

#65 (comment)

最奇怪的是,直接运行
cn-font-split (通过 bun i -g 安装)
或者 bunx cn-font-split
都可以运行无报错

因为 cn-font-split 是懒加载这个依赖的,所以 bunx 应该还没执行到。node 针对 .node 文件支持好,所以没事

image

cn-font-split -i=./MiSansArabic-Bold.otf -o=./dist --renameOutputFont='[index][ext]' --reporter='false' --testHTML='false'

或者

bunx cn-font-split -i=./MiSansArabic-Bold.otf -o=./dist --renameOutputFont='[index][ext]' --reporter='false' --testHTML='false'

这样似乎不会报错

项目使用全局安装,项目文件夹未安装 cn-split 依赖

node 针对 .node 文件支持好,所以没事。

这是什么意思?
我用 bun 安装的实际上是 node 在运行吗?

bun 应该是和 node 共享依赖了,cn-font-split 在 bin 文件头部指定了使用 node,所以被安装到全局之后,会使用 node 的运行时。bunx 则是以 bun 的命令行形式运行的,采用的是 bun 的运行时。

用 bunx 好像也是 node
image

在我写第三版本的时候,还没有 bun,所以识别的是 node,后面也一直没有改过来。
因为 bun 和 node 太像了,所以是没有进一步区分出 bun 与 node 。

意思是用命令行跑 bunx cn-font-split 的时候,实际上是 node 的运行时吗?