1.0.1 • Published 5 years ago

b64-loader v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

npm used by node deps

Install

npm install --save-dev b64-loader

Usage

Loader for embedding native add-ons in projects of nodes or electrons by unpacking native add-ons and their dependencies from base64 in a temporary folder.

:information_source: WebPack Target: Node

Example

index.js

import pty from "./blessed/pty.js";
export default pty;

webpack.config.js

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

Options

NameTypeDefaultDescription
tempDir{String}'myAddons'The name of the folder in the temporary folder
resourceDir{Boolean\|String}falseOne folder name for all addons
grouping{Array}[]Grouping files into one folder
dependencies{Object}{}Saving dependencies
dirs (beta){Object}{}Saving specified files and folders

resourceDir

Type: Boolean|String Default: false

If true then the resource folder will have a name by hashName from its path, and not by name. Otherwise, your value.

webpack.config.js

module.exports = {
  target: 'node',
  module: {
    rules: [{
      test: /\.(node|exe|dll)$/,
      loader: "b64-loader",
      options: {
        resourceDir: true || "nameYourFolder"
      }
    }]
  }
};

grouping

Type: Array Default: []

Resource folder will have a name by hashName from resource path...

webpack.config.js

module.exports = {
  target: 'node',
  module: {
    rules: [{
      test: /\.(node|exe|dll)$/,
      loader: "b64-loader",
      options: {
        grouping: [
          'pty.node',
          'winpty.dll',
          'winpty-agent.exe',
        ]
      }
    }]
  }
};

dependencies

Type: Object Default: {}

Resource folder will have a name by hashName from resource path...

webpack.config.js

module.exports = {
  target: 'node',
  module: {
    rules: [{
      test: /\.node$/,
      loader: "b64-loader",
      options: {
        tempDir: "blessedApp",
        dependencies: {
          'pty.node': [
            'winpty.dll',
            'winpty-agent.exe',
            'obj/pty/pty.obj',
          ]
        }
      }
    }]
  }
};

dirs

Type: Object Default: {}

Resource folder will have a name by hashName from resource path...

webpack.config.js

module.exports = {
  target: 'node',
  module: {
    rules: [{
      test: /\.node$/,
      loader: "b64-loader",
      options: {
        tempDir: "blessedApp",
        dirs: {
          'linux': [
            // All files and folders in resource folder
            '.',
          ]
        }
      }
    }]
  }
};

Example without WebPack (Beta)

index.js

const Fs = require("fs-extra");
const b64Loader = require("b64-loader").custom;

const tempDir = "myPacker";

const res = b64Loader(
	"D:/projects/node/webpack/blessed/usr/linux",
	null, // No source
	{
		tempDir,
		dirs: {
			'linux': [
				// All files in `D:/projects/node/webpack/blessed/usr/`
				'.',
			]
		}
	}
)
Fs.writeFileSync("./blessed/lib/vjuh-usr-win.js", res);