Add awesome esm dependency and a simple launcher used as global npm install
This commit is contained in:
parent
f0576081d1
commit
917e7b18b2
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const { resolve } = require('path')
|
||||
let params = process.argv.slice(2)
|
||||
|
||||
const moduleStr = params.shift()
|
||||
const [ esmodule, exported ] = (moduleStr || '').split(':')
|
||||
|
||||
const optionReg = /^-{1,2}(.*?)([:=](.*?))?$/
|
||||
const args = params.filter( s=> optionReg.test(s) )
|
||||
.reduce( (opt,str)=> {
|
||||
let [ , prop, , value ] = optionReg.exec(str)
|
||||
return Object.assign( opt, {[prop]: value || true} )
|
||||
// return hasValue ? { ...opt, [prop]: value || true }
|
||||
// : opt
|
||||
},
|
||||
params.filter( s=> !optionReg.test(s) )
|
||||
)
|
||||
|
||||
const package = resolve('./package.json')
|
||||
, modulo = resolve(esmodule)
|
||||
|
||||
//console.log( process.cwd(), package, modulo )
|
||||
//console.log( process.argv, esmodule, exported, args )
|
||||
|
||||
let mod =
|
||||
require('esm')( module, {await: true} )
|
||||
( modulo || require(package).module )
|
||||
|
||||
let toCall = mod[ exported || 'default' ]
|
||||
let returned =
|
||||
typeof toCall == 'function'
|
||||
? toCall( args )
|
||||
: toCall
|
||||
//console.log( 'type' , typeof returned, returned instanceof Promise )
|
||||
returned instanceof Promise
|
||||
? returned.then( ret=> console.log(ret||''), e=>console.error(e) )
|
||||
: console.log( returned || '' )
|
||||
|
||||
module.exports = mod
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"name": "esm-cli",
|
||||
"version": "1.0.0",
|
||||
"description": "EcmaScript Module launcher",
|
||||
"main": "esm.js",
|
||||
"bin": {
|
||||
"esm": "./bin/esm-cli.js"
|
||||
},
|
||||
"preferGlobal": true,
|
||||
"dependencies": {
|
||||
"esm": "^3.2.18"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "MIT"
|
||||
}
|
Loading…
Reference in New Issue