Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

asbundle

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

asbundle

A minimalistic CommonJS bundler

  • 2.7.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
11
decreased by-85.9%
Maintainers
1
Weekly downloads
 
Created
Source

asbundle

donate License: ISC Build Status Greenkeeper badge

A minimalistic CommonJS bundler.


This module is a perfect ascjs companion to create CommonJS bundles.

Passing a single ESM/CJS source file as path name, it will produce a lightweight, optimized, and minifier friendly bundle, to consume right away without needing global require or runtime discovered CommonJS dependencies.

Goals

  • be as simple as possible, but not simpler
  • make creation of small modules written in ESM a no brainer
  • enable .js files as ESM everywhere, following a simple folder convention
  • produce files compatible with most common bundlers and tools (Babel, Webpack, UglifyJS, etc)

Example of a basic module based on ascjs and asbundle.

Non-Goals

  • replace Babel, Webpack, Rollup, or any other tool. Let them do complicated things when needed
  • transpile anything else than ESM import/export declarations

How to

You can use asbundle as binary utility or as module.

npm install -g asbundle

# to see what you can do
asbundle --help

As executable, you can use asbundle to output, or save, a bundle entry point.

asbundle source-file.js           # writes bundle contents to STDOUT
asbundle source-file.js bundle.js # outputs to bundle.js

As module, you can require it and use it to obtain a bundle string.

const asbundle = require('asbundle');

asbundle(sourceFileName);

Features

  • extremely lightweight, based on babylon for performance and reliability
  • it uses ascjs to automatically transform, when needed, ES2015+ modules into CommonJS code
  • understands both relative files and installed packages too (based on require.resolve(...))
  • reproduces a modern and minimalistic CommonJS environments ideal for browsers
  • compatible with Babel __esModule and .default convention

Constrains

  • same constrains of ascjs
  • Node core modules are not brought to the bundle, if a module cannot be resolved as file name it throws

Example

This module can transform main.js entry file via asbundle main.js out.js:

// main.js
import func, {a, b} from './module.js';
const val = 123;
export default function test() {
  console.log('asbundle');
};
export {func, val};

// module.js
export const a = 1, b = 2;
export default function () {
  console.log('module');
};

into the following bundle:

// out.js => 266 bytes minified & gzipped
(function (cache, modules) {
  function require(i) { return cache[i] || get(i); }
  function get(i) {
    var exports = {}, module = {exports: exports};
    modules[i].call(exports, window, require, module, exports);
    return (cache[i] = module.exports);
  }
  var main = require(0);
  return main.__esModule ? main.default : main;
}([],[function (global, require, module, exports) {
// main.js
'use strict';
const func = (m => m.__esModule ? m.default : m)(require(1));
const {a, b} = require(1);
const val = 123;
function test() {
  console.log('asbundle');
}
Object.defineProperty(exports, '__esModule', {value: true}).default = test;
exports.func = func;
exports.val = val;
},function (global, require, module, exports) {
// module.js
'use strict';
const a = 1, b = 2;
exports.a = a;
exports.b = b;
Object.defineProperty(exports, '__esModule', {value: true}).default = function () {
  console.log('module');
};
}]));

The main module is returned and executed as default entry so it becomes easy to publish as global variable for Web purposes too.

Add a const myModule = prefix to the bundled code and use it right away.

Keywords

FAQs

Package last updated on 10 Sep 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc