Command line applications (CLI) are often the core tools for automating tasks, such as deploying production applications, running tests, building reports, migrating data, DevOps, and the list goes on and on. If you find yourself doing the same things over and over again, chances are you can automate those steps with a script and save yourself a lot of time!
Using Launchpad: Open Launchpad. It’s the silver icon in the Dock that looks like a rocket. Make Terminal windows stand out with profiles. When you’re logged in to several servers, unique background colors and window titles specified in profiles help you easily spot the right Terminal window. Use profiles built into Terminal, or create your own custom profiles. How to create profiles for Terminal windows.
Node.js is a great solution for writing CLI apps. Node.js itself has built-in libraries for reading and writing files, launching other applications, and basic network communication. https://treeyoo698.weebly.com/how-to-permanently-delete-apps-on-a-mac.html. Beyond that, there are thousands of packages available on
npm for just about any kind of task imaginable.
In this tutorial, you will learn how to create a Command Line Application with Node.js that can be used on Windows, macOS, or Linux. You will also learn how to style the output of a Node.js CLI application, accept arguments (parameters), and how to authenticate an API from the command line using OAuth 2.0 and PKCE.
Build Your First Node.js Command Line Application
First, let’s make sure you have the tools required. To complete this tutorial, you will need the following:
Next, open your computer’s command prompt (Windows) or terminal (macOS/Linux). Change the current directory to the folder where you save your documents or projects. Enter the following commands to create a new project folder and initialize the project.
Next, open the
hello-cli folder in your favorite text editor. create a folder named bin and add a new file to the bin folder named index.js . Open the index.js file in your text editor and copy the following code.
The first line that begins with
#! is usually called a “shebang.” This is normally only used on Linux or UNIX operating systems to inform the system what type of script is included in the rest of the text file. However, this first line is also required for Node.js scripts to be installed and run properly on macOS and Windows.
Next, open the
package.json file in the root of the project in your text editor. Change the main value to bin/index.js . Add a new key for bin with the following text.
Note: Don’t forget to add a comma after the previous value. All key/value pairs are separated by commas. The most common mistake when editing a JSON file is leaving out a comma.
Your entire
package.json file should look similar to the following.
At this point, you can run the script just like any other Node.js application. Try entering the following from the command line.
However, the goal of writing a script like this is to be able to run it from anywhere. You can do that with the
npm install command.
This installs your script “globally.” Any commands listed in the
bin section of the package.json file will be made available as command line applications. You can now run your script by typing hello at the command line!
To uninstall your script, run the following command.
Tip: You can list all globally installed Node.js modules using
npm ls -g --depth=0 .
Make Text Stand Out with Color and Borders
Writing plain text directly to the console will get the job done, but sometimes it is nice (or even necessary) to have content stand out. For example, you may want to display error messages using the color red.
To modify the color of text and background color, you can use
chalk . To add borders around your text to make it more visible, you can use a module named boxen . Add both of these to your project.
Next, replace the contents of
bin/index.js with the following code.
Next, install the updated script and run it.
The message in your console should look similar to this image.
Add Support for Command Line Arguments
Most CLI applications accept one or more command line arguments, such as optional/required parameters, commands, flags/switches, or other configuration values. Although you can parse command line parameters by inspecting the Node.js
process.argv value, there are modules available that will save you a lot of time and effort. The yargs module is one such module for Node.js designed to support the most common CLI scenarios.
First, install the
yargs module as a dependency for your application.
Next, update the
bin/index.js file with the following code.
The previous code imports the
yargs module and configures it to require one argument for name . Next, install the updated script globally. https://treeyoo698.weebly.com/blog/macos-allow-apps-below-to-control-computer-unchecked-box.
The
name parameter is required (demandOption: true ), so if you try to run the hello script the same as before, you should see something like the following: Chromecast app store mac.
The
yargs module automatically builds a great response for displaying help! Your CLI is not only ready to accept -n and --name arguments but also --help and --version . Try running your CLI application with any of the arguments.
Note: The value displayed for
--version comes from the version number in the package.json file.
Call Your Node.js API from the Command Line
A common scenario in automating tasks is to call an API endpoint to get data or to send data to an API endpoint. In this part of the tutorial, you are going to fetch a random joke from a joke API and display it in the console.
One of the most popular libraries for retrieving and sending data to an API in Node.js is
axios . Start by adding axios as a dependency.
Next, replace the contents of
bin/index.js with the following code.
In addition to responding with a greeting, the CLI application will now retrieve a random joke using
axios and display it immediately after the greeting.
Add a Search Argument to Your Node.js Command Line Application
You can take the CLI application one step further by supporting a search argument. Replace the contents of
bin/index.js with the following code.
In the previous code, you added support for a new
--search argument. Depending on retrieving a random joke or searching for specific jokes, the code uses a different URL and must handle the results differently.
Try it out!
Add Support for Secure Authorization with PKCE
An API that requires basic authentication is fairly straight-forward. But, what if an API uses OAuth for authentication? Yes, it is possible to support APIs that use the latest OAuth open standards from the command line, too!
Proof Key for Code Exchange (PKCE) is a better solution for mobile and native applications to exchange private keys with an authorization server. For this step in the tutorial, you are going to use the Okta API. However, it should be possible to adapt the code to work with any OAuth 2.0 service you’re using. Okta is a free-to-use API service for user accounts and simplifies handling user authentication, authorization, social login, password reset, and so forth. Okta utilizes open standards like OAuth 2.0 to make integration seamless.
Create an Okta Application
To get started, go to developer.okta.com and sign up for a free developer account.
Once you are signed in to your account, click on Applications and then click Add Application.
Choose Native as the type of application, and then click Next.
How To Make A Command Line App For Macbook
Next, name your application something like
My CLI App . Change the Login redirect URIs value to http://localhost:8080/callback , and then click Done.
How to install unverified apps on mac. Create a file named
.env in the root of your CLI project. Open this file and add the following information.
Now, if you’re not already at the General Settings page, click on Applications and then click on the name of the application you just created.
Click on the General tab, scroll down to the Client Credentials section, and copy your application’s Client ID. Replace
{yourClientID} in the .env file with your application’s Client ID value.
Next, click on the Dashboard link. At the top of the dashboard on the right side of the page you should find your Okta Org URL. Copy this value and put this in your
.env file.
How To Make A Command Line App For Mac Windows 10Update the Node.js Command Line ApplicationHow To Make A Command Line App For Mac Os
To support the PKCE authentication flow, your CLI application needs a few more libraries. In this tutorial, you will use
hapi to create a web server to handle the authentication callback. dotenv is used to read configuration settings from the .env file. You will use open to launch the default browser for login. And, uuid is used to help generate a unique private key to exchange with the authentication server.
Now, create a new folder in the root of the project named
src . In this folder, create a new file named authClient.js . Add the following code to the src/authClient.js file.
There’s a lot going on in this module, so here’s a breakdown of how to use the module and what it is doing.
The
authClient.js module exports one function that accepts an object with the properties oktaOrgUrl , clientId , scopes , and serverPort . Calling this function will initialize the module with the configuration it needs. After initializing, the function returns an object with exactly one function, executeAuthFlow .
Calling
executeAuthFlow goes through the following steps:
Note: Retrieving account information is not part of the PKCE authentication flow. This step is only included as an example of how to use the token once it is acquired!
Next is to update the CLI to use the
authClient.js module. Create a new file under bin named pkceLogin.js . Add the following code to the pkceLogin.js file.
Update the
package.json file to include another command in the bin section.
Update the CLI applications that are installed globally.
Now, you are ready to test your new CLI authentication! After logging in, you should see in your console,
You have successfully authenticated your CLI application!
Learn More About Command Line Applications and PKCE in Node.js
In this tutorial, you have learned the basics for creating command line applications using Node.js. You also have a valuable authentication module you can easily reuse with any OAuth 2.0 PKCE flow. You can find all the source code for this tutorial on GitHub.
If you liked learning about Node.js CLI applications and authentication, chances are you’ll like some of our other posts. Please follow @oktadev on Twitter to be notified when we publish new blog posts. You can also subscribe to our YouTube channel for our screencasts!
Please enable JavaScript to view the comments powered by Disqus.
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |