Can I know, in node.js, if my script is being run directly or being loaded by another script?
You can use module.parent
to determine if the current script is loaded by another script.
e.g.
a.js
:
if (!module.parent) {
console.log("I'm parent");
} else {
console.log("I'm child");
}
b.js
:
require('./a')
run node a.js
will output:
I'm parent
run node b.js
will output:
I'm child
The accepted answer is fine. I'm adding this one from the official documentation for completeness:
Accessing the main module
When a file is run directly from Node, require.main
is set to its module
. That means that you can determine whether a file has been run directly by testing
require.main === module
For a file "foo.js"
, this will be true
if run via node foo.js
, but false
if run by require('./foo')
.
Because module
provides a filename
property (normally equivalent to __filename
), the entry point of the current application can be obtained by checking require.main.filename
.
Both options !module.parent
and require.main === module
work.
If you are interested in more details please read my detailed blog post about this topic.