-
Notifications
You must be signed in to change notification settings - Fork 153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhancement or Bug: Handling of 'electron/*' process-specific module aliases #372
Closed
4 tasks done
Labels
Comments
undergroundwires
changed the title
Enhancement or Bug: Handling of 'electron/main' in
Enhancement or Bug: Handling of 'electron/*' in Jan 5, 2024
externalizeDepsPlugin
externalizeDepsPlugin
undergroundwires
changed the title
Enhancement or Bug: Handling of 'electron/*' in
Enhancement or Bug: Handling of 'electron/*' process-specific module aliases
Jan 5, 2024
externalizeDepsPlugin
Hi, @undergroundwires, Thx. This is a bug, Electron's export subpaths also need to be externalized. I'll fix it soon. |
alex8088
added a commit
that referenced
this issue
Jan 6, 2024
electron-vite 2.0 is out! 🎉, fixed |
undergroundwires
added a commit
to undergroundwires/privacy.sexy
that referenced
this issue
Mar 18, 2024
This commit bumps Electron and related dependencies to their latest versions to leverage native ESM support. It adjusts build configuration to use native ESM support instead of relying on CommonJS bundling. Key changes: - Bump Electron to latest v29. Electron v28 ships with native ESM/ECMAScript modules support. Details on Electron ESM support: - electron/electron#21457 - electron/electron#37535 - Bump `electron-builder` to latest v24.13. `electron-builder` is used to package and publish the application. It supports ESM since 24.10. Details on `electron-builder` ESM support: - electron-userland/electron-builder#7936 - electron-userland/electron-builder#7935 - Bump `electron-log` to latest v5.1. `electron-log` supports ESM since version 5.0.4. Details on `electron-log` ESM support: - megahertz/electron-log#390. - Change `electron-vite` configuration to bundle as ESM instead of CommonJS to leverage Electron's native ESM support. Other supporting changes: - Add type hint for electron-builder configuration file. - Update import statements for `electron-updater` as it still is a CommonJS module and does not support ESM. Details: - electron-userland/electron-builder#7976 - Improve `electron-builder` configuration file to dynamically locate main entry files, supporting various JavaScript file extensions (`.js`, `.mjs` and `.cjs`) to facilitate easier future changes. - Change comment about Electron process-specific module alias registration. This issue has been fixed in `electron-vite`, but subpath module imports for Electron still do not work when building tests (`npm run test:unit`). Details: - alex8088/electron-vite#372 - Add `electron-log` in bundling process instead of externalizing to workaround Electron ESM loader issues with subpath imports (inability to do `electron-log/main`). Details: - alex8088/electron-vite#401 - electron/electron#41241 - Improve desktop runtime error checks' assertion message for better clarity.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug
Hi @alex8088, thank you again for the project, everything has been painless so far. Your efforts are appreciated to keep it up to speed with latest changes in ecosystem (vite, ESM etc.).
I have an idea for improvement (or maybe a bug depends on how we look at it).
While importing from
electron
directly works fine (e.g.,import { app } from 'electron'
), I've noticed that alias imports likeelectron/main
,electron/common
(which is considered best practice as it scopes the import to the right process), such asimport { app } from 'electron/main'
does not work.Error:
Currently, I can work around this issue by explicitly including
'electron/main'
in the plugin configuration:Or I can do that using using
resolve.alias
:Using
resolve.alias
is better because it also works in non-electron builds for example when building unit tests.Would it be beneficial to provide this config through
electron-vite
somehow? Part ofexternalizeDepsPlugin
or something similar configuration that can be shared acrosselectron.vite.config.ts
and unit tests.It's probably nice-to-have but it will have good impact on developer experience.
Electron-Vite Version
1.0.28
Electron Version
27.0.0
Vite Version
4.4.11
Validations
The text was updated successfully, but these errors were encountered: