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来实现。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容