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";

然後將 loader 加入您的 webpack 設定。例如

webpack.config.js

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

並透過您偏好的方法執行 webpack

選項

名稱類型預設值說明
旗標{數字}未定義啟用/停用 url/image-set 函式處理
名稱{字串|函式}'[contenthash].[ext]'指定目標檔案的自訂檔名範本。

flags

類型:數字 預設值:未定義

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

類型:字串|函式 預設值:'[contenthash].[ext]'

指定目標檔案的自訂檔名範本。

字串

webpack.config.js

module.exports = {
  target: "node",
  node: {
    __dirname: false,
  },
  module: {
    rules: [
      {
        test: /\.node$/,
        loader: "node-loader",
        options: {
          name: "[path][name].[ext]",
        },
      },
    ],
  },
};

函式

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