Package Exports
- likeaboss
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (likeaboss) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
๐ด likeaboss
export like a boss with functions, dynamic & static requires, module & web support; easy, fast & tiny.
works with:
- ๐ผ es5
- ๐ฌ es6+
- ๐ typescript
- ๐ผ babel
- ๐ธ web
- ๐๐ node
- other?
๐ฆ usage
yarn add likeaboss
npm i likeaboss --save
๐ documentation
๐ฌ tests
๐ examples

const Export = require('likeaboss')
const pkg = require('./package.json')
// export directly on the module without module.exports
// or do `exports = module.exports = ` when using .export
Export
.module(module)
// main export to be decorated
.main(ClassOrFunction)
// export for web usage when needed
.web('your-lib-name')
// load dynamic
.dir(__dirname + '/your-dist-folder')
// and all other props you want to use
.props({version: pkg.version})
// only `required` when used
.dynamics([
{name: 'PluginEh', path: '/PluginEh'},
{name: 'PluginOh', path: '/PluginOh'},
])
// finish
.end()
dynamics
only used when the "import"er / client does
import {PluginEh} from 'your-lib'
or
import ClassOrFunction from 'your-lib'
const {PluginEh} = ClassOrFunction
๐ณ diving deeper examples
โ fluent function export
const Export = require('likeaboss')
function fn(options, callback) {
// magical things when called as a function
}
const Canada = {canada: true}
exports = module.exports = Export.export(module.exports)
.fn(fn)
.props({Canada})
.end()
fluent fn with requires
dynamic and static requires, dynamic requires only are required when they are used
const Export = require('likeaboss')
function fn() {
console.log('called as a function')
}
exports = module.exports = Export.export(module.exports)
.dir(__dirname)
.fn(fn)
.dynamics('src', ['Boss'])
.dynamics('src/plugins', ['BossPlugin'])
.dynamics('', [{path: 'package.json', name: 'pkg'}])
.statics('', ['Statics'])
.end()
๐ฆ importing:
requires
./eh/src/Boss.js
import {Boss} from './eh'
import eh from './eh'
eh('callable as a function!')
console.log(Boss)
// requires the BossPlugin
console.log(eh.plugins.BossPlugin)
object function with requires
same as with fluent, but using object syntax
const Export = require('likeaboss')
exports = module.exports = Export.from({
target: module.exports,
dir: __dirname,
fn: func,
props: {Eh, Canada},
dynamics: {
'src': ['Boss'],
'src/plugins': ['BossPlugin'],
},
statics: {
'': ['Statics'],
},
})
module
no need to reassign exports and modules ([exports] is optional 2nd arg)
Exports.module(module).props({Canada}).end()
๐ฝ exports
file size (~700 bytes)
from
// imports the `from` static fn
const from = require('likeaboss/from')
const Export = require('likeaboss')
generate
๐งโ warning, experimental
// export.js
const gen = require('likeaboss/gen')
function fn(options, callback) { /* magic */ }
const Eh = {eh: true}
const Canada = {canada: true}
exports = module.exports = Exports.export()
.dir(__dirname)
.fn(fn)
.dynamics('src', ['Boss'])
.dynamics('src/plugins', ['BossPlugin'])
.statics('', ['Statics'])
.props({Eh, Canada})
.web('eh')
.end()
.toString()
console.log(exports)
// outputs exporting string
// node export.js > index.js
โ๏ธ benchmark
using ๐๏ธโ bench-chain

optimized x 30,975 ops/sec ยฑ13.48% (50 runs sampled)
fluent x 20,434 ops/sec ยฑ3.52% (73 runs sampled)
times with last example
console.log({})
: ~ โฒ 35000ms / 35ms- fluent: ~ โฒ 1300 microseconds / 1.3ms
- optimized: ~ โฒ 400 microseconds / .4ms
exports = module.exports = ...
: ~ โฒ 100-200 microseconds / .1ms-.2ms
๐ญ
output
example generated output pseudo code
function fn() {}
const ex = {
Eh: {eh: true},
Canada: {canada: true},
Boss: 'boss',
plugins: {},
Statics: {static: true},
__esModule: true,
}
Object.defineProperty(ex.plugins, 'BossPlugin', {
get() {
return 'boss'
},
})
ex.default = ex
Object.assign(fn, ex)