意图网站字体动态子集化,遇到fontmin的安装问题包然后弄坏包管理器
>>2024-05-19<<

○起因

就是昨天晚上,在配置fontmin的时候不知道为什么老是安装不上去。后面手动到/usr/local/lib乱搞一通,最后把npm删掉了,但是只是把node_modules里的删掉了,而且没有备份(谁没事会备份这种东西呀) (应该不会有人和我一样会出这种问题吧)

○经过

然后今天我重新试了一下我没有用官网给的npm install -g fontmin 而是用的 npm install -D fontmin 尽管和昨天一样报错出现了

npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to@npmcli/fs

npm WARN deprecated uuid@2.0.3: Please upgrade  to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.

昨天根据这个我安装了@npmcli/move-file和@npmcli/fs以及uuid但是并没有解决,甚至万能的百度也没办法。(后面就是瞎折腾把包管理器弄坏的故事了)😥 但是今天我直接运行了node fontmin.js发现运行成功了(同样的方法昨天不行) 所以很大可能是安装位置的问题,我今天是直接安装在我写的fontmin.js的目录里而没有全局安装。希望这个经验对其他遇到这个问题的朋友有帮助🙏🏻 上面👆🏻的是昨天写的,现在已经是今天了。因为昨天继续弄这个动态字体子集化,到后面发现了个问题,我的API它GET不了了😭。后面重新配置了下服务发现用API工具可以收到JSON,但是我自己写的js里的fetch(url)调用不了(十分甚至有九分的悲伤😞)

○结果

然后我就放弃啦 (洋洋自得)。转而用font-spider处理字体了,把文章复制到要用的font.html里然后 font-spider font.html然后以后有其他需要的字再加进去处理吧 (摊开双手做无力状) 不过我还是挺好奇是怎么一回事儿,之前API工具出错是返回的502BadGateway,fetch也直接是没有响应。 可能要么是CDN的锅,要么是服务器哪里禁止访问了,感觉网上没有遇到和我一样问题的 (因为万能的百度再次失效了)(尽管我用的必应)(🌿) 所以我准备以后可能弄一个爬虫自动爬取自己网站的内容放到font.html里。同时我也把我那个没用的fontmin.js放到下面,希望有大佬能解决🙏🏻。这里是邮箱📭→ lonlf@qq.com,当然以后也可能会开放评论(前天clone Waline的时候又把服务器搞炸了(掩面泣涕))

function fetchAPIDate(url, callback) {
    fetch(url)
        .then(response => {
            if (!response.ok) {
                throw new Error('need to cheak ' + url);
            }
            return response.json(); 
        })
        .then(data => {
            console.log(data)
            for (i = 0; data.data.dataSet[i] != undefined; i++) {
                extractedData += data.data.dataSet[i].digest;
            }
            callback(extractedData);
        })
        .catch(error => {
            console.error('There was a problem with the fetch operation:', error);
        });
}
function processData(data) {
texts = data
}
fetchAPIDate('https://lonleaf.com/api/posts',processData)

var Fontmin = require("fontmin")

var fontmin = new Fontmin()
    .src("./font/*.TTF")
    .dest("./font/fontmin/")
    .use(
        Fontmin.glyph({
            text: texts
        })
    )

fontmin.run(function (err, files) {
    if (err) {
        throw err
    }
})