You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用pkg生成可执行文件:如何包含CSS与图片资源?

解决pkg打包Node.js项目时CSS和图片未被包含的问题

我之前用pkg打包Node.js项目时也踩过这个坑!pkg默认只会自动打包JS文件和package.json里关联的核心文件,像CSS、图片这类静态资源得手动配置才能被纳入打包范围。给你几个实用的解决办法:

方法1:在package.json中配置assets字段

这是最省心的方式,一次配置永久生效。直接在你的package.json里新增pkg配置项,把需要打包的静态资源路径添加进去:

{
  "name": "your-project-name",
  "version": "1.0.0",
  // 保留你原有的其他配置...
  "pkg": {
    "assets": [
      "./public/css/**/*",
      "./public/images/**/*",
      "./views/**/*" // 虽然你说views能识别,加上能避免后续踩坑
    ]
  }
}

这里的**/*是通配符,表示匹配对应目录下的所有文件,包括子目录里的内容。配置完成后再执行pkg .,CSS和图片就会被一起打包了。

方法2:命令行直接指定assets参数

如果不想改动package.json,也可以在打包时通过命令行参数直接指定要包含的资源:

pkg . --assets "./public/css/**/*" --assets "./public/images/**/*"

多个资源路径可以重复使用--assets参数,或者用逗号分隔写在同一个参数里:

pkg . --assets "./public/css/**/*,./public/images/**/*"

额外要注意的小细节

  • 代码里引用静态文件的路径一定要用相对路径,推荐用Node.js的path模块拼接,比如在Express里托管静态资源:
    const path = require('path');
    app.use(express.static(path.join(__dirname, 'public')));
    
    这样pkg打包后,程序能正确定位到临时目录里的静态资源。
  • 如果打包后还是找不到资源,可以在代码里打印__dirname的值,看看pkg运行时的实际目录结构,方便排查路径问题。

内容的提问来源于stack exchange,提问作者user3242861

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:15:21