Nativefier 是啥

Nativefier 是一个开源命令行工具,用于将任何网页或 Web 应用快速打包成桌面应用程序(支持 Windows、macOS 和 Linux)。它的核心原理是通过封装 Electron(一个基于 Chromium 和 Node.js 的框架),将网页内容嵌入到一个原生窗口中,使其看起来和运行起来更像本地应用。


主要功能特点

  • 跨平台支持

    • 生成的应用程序可适配多个操作系统,无需额外修改代码。

  • 简单易用

    • 只需一条命令即可完成打包。

  • 自定义选项

    • 修改应用名称、图标、窗口大小。

    • 隐藏菜单栏、启用全屏、注入自定义 CSS/JS。

    • 支持登录状态持久化(如保存 Cookies)。

  • 轻量级

    • 相比于完整浏览器,生成的应用程序更节省资源,但功能完整(基于 Chromium)。


常见用途

  • 将常用网页工具(如 Gmail、Trello、Notion)变成独立应用。

  • 为内部企业系统(如内部管理后台)创建桌面客户端。

  • 快速原型开发,无需编写原生代码。


优缺点

  • 优点:

    • 无需开发经验,适合非技术人员。

    • 支持复杂的 Web 应用(如单页应用)。

  • 缺点:

    • 应用体积较大(因为包含 Chromium)。

    • 无法完全脱离浏览器限制(如无法绕过网页本身的权限控制)。


安装 Nativefier服务

  • 安装 Node.js

  • 安装 Nativefier 本体

    • Windows: [ 右键桌面 ] ---> [ 打开终端 ]

      • npm install nativefier -g

    • MacOS: [ 打开终端 ]

      • npm install nativefier -g


使用 Nativefier 服务

  • 最简单的使用方法,只需要用 nativefier 加上一个你需要转换成的网站地址就可以了!

    • nativefier "https://www.master-jsx.top"

      • 第一次运行会下载 Eletron 框架,有些地区可能需要点魔法才能下载!

      • 执行完成后会在当前目录下生成一个 对应当前系统类型的文件夹,内部就是我们的应用了!

  • 进入到文件内部,双击打开即可!


额外的配置

以下是您提供的 Nativefier 参数的中文翻译:

命令格式

nativefier <目标网址> [输出目录] [其他选项] 或 nativefier --upgrade <现有应用路径> [其他选项]

必需参数

  • --targetUrl:您希望转换为本地应用的 URL;如果不使用 --upgrade,此参数是必需的。

可选参数

  • --outputDirectory:生成应用的目录(默认为当前目录,或设置的环境变量 NATIVEFIER_APPS_DIR)。

应用创建选项

  • -a, --arch:要构建的 CPU 架构(可选值:"x64", "armv7l", "arm64", "universal";默认值:当前 Node 的架构)。

  • -c, --conceal:将应用源代码打包成 asar 文件(默认为 false)。

  • -e, --electron-version:指定要使用的 Electron 版本(不带 'v';可在 https://github.com/electron/electron/releases 查看)。

  • --global-shortcuts:通过 JSON 文件定义全局键盘快捷键。

  • -i, --icon:用于应用的图标文件(Windows 上为 .ico,macOS 上为 .icns/.png,Linux 上为 .png)。

  • -n, --name:指定应用的名称(默认为通过 targetUrl 传递的页面标题)。

  • --no-overwrite:如果输出目录已存在,则不覆盖(默认为 false)。

  • -p, --platform:要构建的操作系统平台(可选值:"darwin", "linux", "mac", "mas", "osx", "win32", "windows";默认值:当前操作系统)。

  • --portable:使应用在应用文件夹中存储用户数据;警告:请参阅相关文档以了解安全风险(默认为 false)。

  • --upgrade:升级由旧版本 Nativefier 构建的应用。必须传递现有应用可执行文件的完整路径(默认情况下,应用将被覆盖)。

应用窗口选项

  • --always-on-top:启用窗口始终在最上层(默认为 false)。

  • --background-color:设置应用背景颜色,以便在加载应用时更好地集成。例如:'#2e2c29'。

  • --bookmarks-menu:创建书签菜单(通过 JSON 文件)。

  • --browserwindow-options:覆盖 Electron BrowserWindow 选项(通过 JSON 字符串)。

  • --disable-context-menu:禁用上下文菜单(右键点击)(默认为 false)。

  • --disable-dev-tools:禁用开发者工具(Ctrl+Shift+I / F12)(默认为 false)。

  • --full-screen:始终以全屏模式启动应用(默认为 false)。

  • --height:设置窗口默认高度(默认为 800 像素)。

  • --hide-window-frame:禁用窗口框架和控件(默认为 false)。

  • -m, --show-menu-bar:设置菜单栏可见(默认为 false)。

  • --max-width:设置窗口最大宽度(默认为无限制)。

  • --max-height:设置窗口最大高度(默认为无限制)。

  • --maximize:始终以最大化状态启动应用(默认为 false)。

  • --min-height:设置窗口最小高度(默认为 0)。

  • --min-width:设置窗口最小宽度(默认为 0)。

  • --process-envs:在打开任何浏览器窗口之前设置的环境变量的 JSON 字符串。

  • --single-instance:只允许应用的单个实例(默认为 false)。

  • --tray:允许应用停留在系统托盘。如果设置为 'start-in-tray',则首次启动时不显示主窗口(可选值:"true", "false", "start-in-tray",默认为 "false")。

  • --width:应用窗口默认宽度(默认为 1280 像素)。

  • -x:设置窗口左侧的 x 位置(以像素为单位)。

  • -y:设置窗口顶部的 y 位置(以像素为单位)。

  • --zoom:设置应用的默认缩放因子(默认为 1)。

内部浏览器选项

  • --file-download-options:定义文件下载选项的 JSON 字符串。

  • --inject:要注入的 CSS/JS 文件的路径;可以多次传递以注入多个文件。

  • --lang:设置语言或地区以呈现网站(例如:"fr", "en-US", "es" 等;默认为应用运行时的操作系统语言)。

  • -u, --user-agent:设置应用的用户代理字符串;也可使用 'edge', 'firefox' 或 'safari' 自动生成一个。

  • --user-agent-honest, --honest:防止用户代理字符串正常更改,以便看起来像常规 Chrome 浏览器(默认为 false)。

内部浏览器缓存选项

  • --clear-cache:防止应用在启动之间保留缓存(默认为 false)。

  • --disk-cache-size:设置磁盘缓存使用的最大磁盘空间(以字节为单位;默认为 Chromium 默认值)。

URL 处理选项

  • --block-external-urls:禁止导航到未被视为“内部”的 URL;尝试导航到外部 URL 将被阻止(默认为 false)。

  • --internal-urls:被视为“内部”的 URL 的正则表达式;默认情况下基于域名匹配(请参见 '--strict-internal-urls');所有其他 URL 将在外部浏览器中打开。

  • --strict-internal-urls:禁用基于域名的内部 URL 匹配(默认为 false)。

  • --proxy-rules:代理规则;请参见 https://www.electronjs.org/docs/api/session#sessetproxyconfig。

认证选项

  • --basic-auth-password:基本 http(s) 认证密码。

  • --basic-auth-username:基本 http(s) 认证用户名。

图形选项

  • --disable-gpu:禁用硬件加速(默认为 false)。

  • --enable-es3-apis:强制激活 WebGL 2.0(默认为 false)。

  • --ignore-gpu-blacklist:强制 WebGL 应用在不支持的 GPU 上工作(默认为 false)。

(不)安全选项

  • --disable-old-build-warning-yesiknowitisinsecure:禁用在打开过旧的应用时显示的警告;Nativefier 使用 Chrome 浏览器(通过 Electron),使用过旧版本是危险的(默认为 false)。

  • --ignore-certificate:忽略与证书相关的错误(默认为 false)。

  • --insecure:启用加载不安全的内容(默认为 false)。

平台特定选项

  • --app-copyright:设置应用的人类可读版权行(仅限 macOS 和 Windows;映射到 Windows 的 LegalCopyright 元数据属性和 macOS 的 NSHumanReadableCopyright)。

  • --app-version:设置应用版本(仅限 macOS 和 Windows;映射到 Windows 的 ProductVersion 元数据属性和 macOS 的 CFBundleShortVersionString)。

  • --bounce:使 dock 图标在计数增加时跳动(仅限 macOS;默认为 false)。

  • --build-version:设置应用的构建版本(仅限 macOS 和 Windows;映射到 Windows 的 FileVersion 元数据属性和 macOS 的 CFBundleVersion)。

  • --counter:设置 dock 计数徽章,通过查找窗口标题中的数字确定(仅限 macOS;默认为 false)。

  • --darwin-dark-mode-support:在 macOS 10.14+ 上启用深色模式支持(仅限 macOS;默认为 false)。

  • -f, --fast-quit:在窗口关闭时退出应用(仅限 macOS;默认为 false)。

  • --title-bar-style:设置标题栏样式(仅限 macOS;可选值:"hidden", "hiddenInset")。

  • --win32metadata:嵌入为可执行文件元数据的 JSON 字符串(ProductName, InternalName, FileDescription;仅限 Windows)。

调试选项

  • --crash-reporter:发送崩溃报告的远程服务器 URL。

  • --verbose:启用详细/调试/故障排除日志(默认为 false)。

  • --quiet:抑制所有日志输出(默认为 false)。

其他选项

  • --version:显示版本号。

  • --help:显示帮助信息。

示例

  • nativefier <目标网址> -n <名称>:从 <目标网址> 创建一个应用,并将应用名称设置为 <名称>。

  • nativefier --upgrade <现有应用路径>:升级(就地)现有的 Nativefier 应用,路径为 <现有应用路径>。

  • nativefier <目标网址> -p <平台> -a <架构>:从 <目标网址> 创建一个应用,适用于操作系统 <平台> 和 CPU 架构 <架构>。

  • 更多示例和帮助:请参见 https://github.com/nativefier/nativefier/blob/master/CATALOG.md。