NodeRT but precompiled (use WinRT API directly from node).
Usage is similar to the original NodeRT package(s).
For more details on NodeRT, please kindly see the corresponding NodeRT package.
📦 Scoped @xan105
packages are for my own personal use but feel free to use them.
Dummy toast notification
import * as winRT from "@xan105/nodert";
const xml = new winRT.data.xml.dom.XmlDocument();
xml.loadXml(xmlString);
const toast = new winRT.ui.notifications.ToastNotification(xml);
const toaster = winRT.ui.notifications.ToastNotificationManager.createToastNotifier(appID);
toaster.show(toast);
setTimeout(() => {}, 100); //Keep alive
💡 Interested in toast notification ? check out powertoast.
npm i @xan105/nodert
An internet connection is required to download the prebuilt binaries. They are hosted on github.
By default every NodeRT bindings will be installed.
Similar to nodert-npm you can choose to only keep the NodeRT bindings you do need by:
- passing a comma separated list of modules as argument
npm i @xan105/nodert --modules="windows.ui.notifications, windows.data.xml.dom"
- or by adding a list of modules in your package.json file under the
_nodert/modules
path
For example, having the following section in your package.json will result with the installation of the "windows.devices.geolocation" and "windows.devices.sensors" modules:
"_nodert" : {
"modules" : [
"windows.devices.geolocation",
"windows.device.sensors"
]
},
NodeRT scope used as a base is nodert-win11-22h2.
XAML
and *.preview
WinRT namespaces are removed.
Some namespaces have been kept back to win10-rs4
due to compilation failure (regression).
List of namespaces can be found here (GitHub).
NodeRT package are not using n-api they must be compiled for every ABI.
Unless exception, expect prebuilds for current and previous Node.js LTS releases (x64).
List of provided ABI can be found here (GitHub) or in the corresponding GitHub release.
Switching to Electron ABI instead of Node can be done by adding the --electron
flag or the env. variable npm_config_runtime
set to electron
.
Alternatively in your package.json file under the _nodert
path:
"_nodert" : {
"runtime": "electron",
"modules" : [
"windows.devices.geolocation",
"windows.device.sensors"
]
},
Electron's packages.json
file will be read to determine Electron's ABI.
Please see the NodeRT and Microsoft docs for more details.
WinRT namespaces are also exported under their respective namespace:
import { ui } from "@xan105/nodert"
const toast = new ui.notifications.ToastNotification(xml);
import { notifications } from "@xan105/nodert/ui"
const toast = new notifications.ToastNotification(xml);
They are a couple of them due to compilation failure.
🐞 NB: Provided types are those from NodeRT packages. I know they have some errors but I haven't the courage to fix them up by hand.
🆚 Visual Studio 2022:
-
Visual Studio Installer:
- C/C++ Desktop
- C++ ATL for latest v143
- C++ MFC for latest v143
- C++/CLI support for v143 build tools
- MSVC v140 - VS 2015 C++ build tools (v14.00) //VS2015 build tools
- Windows 11 SDK 22h2 (10.0.22621.0)
-
Manual:
⬢ Node.js native addon:
- Node.js v20.11.0
- npm v10.2.4
- node-gyp v10.0.1
- Python3 v3.11.3