node-loader

免責事項 node-loaderはコミュニティメンバーによって維持されているサードパーティパッケージであり、webpack と同じサポート、セキュリティポリシー、またはライセンスを持たない可能性があり、webpack によって維持されていません。

npm node tests coverage discussion size

Node.js アドオンローダー。

.node 拡張子を持つネイティブノードモジュールを接続できます。

node-loadernode/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}未定義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