Webpack node-loader

处理 Node.js 插件(add-ons) 的 loader。

允许使用 .node 拓展名与原生 node module 相关联。

⚠ node-loader 只对 node/electron-main/electron-main/electron-renderer/electron-preload 生效。

快速开始

首先,你需要安装 node-loader:

$ npm install node-loader --save-dev

设置 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 配置中添加该 loader。例如:

webpack.config.js

module.exports = {
  target: node,
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /.node$/,
        loader: node-loader,
      },
    ],
  },
};

然后通过你喜欢的方式运行 webpack。

选项

NameTypeDefaultDescription
flags{Number}undefined启用/禁用 url/image-set 函数处理
name{String|Function}[contenthash].[ext]指定一个或多个目标文件的自定义文件名模板。

flags

类型:​Number​ 默认值:undefined

flags 参数是一个允许指定 dlopen 行为的整数。 [https://nodejs.org/api/process.html#process_process_dlopen_module_filename_flags] 文档了解更多。

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

贡献

如果你还未阅读贡献指南,请抽时间进行阅读。

License

MIT

作者:terry,如若转载,请注明出处:https://www.web176.com/webpack/22646.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2023年5月26日
下一篇 2023年5月26日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注