-
Create project
npm init
-
Create exectuable script
mkdir bin
-
Create file
cli.js
module.exports = { run : (args) => { console.log("running command with ", args); } };
-
Create file
bin/npm-cli-app.js
#!/usr/bin/env node require('../cli').run(process.argv);
-
Run and check the script file
node bin/npm-cli-app.js hello # running command with [ # '/Users/me/.nvm/versions/node/v14.5.0/bin/node', # '/Users/me/projects/npm-cli-app/bin/npm-cli-app.js', # 'hello' # ]
-
Update pakcage.json to include the bin file :
"bin": { "npm-cli-app": "bin/npm-cli-app.js" },
-
Install project locally for testing
npm link # /Users/me/.nvm/versions/node/v14.5.0/bin/npm-cli-app -> /Users/me/.nvm/versions/node/v14.5.0/lib/node_modules/npm-cli-app/bin/npm-cli-app.js # /Users/me/.nvm/versions/node/v14.5.0/lib/node_modules/npm-cli-app -> /Users/me/projects/npm-cli-app
-
Now run and test your command :
npm-cli-app hello # running command with [ # '/Users/dawn/.nvm/versions/node/v14.5.0/bin/node', # '/Users/dawn/.nvm/versions/node/v14.5.0/bin/npm-cli-app', # 'hello' # ]
-
Create file
src/app.js
module.exports = { run : (parameters) => { console.log("running app with : ", parameters) } };
-
Update
cli.js
to run app and pass only user provided dataconst app = require('./src/app'); module.exports = { run : (args) => { app.run(args.slice(2)); } };
-
Now run out comamnd again
npm-cli-app hello # running app with : [ 'hello' ]
-
publish to npm
npm login # Enter you username/password npm publish
-
Now on any other machine check the pubslihe package by running
npx npm-cli-app hello
-
If you do not have another machin to test, use docker to test instead :
docker run node:14 npx npm-cli-app hello
nishants/npm-cli-app
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
Creating an installable cli app with npm
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published