Forked from mritzco/How to create Node cli executable from npm.md
Created
May 27, 2024 21:33
-
-
Save yurireeis/6263afec1423fd1fa36e268bd028a7cc to your computer and use it in GitHub Desktop.
Revisions
-
mritzco revised this gist
Aug 8, 2019 . 1 changed file with 9 additions and 9 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -13,13 +13,13 @@ Create a standard module **ignore command line parsing** ### Paths If your module is split in multiple files make sure to use full paths to include them. For example: ```js /* Files at lib: - a.js - b.js In a.js: */ const b = require('b'); // Won't work const b = require('./b'); // Works ``` @@ -37,7 +37,7 @@ Create another entry point, a node file. Add in here: ## 1.2 Modify your package.json We'll add a line so npm knows it has to copy the cli.js into .bin ```json "bin": { "name_of_your_app": "./cli.js" } @@ -47,7 +47,7 @@ We'll add a line so npm knows it has to copy the cli.js into .bin ## 1.3 Publish Check a guide on publishing to npm, when you're ready: ```sh npm publish ``` Now your package is readily available to be used anywhere. @@ -58,19 +58,19 @@ Say you build a parser, a file processor or any other cool thing. Now you want a ## 2.1 Install as any other NPM module ```sh npm install your-package --save-dev ``` ## 2.2 Using it as a script Open your package.json ```json "scripts": { "name_to_call": "your_module_name param1 param2 param3" }, ``` ## 2.3 Run it ```sh npm run name_to_call ``` -
mritzco revised this gist
Aug 8, 2019 . 1 changed file with 14 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -10,6 +10,20 @@ The place where you use it: Application Create a standard module **ignore command line parsing** *Your entry point index.html should be callable using require()* ### Paths If your module is split in multiple files make sure to use full paths to include them. For example: ``` Files at lib: - a.js - b.js in a: const b = require('b'); // Won't work const b = require('./b'); // Works ``` ## 1.1 Create a command line entry point Create another entry point, a node file. Add in here: -
mritzco renamed this gist
Aug 8, 2019 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
mritzco created this gist
Aug 8, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,66 @@ # Creating an executable NPM package and using it This short guide explains how to create an NPM package that can be called as a script from another project. For clarity: The package to execute will be called: Module The place where you use it: Application # 1. Build your module Create a standard module **ignore command line parsing** *Your entry point index.html should be callable using require()* ## 1.1 Create a command line entry point Create another entry point, a node file. Add in here: *for example: cli.js* - First line must be: #!/usr/bin/env node - Command line parsing - Help - Validation - Require your index.js (or main entry point) and run it ## 1.2 Modify your package.json We'll add a line so npm knows it has to copy the cli.js into .bin ``` "bin": { "name_of_your_app": "./cli.js" } //or "bin": "./cli.js" ``` ## 1.3 Publish Check a guide on publishing to npm, when you're ready: ``` npm publish ``` Now your package is readily available to be used anywhere. # 2. Use your module as script in another application Say you build a parser, a file processor or any other cool thing. Now you want a new node application to use it when building. ## 2.1 Install as any other NPM module ``` npm install your-package --save-dev ``` ## 2.2 Using it as a script Open your package.json ``` "scripts": { "name_to_call": "your_module_name param1 param2 param3" }, ``` ## 2.3 Run it ``` npm run name_to_call ``` And that's it! Enjoy ## References - https://docs.npmjs.com/files/package.json This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,27 @@ #!/usr/bin/env node //module/cli.js const fs = require("fs"), path = require("path") /** Parse the command line */ var args = process.argv.slice(2); // Validate input if (args.length !== 2) { console.log("Warning: Requires 2 arguments"); console.log("node index.js [path/source.html] [targetfile]"); process.exit(); } const src = args[0]; const target = args[1]; const dirsrc = path.dirname(src); if (!fs.existsSync(src)) { console.log("Error: Source file doesn't exist. Given: ", src); process.exit(); } require('./index.js')({src, target, dirsrc}); This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,2 @@ //module/index.js module.exports = require('main');