Skip to content

WebPack Loader of resources and their dependencies using base64 in a temporary folder

Notifications You must be signed in to change notification settings

xTCry/b64-webpack-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm used by node deps

Native Resource base64 loader

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.

ℹ️ 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

Name Type Default Description
tempDir {String} 'myAddons' The name of the folder in the temporary folder
resourceDir {Boolean|String} false One 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);

About

WebPack Loader of resources and their dependencies using base64 in a temporary folder

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published