Snapcraft 指南 (Ubuntu 软件中心 & 更多)

    与更广泛的 Linux 社区一起, 规范旨在解决 项目中的许多常见的软件安装问题。 Snaps 是容器化的软件包, 包括所需的依赖项、自动更新和对所有主要 Linux 发行版的工作, 而无需进行系统修改。

    创建 .snap 文件有三种方法:

    1) 使用 electron-forge 或 , 与 snap 支持的两个工具都不在该框中。 这是最简单的选择。 2) 使用 electron-installer-snap, 它采用 electron-packager 的输出。 3) 使用已经创建的 .deb 包。

    在某些情况下,您需要安装 snapcraft 工具。 安装特定发行版的 snapcraft 的指南在这里能看到。

    打包应用程序使用 (或类似工具)。 请务必删除 node_modules 您在您的 最后应用程序中不需要 因为您不需要任何模块,您将会增加 您的应用程序的大小。

    结构输出应该看起来大致像这样:

    1. .
    2. └── dist
    3. └── app-linux-x64
    4. ├── LICENSE
    5. ├── LICENSES.chromium.html
    6. ├── content_shell.pak
    7. ├── app
    8. ├── icudtl.dat
    9. ├── libgcrypt.so.11
    10. ├── libnode.so
    11. ├── locales
    12. ├── resources
    13. ├── v8_context_snapshot.bin
    14. └── version

    从一个在 PATH中有 快照 的终端, 运行 electron-installer-snap 带唯一需要的参数 --src, 这是你打包的位置 Electron 应用程序创建在第一步。

    1. npx electron-installer-snap --src=out/myappname-linux-x64

    如果您有一个现有的构建管道,您可以程序性地使用 electron-installer-snap 欲了解更多信息,请参阅 Snapcraft API 文档

    1. name: electron-packager-hello-world
    2. version: '0.1'
    3. summary: Hello World Electron app
    4. description: |
    5. Simple Hello World Electron app as an example
    6. base: core18
    7. confinement: strict
    8. apps:
    9. electron-packager-hello-world:
    10. extensions: [gnome-3-34]
    11. plugs:
    12. - browser-support
    13. - network
    14. - network-bind
    15. environment:
    16. # Correct the TMPDIR path for Chromium Framework/Electron to ensure
    17. # libappindicator has readable resources.
    18. TMPDIR: $XDG_RUNTIME_DIR
    19. parts:
    20. electron-quick-start:
    21. plugin: nil
    22. source: https://github.com/electron/electron-quick-start.git
    23. override-build: |
    24. npm install electron electron-packager
    25. npx electron-packager . --overwrite --platform=linux --output=release-build --prune=true
    26. cp -rv ./electron-quick-start-linux-* $SNAPCRAFT_PART_INSTALL/electron-quick-start
    27. build-snaps:
    28. - node/14/stable
    29. build-packages:
    30. - unzip
    31. stage-packages:
    32. - libnss3
    33. - libnspr4

    如果要将此示例应用于现有项目:

    • 替代 source: https://github.com/electron/electron-quick-start.git</0 > 为 <code>source: ...
    • 替代所有的 electron-quick-start 为你的项目名称。

    第 2 步:构建 snap

    1. $ snapcraft
    2. <output snipped>
    3. Snapped electron-packager-hello-world_0.1_amd64.snap

    第 4 步:运行 snap

    1. electron-packager-hello-world

    Snapcraft 能够拿起现有的 .deb 文件并将其转换为 一个 .snap 文件。 创建吸附器使用 快照配器。 aml 文件描述了源、依赖、描述和其他核心 基础块。

    如果您还没有一个 .deb 包,使用 electron-installer-snap 可能是一个更容易创建吸附包的路径。 然而,存在多个创建 Debian 软件包的解决方案 ,包括 , electron-builder or .

    有关可用配置选项的详细信息,请参阅快照 snapcraft 语法文档。 Let’s look at an example:

    1. name: myApp
    2. version: '2.0.0'
    3. summary: A little description for the app.
    4. You know what? This app is amazing! It does all the things
    5. for you. Some say it keeps you young, maybe even happy.
    6. grade: stable
    7. confinement: classic
    8. parts:
    9. slack:
    10. plugin: dump
    11. source: my-deb.deb
    12. source-type: deb
    13. after:
    14. - desktop-gtk3
    15. stage-packages:
    16. - libasound2
    17. - libnotify4
    18. - libnspr4
    19. - libnss3
    20. - libpcre3
    21. - libpulse0
    22. - libxss1
    23. - libxtst6
    24. electron-launch:
    25. plugin: dump
    26. source: files/
    27. prepare: |
    28. chmod +x bin/electron-launch
    29. apps:
    30. myApp:
    31. command: bin/electron-launch $SNAP/usr/lib/myApp/myApp
    32. desktop: usr/share/applications/myApp.desktop
    33. # Correct the TMPDIR path for Chromium Framework/Electron to ensure
    34. # libappindicator has readable resources.
    35. environment:
    36. TMPDIR: $XDG_RUNTIME_DIR

    或者,如果您正在构建您的 吸附 带有 严格的 封装,您 可以使用 桌面启动 命令:

    1. apps:
    2. myApp:
    3. # Correct the TMPDIR path for Chromium Framework/Electron to ensure
    4. # libappindicator has readable resources.
    5. command: env TMPDIR=$XDG_RUNTIME_DIR PATH=/usr/local/bin:${PATH} ${SNAP}/bin/desktop-launch $SNAP/myApp/desktop