处理 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
。
Name | Type | Default | Description |
---|---|---|---|
flags | {Number} | undefined | 启用/禁用 url /image-set 函数处理 |
name | {String|Function} | '[contenthash].[ext]' | 指定一个或多个目标文件的自定义文件名模板。 |
flags
类型:Number
默认值:undefined
flags
参数是一个允许指定 dlopen 行为的整数。
请查阅 [process.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]';
},
},
},
],
},
};
如果你还未阅读贡献指南,请抽时间进行阅读。