A Node.js add-ons loader.
Allows to connect native node modules with .node extension.
⚠
node-loaderonly works on thenode/electron-main/electron-maintargets.
To begin, you'll need to install node-loader:
$ npm install node-loader --save-dev
Setup the target option to node/electron-main/electron-main value and do not mock the __dirname global variable.
webpack.config.js
module.exports = {
  target: 'node',
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /\.node$/,
        loader: 'node-loader',
      },
    ],
  },
};index.js
import node from 'node-loader!./file.node';And run webpack via your preferred method.
index.js
import node from 'file.node';Then add the loader to your webpack config. For example:
webpack.config.js
module.exports = {
  target: 'node',
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /\.node$/,
        loader: 'node-loader',
      },
    ],
  },
};And run webpack via your preferred method.
| Name | Type | Default | Description | 
|---|---|---|---|
| flags | {Number} | undefined | Enables/Disables url/image-setfunctions handling | 
| name | {String|Function} | '[contenthash].[ext]' | Specifies a custom filename template for the target file(s). | 
flagsType: Number Default: undefined
The flags argument is an integer that allows to specify dlopen behavior. See the [process.dlopen][https://nodejs.org/api/process.html#process_process_dlopen_module_filename_flags] documentation for details.
index.js
import node from 'file.node';webpack.config.js
const os = require('os');
module.exports = {
  target: 'node',
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /\.node$/,
        loader: 'node-loader',
        options: {
          flags: os.constants.dlopen.RTLD_NOW,
        },
      },
    ],
  },
};nameType: String|Function Default: '[contenthash].[ext]'
Specifies a custom filename template for the target file(s).
Stringwebpack.config.js
module.exports = {
  target: 'node',
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /\.node$/,
        loader: 'node-loader',
        options: {
          name: '[path][name].[ext]',
        },
      },
    ],
  },
};Functionwebpack.config.js
module.exports = {
  target: 'node',
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /\.node$/,
        loader: 'node-loader',
        options: {
          name(resourcePath, resourceQuery) {
            // `resourcePath` - `/absolute/path/to/file.js`
            // `resourceQuery` - `?foo=bar`
            if (process.env.NODE_ENV === 'development') {
              return '[path][name].[ext]';
            }
            return '[contenthash].[ext]';
          },
        },
      },
    ],
  },
};Please take a moment to read our contributing guidelines if you haven't yet done so.