If you are familiar with Python, you have probably seen the good old if __name__ == '__main__'
. This line allows your program to know the context in which it is running and make slight adjustments based on it.
The most common use case is the following:
- If file is being used by the interpreter, just run a specific function.
- If file is being imported by another file, export function without running it.
There is quite a few reasons one would want to have this functionality. Testing CLI scripts and DRY ad-hoc runs of specific portions of a larger application are the ones that I encounter the most.
Bellow is a primer for how this can easily be done in JavaScript.
./my-file.js
async function run() {
console.log('Simulating async stuff');
}
if (require.main === module) {
// File is being used as a script. Run it.
run();
} else {
// File is being used as a module. Export it.
module.exports = { run };
}
./app.js
const { run } = require('./my-file');
run();