node-loader
A Node.js add-ons loader.
Allows to connect native node modules with .node
extension.
⚠
node-loader
only works on thenode
/async-node
/electron-main
/electron-renderer
/electron-preload
targets.
Getting Started
To begin, you'll need to install node-loader
:
$ npm install node-loader --save-dev
Setup the target
option to node
/async-node
/electron-main
/electron-renderer
/electron-preload
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", }, ], }, };
Inline
index.js
import node from "node-loader!./file.node";
And run webpack
via your preferred method.
Configuration
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.
Options
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
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]"; }, }, }, ], }, };
Contributing
Please take a moment to read our contributing guidelines if you haven't yet done so.
License
© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/loaders/node-loader