if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'What is your name?',
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constname:string|uniquesymbol
name)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
exit(0);
}
// Use the name value
}catch(
var error:unknown
error){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stderr with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
constcode=5;
console.error('error #%d', code);
// Prints: error #5, to stderr
console.error('error', code);
// Prints: error 5, to stderr
If formatting elements (e.g. %d) are not found in the first string then
util.inspect() is called on each argument and the
resulting string values are concatenated. See util.format()
for more information.
@since ― v0.1.100
error('An error occurred:',
var error:unknown
error);
var process:NodeJS.Process
process.
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
@param ― string A string to convert into a number.
@param ― radix A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.
parseInt(
value: string
value);
if(
functionisNaN(number:number):boolean
Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Enter your age:',
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
Validators can be asynchronous (v1.8.0). Return a Promise to check against a remote source; the prompt blocks input and shows a validating state until it settles:
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Project name:',
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Enter your name (letters only)',
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
Async schemas work the same way (v1.8.0): a schema whose validation returns a Promise, such as an Arktype or Zod async refinement, is awaited before the prompt resolves.
functionisCancel(value:unknown): value isuniquesymbol
isCancel}from'@clack/prompts';
// Good
const
constuserAction:uniquesymbol|"create"|"update"
userAction=await
select<"create"|"update">(opts: SelectOptions<"create"|"update">): Promise<unique symbol |"create"|"update">
select({
SelectOptions<Value>.message: string
message:'What would you like to do?',
SelectOptions<"create"|"update">.options: ({
value:"create";
label?: string;
hint?: string;
disabled?: boolean;
}|{
value:"update";
label?: string;
hint?: string;
disabled?: boolean;
})[]
options:[
{
value:"create"
Internal data for this option.
value:'create',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Create new project'},
{
value:"update"
Internal data for this option.
value:'update',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Update existing project'},
],
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constuserAction:uniquesymbol|"create"|"update"
userAction)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
exit(0);
}
// Avoid
const
constquickAction:uniquesymbol|"c"|"u"
quickAction=await
select<"c"|"u">(opts: SelectOptions<"c"|"u">): Promise<unique symbol |"c"|"u">
functionisCancel(value:unknown): value isuniquesymbol
isCancel}from'@clack/prompts';
// First, get the project type
const
constprojectType:uniquesymbol|"web"|"cli"
projectType=await
select<"web"|"cli">(opts: SelectOptions<"web"|"cli">): Promise<unique symbol |"web"|"cli">
select({
SelectOptions<Value>.message: string
message:'Select project type:',
SelectOptions<"web"|"cli">.options: ({
value:"web";
label?: string;
hint?: string;
disabled?: boolean;
}|{
value:"cli";
label?: string;
hint?: string;
disabled?: boolean;
})[]
options:[
{
value:"web"
Internal data for this option.
value:'web',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Web Application'},
{
value:"cli"
Internal data for this option.
value:'cli',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'CLI Tool'},
],
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constprojectType:uniquesymbol|"web"|"cli"
projectType)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
exit(0);
}
// Then, get specific details based on the type
if(
constprojectType:"web"|"cli"
projectType==='web'){
const
constframework:uniquesymbol|"react"|"vue"
framework=await
select<"react"|"vue">(opts: SelectOptions<"react"|"vue">): Promise<unique symbol |"react"|"vue">
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Project name:',
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constname:string|uniquesymbol
name)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
exit(0);
}
const
consttype:uniquesymbol|"web"|"cli"
type=await
select<"web"|"cli">(opts: SelectOptions<"web"|"cli">): Promise<unique symbol |"web"|"cli">
select({
SelectOptions<Value>.message: string
message:'Project type:',
SelectOptions<"web"|"cli">.options: ({
value:"web";
label?: string;
hint?: string;
disabled?: boolean;
}|{
value:"cli";
label?: string;
hint?: string;
disabled?: boolean;
})[]
options:[
{
value:"web"
Internal data for this option.
value:'web',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Web Application'},
{
value:"cli"
Internal data for this option.
value:'cli',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'CLI Tool'},
],
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
consttype:uniquesymbol|"web"|"cli"
type)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
exit(0);
}
const
constconfig:ProjectConfig
config:
interfaceProjectConfig
ProjectConfig={
ProjectConfig.name: string
name,
ProjectConfig.type: "web"|"cli"
type,
};
if(
consttype:"web"|"cli"
type==='web'){
const
constframework:uniquesymbol|"react"|"vue"
framework=await
select<"react"|"vue">(opts: SelectOptions<"react"|"vue">): Promise<unique symbol |"react"|"vue">
select({
SelectOptions<Value>.message: string
message:'Choose a framework:',
SelectOptions<"react"|"vue">.options: ({
value:"react";
label?: string;
hint?: string;
disabled?: boolean;
}|{
value:"vue";
label?: string;
hint?: string;
disabled?: boolean;
})[]
options:[
{
value:"react"
Internal data for this option.
value:'react',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'React'},
{
value:"vue"
Internal data for this option.
value:'vue',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Vue'},
],
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constframework:uniquesymbol|"react"|"vue"
framework)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
functionisCancel(value:unknown): value isuniquesymbol
isCancel}from'@clack/prompts';
// Mock function for demonstration
asyncfunction
functionloadWebPrompts():Promise<{
setupWebProject:()=>Promise<boolean>;
}>
loadWebPrompts(){
// This simulates loading web-specific prompts
return{
setupWebProject:()=>Promise<boolean>
setupWebProject:async()=>{
// Implementation would go here
returntrue;
}
};
}
asyncfunction
functionsetupProject():Promise<void>
setupProject(){
const
constprojectType:uniquesymbol|"web"|"cli"
projectType=await
select<"web"|"cli">(opts: SelectOptions<"web"|"cli">): Promise<unique symbol |"web"|"cli">
select({
SelectOptions<Value>.message: string
message:'Project type:',
SelectOptions<"web"|"cli">.options: ({
value:"web";
label?: string;
hint?: string;
disabled?: boolean;
}|{
value:"cli";
label?: string;
hint?: string;
disabled?: boolean;
})[]
options:[
{
value:"web"
Internal data for this option.
value:'web',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Web Application'},
{
value:"cli"
Internal data for this option.
value:'cli',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'CLI Tool'},
],
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constprojectType:uniquesymbol|"web"|"cli"
projectType)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
functionisCancel(value:unknown): value isuniquesymbol
isCancel}from'@clack/prompts';
// Good
const
constoperationMode:uniquesymbol|"dev"|"prod"
operationMode=await
select<"dev"|"prod">(opts: SelectOptions<"dev"|"prod">): Promise<unique symbol |"dev"|"prod">
select({
SelectOptions<Value>.message: string
message:'Select operation mode:',
SelectOptions<"dev"|"prod">.options: ({
value:"dev";
label?: string;
hint?: string;
disabled?: boolean;
}|{
value:"prod";
label?: string;
hint?: string;
disabled?: boolean;
})[]
options:[
{
value:"dev"
Internal data for this option.
value:'dev',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Development Mode'},
{
value:"prod"
Internal data for this option.
value:'prod',
label?: string
The optional, user-facing text for this option.
By default, the value is converted to a string.
label:'Production Mode'},
],
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constoperationMode:uniquesymbol|"dev"|"prod"
operationMode)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
exit(0);
}
// Avoid
const
constmode:uniquesymbol|"d"|"p"
mode=await
select<"d"|"p">(opts: SelectOptions<"d"|"p">): Promise<unique symbol |"d"|"p">
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Enter port number:',
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
@param ― string A string to convert into a number.
@param ― radix A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.
parseInt(
value: string
value);
if(
functionisNaN(number:number):boolean
Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).
@param ― number A numeric value.
isNaN(
constnum:number
num))return'Please enter a valid number';
if(
constnum:number
num<1||
constnum:number
num>65535)return'Port must be between 1 and 65535';
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Database host:',
TextOptions.defaultValue?: string
A fallback value returned when the user provides nothing (empty input).
defaultValue:'localhost',
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
consthost:string|uniquesymbol
host)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Database port:',
TextOptions.defaultValue?: string
A fallback value returned when the user provides nothing (empty input).
defaultValue:
constdbType:"postgres"|"mysql"
dbType==='postgres'?'5432':'3306',
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
@param ― string A string to convert into a number.
@param ― radix A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.
parseInt(
value: string
value);
if(
functionisNaN(number:number):boolean
Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).
@param ― number A numeric value.
isNaN(
constnum:number
num))return'Please enter a valid number';
if(
constnum:number
num<1||
constnum:number
num>65535)return'Port must be between 1 and 65535';
return
var undefined
undefined;
},
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constport:string|uniquesymbol
port)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
@param ― string A string to convert into a number.
@param ― radix A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.
if(!value || value.length <2)return'Name must be at least 2 characters';
returnundefined;
},
});
text({
TextOptions.message: string
The prompt message or question shown to the user above the input.
message:'Enter port number:',
TextOptions.defaultValue?: string
A fallback value returned when the user provides nothing (empty input).
defaultValue:
defaultPort: string
defaultPort,
TextOptions.validate?: Validate<string>
A function or a Standard Schema
that validates user input. If a custom function is given, you should return a string or Error
to show as a validation error, or undefined to accept the result.
@param ― string A string to convert into a number.
@param ― radix A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.
parseInt(
value: string
value);
if(
functionisNaN(number:number):boolean
Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).
@param ― number A numeric value.
isNaN(
constnum:number
num))return'Please enter a valid number';
if(
constnum:number
num<1||
constnum:number
num>65535)return'Port must be between 1 and 65535';
return
var undefined
undefined;
},
});
if(
functionisCancel(value:unknown): value isuniquesymbol
isCancel(
constport:string|uniquesymbol
port)){
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s','world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s','world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
NodeJS.Process.exit(code?: number | string |null): never
The process.exit() method instructs Node.js to terminate the process
synchronously with an exit status of code. If code is omitted, exit uses
either the 'success' code 0 or the value of process.exitCode if it has been
set. Node.js will not terminate until all the 'exit' event listeners are
called.
To exit with a 'failure' code:
import{ exit }from'node:process';
exit(1);
The shell that executed Node.js should see the exit code as 1.
Calling process.exit() will force the process to exit as quickly as possible
even if there are still asynchronous operations pending that have not yet
completed fully, including I/O operations to process.stdout and process.stderr.
In most situations, it is not actually necessary to call process.exit() explicitly. The Node.js process will exit on its own if there is no additionalwork pending in the event loop. The process.exitCode property can be set to
tell the process which exit code to use when the process exits gracefully.
For instance, the following example illustrates a misuse of the process.exit() method that could lead to data printed to stdout being
truncated and lost:
import{ exit }from'node:process';
// This is an example of what *not* to do:
if(someConditionNotMet()){
printUsageToStdout();
exit(1);
}
The reason this is problematic is because writes to process.stdout in Node.js
are sometimes asynchronous and may occur over multiple ticks of the Node.js
event loop. Calling process.exit(), however, forces the process to exit before those additional writes to stdout can be performed.
Rather than calling process.exit() directly, the code should set the process.exitCode and allow the process to exit naturally by avoiding
scheduling any additional work for the event loop:
import process from'node:process';
// How to properly set the exit code while letting
// the process exit gracefully.
if(someConditionNotMet()){
printUsageToStdout();
process.exitCode =1;
}
If it is necessary to terminate the Node.js process due to an error condition,
throwing an uncaught error and allowing the process to terminate accordingly
is safer than calling process.exit().
In Worker threads, this function stops the current thread rather
than the current process.
@since ― v0.1.13
@param ― code The exit code. For string type, only integer strings (e.g.,'1') are allowed.
@param ― string A string to convert into a number.
@param ― radix A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.