DEPRECATED in favor of https://github.com/webpack/webpack/tree/main/examples/nodejs-addons
A Node.js add-ons loader.
Allows to connect native node modules with .node extension.
⚠
node-loaderonly works on thenode/async-node/electron-main/electron-renderer/electron-preloadtargets.
To begin, you'll need to install node-loader:
npm install node-loader --save-devor
yarn add -D node-loaderor
pnpm add -D node-loaderSetup 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 = {
resolve: {
extensions: ["...", ".node"],
},
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). |
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,
},
},
],
},
};Type: String|Function
Default: '[contenthash].[ext]'
Specifies a custom filename template for the target file(s).
webpack.config.js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
options: {
name: "[path][name].[ext]",
},
},
],
},
};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.