Open In App

Sending Command Line Arguments to NPM Script

Last Updated : 28 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

In the sector of NodeJS development, NPM (Node Package Manager) scripts are a effective tool for automating numerous tasks like strolling exams, building the mission, or starting a improvement server. However, there are times while you need to bypass arguments to these scripts to customize their behavior. This article will discover how you can ship command line arguments to NPM scripts.

We will discuss the following methods to send command line arguments to NPM Script:

Using process.argv()

1. Sending a single argument to an NPM script

Explanation: In this code we’re executing an NPM script named “hello” that’s described inside the package.json file. By running NPM run hello and passing the argument — –name=John through the command line, the script script.js accesses this argument and outputs a greeting message. It prints “Hello, John!” which indicate that argument which was send has successfull.

Note: Install the minimist package for using this approach

$ npm i minimist 

CODE

// package.json
{
"scripts": {
"hello": "node script.js"
}
}

Terminal

$ npm run hello -- --name=John
JavaScript
// script.js
const args = require('minimist')(process.argv.slice(2));

const name = args['name'];

console.log(`Hello ${name}!`);

Output:

Hello, John!

2. Sending multiple arguments to an npm script:

Explanation: We’re running an npm script referred to as “greet”, passing multiple arguments through the command line the usage of –. The script greet.Js processes those arguments and outputs a greeting message accordingly. In this situation, it prints “Hello, John!” because we provided the name “John” and the greeting “Hello” as arguments.

Note: Install the minimist package for using this approach

$ npm i minimist 

CODE

// package.json
{
"scripts": {
"greet": "node greet.js"
}
}

Terminal

$ npm run greet -- --name=John --greeting=Hello
JavaScript
// greet.js
const args = require('minimist')(process.argv.slice(2));

const name = args['name'];
const greeting = args['greeting'];

console.log(`${greeting}, ${name}!`);

Output:

Hello, John!

Using npm_config_ Method

1. Sending a single argument to an npm script:

Explanation: In this code we are running an npm script named “hello” defined in package.json. using NPM run hello, followed by –name=”Jane” in the terminal, we have passed a single argument to the script script.js. The script then uses this argument to output a greeting message “Hello Jane !”.

CODE

// package.json
{
"scripts": {
"hello": "node script.js"
}
}

Terminal

$ npm run hello --name="Jane" 
JavaScript
const nname = process.env.npm_config_name ? process.env.npm_config_name : "John"
console.log("Hello", nname, "!")

Output
Hello John !

2. Sending multiple arguments to an npm script:

Explanation: in this code we are excuting an npm script named “greet” specified in package.json. By running npm run hello, followed by –firstName=”Jason” –lastName=”Roy” in the command line, we are passing multiple arguments to the script greet.js. The script accesses these arguments and generates a greeting message accordingly. In this case, it’s output is “Hello Jason Roy”

CODE

// package.json
{
"scripts": {
"hello": "node script.js"
}
}

Terminal:

$ npm run hello --firstName="Jason" --lastName="Roy"
JavaScript
const firstName = process.env.npm_config_firstName ? 
                process.env.npm_config_firstName : "John"
const lastName = process.env.npm_config_lastName ? 
                process.env.npm_config_lastName : "Doe"
console.log("Hello", firstName, lastName)

Output
Hello John Doe


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads