> For the complete documentation index, see [llms.txt](https://en.docs.monaca.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://en.docs.monaca.io/tutorials/cordova_electron/use_npm_package.md).

# How to Use a NPM Package

This tutorial will show you how to create a Electron app using Cordova with a Monaca template and use a NPM package to get the machine uuid.

{% hint style="info" %}
The method to get the uuid of a machine using the NPM package is not supported in version 3.0.0 of cordova-electron. Please use the Device plugin.
{% endhint %}

## Step 1: Creating a blank Electron app

First of all, let's create an app with a blank template for an Electron app. From the Monaca dashboard, go to **Create New Project → Sample Applications**. Then choose **Electron Blank** from the template list, fill in the `Project Name` and `Description` and click **Create Project**.

![](/files/-MgEmuRi-RumHDD6c9Sj)

## Step 2: Enable Node integration in an Electron app

When working with a Cordova project, it is recommended to create an Electron settings file in the project's root directory. Set the relative path in the preference option `ElectronSettingsFilePath` in the `config.xml` file. Electron provides many options to manipulate the `BrowserWindow` object. For a full list of options, please see the [Electron docs](https://electronjs.org/docs/api/browser-window#new-browserwindowoptions).

1. Set the `ElectronSettingsFilePath` in the `preference` tag inside the Electron `platform` tag.

   ```markup
    <platform name="electron">
        ...
        <preference name="ElectronSettingsFilePath" value="res/electron/settings.json"/>
    </platform>
   ```
2. Create a settings file and set `nodeIntegration` to `true`

   ```javascript
    {
        "browserWindow": {
            ...
            "webPreferences": {
            ...
            "nodeIntegration": true
            }
        }
    }
   ```

## Step 3: Install NPM packages

Open a new terminal, navigate to your project and install your desired package. In this tutorial, we are going to install `node-machine-id` to retrieve the machine UUID. To do that, run the following command:

```javascript
npm install node-machine-id
```

{% hint style="info" %}
Terminal feature can be used in a paid plan.
{% endhint %}

After running successfully, your `package.json` should have `node-machine-id` in the `dependencies` property.

```javascript
{
    ...
    "dependencies": {
        ...
        "node-machine-id": "^1.1.12"
    }
}
```

## Step 4: Using NPM packages in the project

Once a package is installed, we just need to `require` or `import` the module to start using it. In the following code snippet, the `getDeviceUUIDForElectronPlatform` function gets the machine UUID of an Electron platform by using the `node-machine-id` package that we just installed in the previous step. Otherwise we will just use the `device.uuid` property from the `cordova-plugin-device` Cordova plugin to get the device UUID for `ios` or `android` platforms.

{% hint style="info" %}
The device uuid is not available on the browser platform.
{% endhint %}

```javascript
var app = {
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },

    onDeviceReady: function() {
        console.log('device ready');
        this.getDeviceUUID();
    },

    getDeviceUUIDForElectronPlatform: function() {
        try {
            const machineIdSync = require('node-machine-id').machineIdSync;
            return machineIdSync({original: true});
        } catch (error) {
            console.error(error);
            return 'Could not get machine id';
        }
    },

    getDeviceUUID: function() {
        const platformId = window.cordova.platformId;
        const deviceInfo = document.getElementById('device-info');
        let uuid = null;
        if (platformId.includes('electron')) {
            // get uuid from npm package for electron platform
            uuid = this.getDeviceUUIDForElectronPlatform();
        } else if (device && device.uuid && ['ios', 'android'].indexOf(platformId) >= 0) {
            // get uuid from cordova-plugin-device
            uuid = device.uuid;
        } else {
            // other platforms such as browser, ...
            uuid = `The ${platformId} platform is not supported.`;
        }
        if (uuid) deviceInfo.innerHTML = `Device UUID: ${uuid}`;
    }
};

app.initialize();
```

See Also:

* [Building an Electron application](/products_guide/monaca_ide/build/electron.md)
