package.json的配置问题

package.json

  • 常见的字段内容,可以根据实情酌情增减:
    {
    "name": "my-electron-app", // 应用名称,必须全小写,不能包含空格,用于npm包管理。
    "version": "1.0.0", // 应用版本号,遵循语义化版本规则 (major.minor.patch)。
    "description": "A sample Electron app", // 应用描述信息。
    "productName": "dsp_demo",
    "main": "src/main.js", // Electron 应用的主进程入口文件。
    "author": { // 作者信息。
      "name": "Your Name", // 作者姓名。
      "email": "your.email@example.com", // 作者邮箱。
      "url": "https://yourwebsite.com" // 作者网站(可选)。
    },
    "license": "MIT", // 项目使用的许可证类型。
    "scripts": { // 定义运行脚本的快捷命令。
      "start": "electron .", // 启动 Electron 应用。
      "build": "electron-builder", // 使用 electron-builder 进行打包。
      "package": "electron-builder --dir", // 仅创建应用文件夹,不打包成安装程序。
      "make": "electron-builder --mac --win --linux", // 同时打包 macOS、Windows 和 Linux。
      "lint": "eslint src" // 检查代码格式。
    },
    "dependencies": { // 项目运行时依赖的库。
      "electron-squirrel-startup": "^1.0.0" // 用于处理 Windows 自启动问题。
    },
    "devDependencies": { // 项目开发时使用的依赖库。
      "electron": "^26.2.0", // Electron 主框架。
      "electron-builder": "^25.1.8" // Electron 打包工具。
    },
    "keywords": [ // 项目的关键词,便于搜索。
      "electron",
      "desktop",
      "application"
    ],
    "build": { // electron-builder 配置项。
      "electronVersion": "33.2.0",
      "electronDownload": {
        "cache": "/usr/local/lib/node_modules/electron/dist/v33.2.0"
      },
      "appId": "com.example.myapp", // 应用 ID,建议使用反向域名格式。
      "productName": "MyElectronApp", // 应用显示的名称。
      "files": [ // 指定需要包含的文件或目录,支持通配符。
        "dist/**/*",
        "node_modules/**/*",
        "package.json"
      ],
      "directories": { // 目录相关配置。
        "output": "dist" // 打包输出目录。
      },
      "win": { // Windows 平台相关配置。
        "target": ["nsis"], // 打包目标类型,例如 nsis(安装程序)、portable(便携版本)。
        "icon": "build/icon.ico" // Windows 图标文件路径。
      },
      "mac": { // macOS 平台相关配置。
        "target": ["dmg", "zip"], // 打包目标类型,例如 dmg(磁盘映像文件)、zip。
        "icon": "build/icon.icns" // macOS 图标文件路径。
      },
      "linux": { // Linux 平台相关配置。
        "target": ["AppImage", "deb"], // 打包目标类型,例如 AppImage(通用安装包)、deb(Debian 系列安装包)。
        "icon": "build/icon.png" // Linux 图标文件路径。
      },
      "extraMetadata": { // 额外的元信息,可以动态修改 package.json 中的字段。
        "version": "1.0.0-beta" // 修改版本号为 beta。
      },
      "publish": { // 配置发布信息,用于自动上传构建的安装包。
        "provider": "github", // 使用 GitHub 发布。
        "repo": "my-electron-app", // GitHub 仓库名称。
        "owner": "your-username" // GitHub 仓库所有者。
      }
     }
    }
    

字段解释

  • 基础字段
    • name:应用程序的名称,用于 npm 包管理,必须全小写,不能包含空格
    • version: 应用的版本号,遵循语义化版本规则。
    • description:简要描述应用的功能。
    • main:Electron 应用主进程的入口文件。
    • author:作者信息,包括 name、email 和 url。

  • Scripts 部分
    • start:运行 Electron 应用,适用于开发模式。
    • build:使用 electron-builder 进行全平台打包。
    • package:仅创建应用程序文件夹(不生成安装程序)。
    • make:同时打包 macOS、Windows 和 Linux 平台的安装程序。

  • 依赖部分
    • dependencies:项目运行时需要的依赖库,例如 electron-squirrel-startup。
    • devDependencies:项目开发时需要的依赖库,例如 electron 和 electron-builder。

  • Electron-Builder 配置 (build)
    • appId:应用的唯一标识,通常使用反向域名格式。
    • productName:用户界面中显示的应用名称。
    • files:包含在安装包中的文件列表,支持通配符。
    • directories.output:打包后输出目录。

  • 平台配置
    • win:Windows 平台打包配置。
      • target:目标类型(如 nsis 安装程序)。
      • icon:Windows 图标路径(.ico 格式)。
    • Mac:macOS 平台打包配置。
      • target:目标类型(如 dmg、zip)。
      • icon:macOS 图标路径(.icns 格式)。
    • linux:Linux 平台打包配置。
      • target:目标类型(如 AppImage、deb)。
      • icon:Linux 图标路径(.png 格式)。

  • 发布配置
    • publish:配置发布工具,支持多种平台(如 GitHub、S3、私有服务器等)。

注意事项

  • Q1: 在全局安装了electron,使用electron-builder打包,为什么还会每次打包都下载一遍electron?
    • 全局安装的 Electron:
      全局安装的 Electron 只是为开发提供了命令行工具,但不包含与平台相关的二进制文件(如 Windows、Mac、Linux 的 .zip 或 .dmg 等文件)。
    • 本地项目中的 Electron:
      electron-builder 会根据项目配置和目标平台下载正确的 Electron 二进制文件,以便用于打包。
  • Q2: 如何避免每次都下载 Electron?
    • 缓存机制:
      默认情况下,Electron 的二进制文件会被缓存到用户的 ~/.cache/electron 目录下。确保该目录存在且能够正常存储文件,这样就可以避免重复下载
    • 手动下载:
      可以手动下载所需的 Electron 版本,并将其放在指定的自定义目录中path/my/cache
      并在electron-builder中设置:
      "build": {
        "electronDownload": {
            ///使用本地下载好的二进制,用cache
           "cache": "/path/to/your/cache"
          ///每次打包,从网上下载,使mirror
        "mirror":"https://github.com/electron/electron/releases/tag/v33.2.0"
         }
       }
      
  • Q3: electron-builder能识别file://协议吗?
    • electron-downloadelectron-builder 支持 HTTP/HTTPS协议。
    • 官方文档虽然没有明确说明不支持file://协议,但是根据electron-download源码,mirror 是一个字符串,直接拼接到 URL,生成最终下载路径,没有处理 file:// 协议的特殊逻辑。
    • 如果需要本地文件支持,可以使用缓存路径cache来实现。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容