angular-electron

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 常用JavaScript包
软件类型 开源软件
地区 不详
投 递 者 杜元明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Linux BuildMacOS BuildWindows Build

Introduction

Bootstrap and package your project with Angular 12 and Electron 13 (Typescript + SASS + Hot Reload) for creating Desktop applications.

Currently runs with:

  • Angular v12.1.2
  • Electron v13.1.7
  • Electron Builder v22.11.9

With this sample, you can:

  • Run your app in a local development environment with Electron & Hot reload
  • Run your app in a production environment
  • Package your app into an executable file for Linux, Windows & Mac

/!\ Hot reload only pertains to the renderer process. The main electron process is not able to be hot reloaded, only restarted.

/!\ Angular CLI & Electron Builder needs Node 14 or later to work correctly.

Getting Started

Clone this repository locally:

git clone https://github.com/maximegris/angular-electron.git

Install dependencies with npm (used by Electron renderer process):

npm install

There is an issue with yarn and node_modules when the application is built by the packager. Please use npm as dependencies manager.

If you want to generate Angular components with Angular-cli , you MUST install @angular/cli in npm global context.Please follow Angular-cli documentation if you had installed a previous version of angular-cli.

npm install -g @angular/cli

Install NodeJS dependencies with npm (used by Electron main process):

cd app/
npm install

Why two package.json ? This project follow Electron Builder two package.json structure in order to optimize final bundle and be still able to use Angular ng add feature.

To build for development

  • in a terminal window -> npm start

Voila! You can use your Angular + Electron app in a local development environment with hot reload!

The application code is managed by app/main.ts. In this sample, the app runs with a simple Angular App (http://localhost:4200), and an Electron window.
The Angular component contains an example of Electron and NodeJS native lib import.
You can disable "Developer Tools" by commenting win.webContents.openDevTools(); in app/main.ts.

Project structure

Folder Description
app Electron main process folder (NodeJS)
src Electron renderer process folder (Web / Angular)

How to import 3rd party libraries

This sample project runs in both modes (web and electron). To make this work, you have to import your dependencies the right way. \

There are two kind of 3rd party libraries :

  • NodeJS's one (like an ORM, Database...)
    • Used in electron's Main process (app folder) have to be added in dependencies of app/package.json
    • Used in electron's Renderer process (src folder) have to be added in dependencies of both app/package.json and package.json (root folder)

Please check providers/electron.service.ts to watch how conditional import of libraries has to be done when using NodeJS / 3rd party libraries in renderer context (i.e. Angular).

  • Web's one (like bootstrap, material, tailwind...)
    • It have to be added in dependencies of package.json (root folder)

Add a dependency with ng-add

You may encounter some difficulties with ng-add because this project doesn't use the defaults @angular-builders.
For example you can find here how to install Angular-Material with ng-add.

Browser mode

Maybe you only want to execute the application in the browser with hot reload? Just run npm run ng:serve:web.

Included Commands

Command Description
npm run ng:serve Execute the app in the browser
npm run build Build the app. Your built files are in the /dist folder.
npm run build:prod Build the app with Angular aot. Your built files are in the /dist folder.
npm run electron:local Builds your application and start electron
npm run electron:build Builds your application and creates an app consumable based on your operating system

Your application is optimised. Only /dist folder and NodeJS dependencies are included in the final bundle.

You want to use a specific lib (like rxjs) in electron main thread ?

YES! You can do it! Just by importing your library in npm dependencies section of app/package.json with npm install --save XXXXX.
It will be loaded by electron during build phase and added to your final bundle.
Then use your library by importing it in app/main.ts file. Quite simple, isn't it?

E2E Testing

E2E Test scripts can be found in e2e folder.

Command Description
npm run e2e Execute end to end tests

Note: To make it work behind a proxy, you can add this proxy exception in your terminal
export {no_proxy,NO_PROXY}="127.0.0.1,localhost"

Debug with VsCode

VsCode debug configuration is available! In order to use it, you need the extension Debugger for Chrome.

Then set some breakpoints in your application's source code.

Finally from VsCode press Ctrl+Shift+D and select Application Debug and press F5.

Please note that Hot reload is only available in Renderer process.

Branch & Packages version

  • Angular 4 & Electron 1 : Branch angular4
  • Angular 5 & Electron 1 : Branch angular5
  • Angular 6 & Electron 3 : Branch angular6
  • Angular 7 & Electron 3 : Branch angular7
  • Angular 8 & Electron 7 : Branch angular8
  • Angular 9 & Electron 7 : Branch angular9
  • Angular 10 & Electron 9 : Branch angular10
  • Angular 11 & Electron 12 : Branch angular11
  • Angular 12 & Electron 13 : (master)
  • 将angular-electron的打包后的exe程序 从一键安装程序 改为 辅助安装程序 我用的 angular-electron 版本 10.1.0 前言: 我搞这个的时候,也搞了很长时间,而搞很长和时间的原因,是因为,我搜索出来的关于改变这个安装程序的配置都是要写在package.json里。。。。 说实话,当时我就信了他们的话,但是我忽略了一点,我用的是 angular-electron,

  • 公司使用Angular+Electron进行PC端应用开发,使用开源项目angular-electron作为模板(https://github.com/maximegris/angular-electron ),但随着项目的进行,被如下的几个痛点折磨得不行: 使用tsc编译主进程的代码,无法让主进程的代码热更新(需要重启,非常麻烦+耗时) 主进程和渲染进程的启动没有结合好,以至于在关闭应用的时候,

  • zorro框架是angular开发者十分常用的UI框架。然而,在非angular脚手架中引入zorro样式会报错,如下: Your project is not using the default builders for "build". The NG-ZORRO schematics cannot add a theme to the workspace configuration if th

  • Keywords: angular-electron | custom-electron-titlebar 这类问题的解决思路在Angular-Electron框架上基本可以看作一个通用的解决方案。 问题描述 简单阐述下怎么出现的问题: 开发项目的过程中,我使用了插件custom-electron-titlebar,正常在项目根目录下下载,并按照官方文档,在主进程main.ts文件中进行配置后。在

 相关资料
  • Angular Electron Seed This seed combines the technologies of Angular (4+) with Electron to create a robust development stack for creating Desktop applications. Leveraging the stock AngularCLI build pr

  • Angular 是一款十分流行且好用的 Web 前端框架,目前由 Google 维护。这个条目收录的是 Angular 2 及其后面的版本。由于官方已将 Angular 2 和之前的版本 Angular.js 分开维护(两者的 GitHub 地址和项目主页皆不相同),所以就有了这个页面。传送门:Angular.js 特性 跨平台 渐进式 Web 应用 借助现代化 Web 平台的力量,交付 app

  • 即将到来的Angular 2框架是使用TypeScript开发的。 因此Angular和TypeScript一起使用非常简单方便。 Angular团队也在其文档里把TypeScript视为一等公民。 正因为这样,你总是可以在Angular 2官网(或Angular 2官网中文版)里查看到最新的结合使用Angular和TypeScript的参考文档。 在这里查看快速上手指南,现在就开始学习吧!

  • 从头开始创建项目 lint你的代码 运行您的单元测试和端到端测试。 Angular 2 CLI目前只在TypeScript中生成框架,稍后还会有其他版本。

  • 这小节内容是译者加的,因为我认为对于新手而言,学习一个框架是有成本的,特别是对于一个不算简单的技术来说,我希望这篇教程是对新手友好的,所以我首先要让你放心的将时间和精力投入到Angular2 中。那我们先不谈技术细节,先用数据说话。 这里我多说一句,最近看一些文章中谷歌趋势截图,大都没有把范围限定在“编程”上。图中可以看出Vue2非常少,所以在下面比较中不再单独统计。 教程数量 这里我选取的主要是

  • 我们已经在Highcharts Configuration Syntax一章中看到了用于绘制图表的配置 。 下面给出角度计图表的示例。 配置 (Configurations) 现在让我们看一下所采取的其他配置/步骤。 chart.type 将图表类型配置为基于计量。 将类型设置为“规格”。 var chart = { type: 'guage' }; pane 此类型仅适用于极坐标图和角度