Node.js アドオンローダー。
.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} | 未定義 | 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]'
ターゲットファイルのカスタムファイル名テンプレートを指定します。
Stringwebpack.config.js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
options: {
name: "[path][name].[ext]",
},
},
],
},
};Functionwebpack.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]";
},
},
},
],
},
};まだ行っていない場合は、貢献ガイドラインをお読みください。