{"id":17463031,"url":"https://github.com/webpack-contrib/node-loader","last_synced_at":"2025-04-13T08:57:14.790Z","repository":{"id":6966027,"uuid":"8218682","full_name":"webpack-contrib/node-loader","owner":"webpack-contrib","description":"node loader for native modules","archived":false,"fork":false,"pushed_at":"2025-02-20T08:57:44.000Z","size":965,"stargazers_count":123,"open_issues_count":5,"forks_count":43,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-06T05:10:02.894Z","etag":null,"topics":["nodejs","webpack-loader"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webpack-contrib.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"webpack"}},"created_at":"2013-02-15T13:23:37.000Z","updated_at":"2025-03-05T13:48:37.000Z","dependencies_parsed_at":"2025-02-21T07:01:34.067Z","dependency_job_id":"fc590bad-fdb3-4853-9975-57b1a9c1fe5f","html_url":"https://github.com/webpack-contrib/node-loader","commit_stats":{"total_commits":78,"total_committers":20,"mean_commits":3.9,"dds":0.6153846153846154,"last_synced_commit":"37629ddc2ed60f85c2e814b71c7077fa90506ee2"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fnode-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fnode-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fnode-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fnode-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webpack-contrib","download_url":"https://codeload.github.com/webpack-contrib/node-loader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248688529,"owners_count":21145764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodejs","webpack-loader"],"created_at":"2024-10-18T10:07:52.194Z","updated_at":"2025-04-13T08:57:14.763Z","avatar_url":"https://github.com/webpack-contrib.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/webpack/webpack\"\u003e\n    \u003cimg width=\"200\" height=\"200\" src=\"https://webpack.js.org/assets/icon-square-big.svg\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n[![npm][npm]][npm-url]\n[![node][node]][node-url]\n[![tests][tests]][tests-url]\n[![coverage][cover]][cover-url]\n[![discussion][discussion]][discussion-url]\n[![size][size]][size-url]\n\n# node-loader\n\nA [Node.js add-ons](https://nodejs.org/dist/latest/docs/api/addons.html) loader.\n\nAllows to connect native node modules with `.node` extension.\n\n\u003e ⚠ `node-loader` only works on the `node`/`async-node`/`electron-main`/`electron-renderer`/`electron-preload` targets.\n\n## Getting Started\n\nTo begin, you'll need to install `node-loader`:\n\n```console\nnpm install node-loader --save-dev\n```\n\nor\n\n```console\nyarn add -D node-loader\n```\n\nor\n\n```console\npnpm add -D node-loader\n```\n\nSetup the `target` option to `node`/`async-node`/`electron-main`/`electron-renderer`/`electron-preload` value and do not mock the `__dirname` global variable.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  resolve: {\n    extensions: [\"...\", \".node\"],\n  },\n  target: \"node\",\n  node: {\n    __dirname: false,\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.node$/,\n        loader: \"node-loader\",\n      },\n    ],\n  },\n};\n```\n\n### Inline\n\n**index.js**\n\n```js\nimport node from \"node-loader!./file.node\";\n```\n\nAnd run `webpack` via your preferred method.\n\n### Configuration\n\n**index.js**\n\n```js\nimport node from \"file.node\";\n```\n\nThen add the loader to your `webpack` config. For example:\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  target: \"node\",\n  node: {\n    __dirname: false,\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.node$/,\n        loader: \"node-loader\",\n      },\n    ],\n  },\n};\n```\n\nAnd run `webpack` via your preferred method.\n\n## Options\n\n|         Name          |         Type         |         Default         | Description                                                  |\n| :-------------------: | :------------------: | :---------------------: | :----------------------------------------------------------- |\n| **[`flags`](#flags)** |      `{Number}`      |       `undefined`       | Enables/Disables `url`/`image-set` functions handling        |\n|  **[`name`](#name)**  | `{String\\|Function}` | `'[contenthash].[ext]'` | Specifies a custom filename template for the target file(s). |\n\n### `flags`\n\nType: `Number`\nDefault: `undefined`\n\nThe `flags` argument is an integer that allows to specify dlopen behavior.\nSee the [`process.dlopen`](https://nodejs.org/api/process.html#process_process_dlopen_module_filename_flags) documentation for details.\n\n**index.js**\n\n```js\nimport node from \"file.node\";\n```\n\n**webpack.config.js**\n\n```js\nconst os = require(\"os\");\n\nmodule.exports = {\n  target: \"node\",\n  node: {\n    __dirname: false,\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.node$/,\n        loader: \"node-loader\",\n        options: {\n          flags: os.constants.dlopen.RTLD_NOW,\n        },\n      },\n    ],\n  },\n};\n```\n\n### `name`\n\nType: `String|Function`\nDefault: `'[contenthash].[ext]'`\n\nSpecifies a custom filename template for the target file(s).\n\n#### `String`\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  target: \"node\",\n  node: {\n    __dirname: false,\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.node$/,\n        loader: \"node-loader\",\n        options: {\n          name: \"[path][name].[ext]\",\n        },\n      },\n    ],\n  },\n};\n```\n\n#### `Function`\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  target: \"node\",\n  node: {\n    __dirname: false,\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.node$/,\n        loader: \"node-loader\",\n        options: {\n          name(resourcePath, resourceQuery) {\n            // `resourcePath` - `/absolute/path/to/file.js`\n            // `resourceQuery` - `?foo=bar`\n\n            if (process.env.NODE_ENV === \"development\") {\n              return \"[path][name].[ext]\";\n            }\n\n            return \"[contenthash].[ext]\";\n          },\n        },\n      },\n    ],\n  },\n};\n```\n\n## Contributing\n\nPlease take a moment to read our contributing guidelines if you haven't yet done so.\n\n[CONTRIBUTING](./.github/CONTRIBUTING.md)\n\n## License\n\n[MIT](./LICENSE)\n\n[npm]: https://img.shields.io/npm/v/node-loader.svg\n[npm-url]: https://npmjs.com/package/node-loader\n[node]: https://img.shields.io/node/v/node-loader.svg\n[node-url]: https://nodejs.org\n[tests]: https://github.com/webpack-contrib/node-loader/workflows/node-loader/badge.svg\n[tests-url]: https://github.com/webpack-contrib/node-loader/actions\n[cover]: https://codecov.io/gh/webpack-contrib/node-loader/branch/master/graph/badge.svg\n[cover-url]: https://codecov.io/gh/webpack-contrib/node-loader\n[discussion]: https://img.shields.io/github/discussions/webpack/webpack\n[discussion-url]: https://github.com/webpack/webpack/discussions\n[size]: https://packagephobia.now.sh/badge?p=node-loader\n[size-url]: https://packagephobia.now.sh/result?p=node-loader\n","funding_links":["https://opencollective.com/webpack"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebpack-contrib%2Fnode-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebpack-contrib%2Fnode-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebpack-contrib%2Fnode-loader/lists"}