node-loader

免责声明 node-loader是一个由社区成员维护的第三方包,它可能不具备与 webpack 相同的支持、安全策略或许可证,并且不受 webpack 维护。

npm node tests coverage discussion size

node-loader

一个用于 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]'

为目标文件指定一个自定义文件名模板。

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]";
          },
        },
      },
    ],
  },
};

贡献

如果你尚未阅读,请花一点时间阅读我们的贡献指南。

贡献

许可证

MIT