Node - Module (ie NPM Module)

About

The module notion in Node.

A module in Node is the source script (not the bundled library/package).

The module loader of Node use the commonJs format. Therefore a commonJS Module will run in Node.

A package is a bundle of one or more module.

Each file is treated as a separate module. (One Module has one file)

Property

Scope

A module has its own scope, unless you decide to expose functionality using exports or module.exports

Variables local to the module will be private, because the module is wrapped in a function by Node.js (see module wrapper).

In Node.js this is different. The top-level scope is not the global scope

  • within the browser var something is defined a new global variable
  • inside a Node.js module, var something will be local to that module.

Built-In Core

Node.js has several modules compiled into the binary called the core module

FileName

See https://nodejs.org/api/globals.html#globals_filename

__filename is not actually a global but rather local to each module.

console.log(__filename);
// Prints: /Users/mjr/example.js

Directory

console.log(__dirname);
// Prints: /Users/mjr

Implementation

The module system is implemented in the require('module') module.

Is this a node environment

console.log("Is this a Node environment ?: "+(typeof exports === 'object' && typeof module !== 'undefined'));
console.log("Is this a Node environment ?: "+(typeof module === 'object' && module.exports));

Documentation / Reference

Task Runner