node-loader

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

npm node tests coverage discussion size

一个 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 = {
  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]";
          },
        },
      },
    ],
  },
};

贡献

如果你还没有这样做,请花点时间阅读我们的贡献指南。

CONTRIBUTING

许可证

MIT