Nodejs - 小型 Express 服务器 + trayicon + pkg

Posted

技术标签:

【中文标题】Nodejs - 小型 Express 服务器 + trayicon + pkg【英文标题】:Nodejs - small Express server + trayicon + pkg 【发布时间】:2021-09-18 19:07:21 【问题描述】:

我正在尝试找出是否可以使用更小的文件大小,为基于 Express 的 API 服务器应用程序提供一个可分发的文件,并带有一些用于基本控件的托盘图标 - 基本上是退出 + 重新启动应用程序 + 在默认浏览器中打开 API。

使用 Electron Builder,我可以在大约 68MB 中执行 --ia32 目标,但想知道是否可以使用更小的大小,以了解更多信息。但是在尝试使用 pkg 使 Systray2 和相关解决方案工作时遇到问题(从 node_modules 获取 exe 文件上的 ENONENT(是的,尝试将其添加到 package.json pkg 资产,或者甚至将该 exe 复制到项目根目录下的 traybin 文件夹)。我我确信有办法,但我可能会遗漏一些可能很明显的东西,所以现成的 Git 会很棒。

如果有什么方便的话,是否有一些样板可供下载?当我只使用构建器、托盘和通知,而没有使用 mainWindow、ipc Renderer 等时,下载 Electron 感觉就像在浪费空间......

【问题讨论】:

【参考方案1】:

不确定这是否仍然与您相关,但我今天实际上遇到了完全相同的要求。经过多次试验和错误,我确实设法通过将copyDir 标志设置为true 来解决它,如下面的代码所示,当使用systray2 npm 包时:

const systray = new SysTray(
  menu: 
    icon: os.platform() === 'win32' ? './logo_s.ico' : './logo_s.png',
    isTemplateIcon: os.platform() === 'darwin',
    title: 'App',
    tooltip: 'App',
    items: [
      itemExit
    ]
  ,
  debug: false,
  copyDir: true // This makes the systray2 work with pkg
)

我的 win-x64 二进制大小最终为 38MB 和 Brotli compression(fastify 服务器 + systray2 + 一些 css/images/js)。

虽然我没有将它与 Electron Builder 进行比较,但我有预感它会比这更大:)

【讨论】:

是的,谢谢,会检查并尝试,copyDir 是!

以上是关于Nodejs - 小型 Express 服务器 + trayicon + pkg的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Docker 容器运行 NodeJS 微服务

NodeJS Mongoose record.save TypeError

安装nodeJs静态服务器(NodeJs Express MVC 框架)

nodejs+express搭建服务器

create-react-app + nodejs (express) 服务器

Express/NodeJS + Mongoose App 服务器响应慢