Snippets are tiny notes I've collected for easy reference.
Check require.main
to test if a Node.js file is run directly
In Node, when a file is run directly from the command line, require.main
is set to its module
. Hence require.main === module
tells you whether or not your script was invoked directly or required by another file.
A JavaScript "main" idiom:
//#!/usr/bin/env node
// file: example.js
function main() {
// ...
}
if(require.main === module) {
main();
}
The main
method will run if example.js
is invoked via node example.js
or ./example.js
but not when required within another script (via require('./example')
, for example).
A CoffeeScript "main" idiom (using classes, although it doesn't have to):
#!/usr/bin/env coffee
# file: example.coffee
class Example
main:()->
# ...
if require.main is module
(new Example()).main()
The main
method will run if example.coffee
is invoked via coffee example.coffee
or ./example.coffee
but not when required within another script (via require('./example')
, for example).
Also see the nodejs.org docs.
Published 3 Mar 2013
Snippets are tiny notes I've collected for easy reference.