一个用于 Node.js 插件的加载器。
允许连接带有 .node 扩展名的原生 Node 模块。
⚠
node-loader仅适用于node/async-node/electron-main/electron-renderer/electron-preload目标。
首先,你需要安装 node-loader
npm install node-loader --save-dev
或
yarn add -D node-loader
或
pnpm add -D node-loader
将 target 选项设置为 node/async-node/electron-main/electron-renderer/electron-preload 值,并且不要模拟 __dirname 全局变量。
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";
然后通过你喜欢的方式运行 webpack。
index.js
import node from "file.node";
然后将加载器添加到你的 webpack 配置中。例如
webpack.config.js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
},
],
},
};
然后通过你喜欢的方式运行 webpack。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
标志 | {Number} | undefined | 启用/禁用 url/image-set 函数处理 |
名称 | {String|Function} | '[contenthash].[ext]' | 为目标文件指定一个自定义文件名模板。 |
flags类型: Number 默认值: undefined
flags 参数是一个整数,用于指定 dlopen 行为。详情请参阅 process.dlopen 文档。
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类型: String|Function 默认值: '[contenthash].[ext]'
为目标文件指定一个自定义文件名模板。
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]";
},
},
},
],
},
};
如果你尚未阅读,请花一点时间阅读我们的贡献指南。