月度归档:2026年02月

在微信小程序中引入lucide图标库

一、步骤

1、把 lucide 项目下载到本地;

2、把这个项目 svg-path-outline-with-inkscape 下载到本地;

3、把 lucide 项目里面的 icons 文件夹下的 svg 图片复制到 svg-path-outline-with-inkscape 项目的 src 目录下;

4、给 svg-path-outline-with-inkscape 项目里面的 convert.sh 执行权限;

chmod +x convert.sh

5、执行 ./convert.sh 开始转换;

6、打开 iconfont.cn 创建项目;

7、上传 svg-path-outline-with-inkscape 项目里面的 out 下的 svg 图片到项目,等审核通过;

8、下载到本地,解压 download.zip;

9、更改 iconfont.css 拓展为 iconfont.wxss,复制到小程序项目中并引用;

10、创建小程序组件 components/icon

components/icon/icon.js

/**
 * Icon Component (iconfont)
 * Usage: <l-icon name="home" size="48" color="#059669" />
 */
Component({
    properties: {
        name: {
            type: String,
            value: ''
        },
        size: {
            type: Number,
            value: 48
        },
        color: {
            type: String,
            value: ''
        }
    }
})

components/icon/icon.json

{
  "component": true,
  "styleIsolation": "apply-shared"
}

components/icon/icon.wxml

<text wx:if="{{name}}" class="iconfont icon-{{name}}"
    style="font-size: {{size}}rpx;{{color ? ' color: ' + color + ';' : ''}}" />

components/icon/icon.wxss

/* Icon Component Styles */
.iconfont {
    display: inline-block;
    vertical-align: middle;
    line-height: 1;
}

11、配置为小程序全局组件

app.json

{
    "usingComponents": {
        "l-icon": "/components/icon/icon"
    },
    ......
}

12、业务页面引用

<l-icon name="log-in" size="44" />

二、Q&A

为什么要有 svg-path-outline-with-inkscape 这个项目?

lucide 下载的 svg 直接上传到 iconfont 无法正常使用,提示「上传失败,请尝试将所有图层进行轮廓化」,文件太多,sketch 无法处理,需要使用 Illustrator 一个个处理不现实(不知道有没有批量操作、软件需要付费、卒),于是乎就做让 AI 写了一个批量处理的工具。

[渲染层网络层错误] Failed to load image https://x.y.com/abcdefg.jpg the server responded with a status of 404 (HTTP/1.1 404)From server x.x.x.x

调试用微信开发者工具调试图片显示,控制台始终提示【图 1】的错误,但是浏览器可以正常访问【图 2】,最终是因为 ngnix 缓存问题,导致无法正常显示,实际图片确实是 404。

图 1

图 1

图 2

图 2

上面潜在有一个坑,因为项目是测试阶段为了方便就把 upload 目录上传到 git 仓库了。github workflow 在服务器上执行构建是会先把本地更改丢失,这就是上次发版和本次发版时间段内在服务器上上传的图片,在本次发版时会把图片给删除,在加上测试 ngnix 上给图片做了缓存,图片删除了还能访问。

这就是多个雷区叠加到只的问题,切记该怎么做就怎么做不要走捷径。

下面是排查定位问题的几个方向:

  1. 微信开发者工具:菜单栏-设置-代理设置
    • ☑️ 不使用任何代理,勾选后直连网络
    • 使用系统代理
    • 手动设置代理
  2. 微信开发者工具:编辑器-右上角【三】详情-
    • ☑️ 不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书
  3. Charles:Tools – Map Remote…
  4. Charles: macOS Proxy
  5. 图片缓存
    • 确认服务器 ngnix 是否为图片或目录设置了静态缓存,浏览器可访问,切换无痕模式再次访问试试。