A Node.js add-ons loader.
Allows to connect native node modules with .node
extension.
⚠
node-loader
only works on thenode
/electron-main
/electron-main
targets.
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-set functions handling |
name | {String|Function} | '[contenthash].[ext]' | Specifies a custom filename template for the target file(s). |
flags
Type: 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,
},
},
],
},
};
name
Type: String|Function
Default: '[contenthash].[ext]'
Specifies a custom filename template for the target file(s).
String
webpack.config.js
module.exports = {
target: 'node',
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: 'node-loader',
options: {
name: '[path][name].[ext]',
},
},
],
},
};
Function
webpack.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.