{"id":18961954,"url":"https://github.com/lamualfa/nodejs-expose-cli","last_synced_at":"2026-04-27T08:31:59.990Z","repository":{"id":57146079,"uuid":"228350951","full_name":"lamualfa/nodejs-expose-cli","owner":"lamualfa","description":"Make your function runnable from CLI","archived":false,"fork":false,"pushed_at":"2019-12-22T12:02:17.000Z","size":9,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-07T06:44:43.553Z","etag":null,"topics":["cli","expose-cli","function","nodejs"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lamualfa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-16T09:33:18.000Z","updated_at":"2020-10-23T23:39:27.000Z","dependencies_parsed_at":"2022-09-05T16:51:16.965Z","dependency_job_id":null,"html_url":"https://github.com/lamualfa/nodejs-expose-cli","commit_stats":null,"previous_names":["laodemalfatih/nodejs-expose-cli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lamualfa/nodejs-expose-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamualfa%2Fnodejs-expose-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamualfa%2Fnodejs-expose-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamualfa%2Fnodejs-expose-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamualfa%2Fnodejs-expose-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lamualfa","download_url":"https://codeload.github.com/lamualfa/nodejs-expose-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamualfa%2Fnodejs-expose-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32329463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","expose-cli","function","nodejs"],"created_at":"2024-11-08T14:14:48.771Z","updated_at":"2026-04-27T08:31:59.968Z","avatar_url":"https://github.com/lamualfa.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003ca href=\"https://imgbb.com/\"\u003e\u003cimg src=\"https://i.ibb.co/cctCBkx/coding.png\" alt=\"coding\" border=\"0\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;**expose-cli**\n\n## Simple Way To Run Your Local Function From CLI\n\n`node index.js localFunction arg1 arg2 arg3`\n\n## Installation\n\n```bash\n# NPM\nnpm i expose-cli\n\n# Yarn\nyarn add expose-cli\n```\n\n## Example Usage\n\n`index.js`\n\n```javascript\nconst exposeCli = require('./index');\n\nfunction printSync() {\n  console.log('Printed from `printSync`');\n}\n\nasync function printAsync() {\n  console.log('Printed from `printAsync`');\n}\n\nfunction printPromise() {\n  return new Promise(resolve =\u003e {\n    console.log('Printed from `printPromise`');\n    resolve();\n  });\n}\n\nconst printClosure = () =\u003e {\n  console.log('Printed from `printClosure`');\n};\n\nfunction printSyncWithArg(arg1) {\n  console.log(`Printed from \\`printSyncWithArg\\` with arg1: ${arg1}`);\n}\n\nasync function printAsyncWithArg(arg1) {\n  console.log(`Printed from \\`printAsyncWithArg\\` with arg1: ${arg1}`);\n}\n\nfunction printSyncWithRestArgs(...args) {\n  console.log(\n    `Printed from \\`printSyncWithRestArgs\\` with args: ${args.join(', ')}`\n  );\n}\n\nasync function printAsyncWithRestArgs(...args) {\n  console.log(\n    `Printed from \\`printAsyncWithRestArgs\\` with args: ${args.join(', ')}`\n  );\n}\n\nfunction returnSync() {\n  return 'Returned from `returnSync`';\n}\n\nasync function returnAsync() {\n  return 'Returned from `returnAsync`';\n}\n\nfunction returnPromise() {\n  return new Promise(resolve =\u003e resolve('Returned from `returnPromise`'));\n}\n\nexposeCli(\n  {\n    printSync,\n    printAsync,\n    printPromise,\n    printClosure,\n    printSyncWithArg,\n    printAsyncWithArg,\n    printSyncWithRestArgs,\n    printAsyncWithRestArgs,\n    returnSync,\n    returnAsync,\n    returnPromise\n  },\n  {\n    printReturn: true\n  }\n);\n```\n\n### Run local function\n\n**Execute**\n\n`node index.js printSyncWithArg world`\n\n**Output**\n\n`Printed from printSyncWithArg: world`\n\n\u003cbr /\u003e\n\n### Print all listed handler with command `help`\n\n**Execute command**\n\n`node index.js printSyncWithArg help`\n\n**Output**\n\n\u003ca href=\"https://imgbb.com/\"\u003e\u003cimg src=\"https://i.ibb.co/DKtHMRm/Screenshot-from-2019-12-22-17-10-58.png\" alt=\"Screenshot-from-2019-12-22-17-10-58\" border=\"0\"\u003e\u003c/a\u003e\n\n#### **IMPORTANT!**\n\nThe `help` command will display an `\u003cunreachable\u003e` message if you use:\n\n- Closure function. Ex: `() =\u003e {}`\n- Rest arguments. Ex: `function(...args)`\n- Function stored in a variable. Ex: `const handler= function() {}`\n- A method in a Class\n- Anonymous function\n\n## Calling Format\n\n### `exposeCli(handlers, [config])`\n\n#### `handlers`\n\nFormat (Object):\n\n`command` : `handler`\n\n- `command`: `string`\n- `handler`: `function` or `object`\n  - name: `string`\n  - args: `array`\n  - description: `string`\n  - handler: `function`\n\n#### `config`\n\n```javascript\n{\n  // Print returned value from function called\n  printReturn: false, // default\n\n  // Trigger process.exit() when finished\n  exitOnSuccess: true, // default\n\n  // Trigger process.exit(1) when error\n  exitOnError: true, // default\n\n  // cutom log handler\n  customConsoleLog: console.log, // default\n  customConsoleError: console.error, // default\n\n  // custom command `help` name\n  customHelpName: 'help',  // default\n\n  // custom additional command `help` options\n  customHelp: {\n    handler: defaultHelpHandler,\n    name: 'help',\n    args: '',\n    description: 'Show all the functions listed.'\n  }  // default\n}\n```\n\n## Support\n\n- Can be used using [webpack](https://github.com/webpack/webpack)\n- Supports calling `async` function or function that return `Promise` or closure\n- Supports function that `throw` an error\n\n## Change Log\n\n### v0.0.2\n\n- Fixed bugs\n- Added default handler for `help`\n- Support `object` format for `handlers` arguments\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamualfa%2Fnodejs-expose-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flamualfa%2Fnodejs-expose-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamualfa%2Fnodejs-expose-cli/lists"}