Cross-platform utilities for accessing global variables in JavaScript environments
npx @tessl/cli install tessl/npm-global@4.4.0Global is a JavaScript utility library that provides cross-platform access to global variables in different JavaScript environments. It offers consistent interfaces for accessing window, document, console, and process objects across browser, Node.js, Web Workers, and other JavaScript runtime environments.
npm install global// Main module - loads window.js (package.json main entry)
const global = require("global"); // Same as require("global/window")
// Explicit module paths for clarity
const window = require("global/window"); // Explicit window module
const document = require("global/document"); // Document with fallbacks
const console = require("global/console"); // Global console object
const process = require("global/process"); // Node.js process object// Access global window/global object across environments
const global = require("global");
console.log(typeof global); // "object"
// Access document object (with fallback)
const document = require("global/document");
document.createElement("div"); // Works in browsers and Node.js
// Access console object
const console = require("global/console");
console.log("Hello, world!");
// Access process object (Node.js compatibility)
const process = require("global/process");
console.log(process.version);Global provides four separate modules, each handling a specific global object:
All modules provide consistent APIs across different JavaScript environments through intelligent environment detection and fallbacks.
Cross-platform access to the global window/global object with environment-specific fallbacks.
/**
* Main module export - returns the appropriate global object for the current environment.
* Equivalent to require("global/window"). Uses environment detection to determine
* which global object to return: window (browser), global (Node.js), self (Web Workers).
*/
const global = require("global");
// Returns: Window | typeof globalThis | WorkerGlobalScope | {}
// Alternative explicit import
const window = require("global/window");
// Returns: Window | typeof globalThis | WorkerGlobalScope | {}Environment Detection Logic:
window object (when typeof window !== "undefined")global object (when typeof global !== "undefined")self object (when typeof self !== "undefined"){} (when none of the above are available)Usage Examples:
// Main module import (loads window.js via package.json main field)
const global = require("global");
// Environment detection example
if (typeof global.document !== 'undefined') {
console.log("Running in browser");
} else if (typeof global.process !== 'undefined') {
console.log("Running in Node.js");
}
// Set and access global variables safely across environments
global.myGlobalVar = "Hello World";
console.log(global.myGlobalVar);
// Alternative: use explicit window module for clarity
const windowObj = require("global/window");
windowObj.myGlobalVar = "Hello from explicit import";Cross-platform document object with intelligent fallback for non-browser environments.
/**
* Returns native document object in browsers or min-document fallback in Node.js.
* Uses global caching (__GLOBAL_DOCUMENT_CACHE@4) to ensure singleton behavior
* for min-document instances across requires.
*/
const document = require("global/document");
// Returns: Document | MinDocumentEnvironment Behavior:
document objectmin-document instance (cached globally)min-document instanceUsage Examples:
const document = require("global/document");
// Create DOM elements (works everywhere)
const div = document.createElement("div");
div.innerHTML = "Hello World";
// Access document properties
console.log(document.documentElement);Direct access to the global console object.
/**
* Returns the global console object
*/
const console = require("global/console");
// Returns: ConsoleUsage Examples:
const console = require("global/console");
console.log("Standard logging");
console.error("Error logging");
console.warn("Warning logging");Access to Node.js process object across environments.
/**
* Returns the Node.js process object via the process package
*/
const process = require("global/process");
// Returns: NodeJS.ProcessUsage Examples:
const process = require("global/process");
// Access process information
console.log(process.version);
console.log(process.platform);
// Handle process events
process.on('exit', (code) => {
console.log(`Process exiting with code: ${code}`);
});// Window module returns one of these types based on environment
type WindowObject = Window | typeof globalThis | WorkerGlobalScope | {};
// Document module returns one of these types
type DocumentObject = Document | MinDocumentImplementation;
// Console module returns the standard console interface
interface Console {
log(...args: any[]): void;
error(...args: any[]): void;
warn(...args: any[]): void;
info(...args: any[]): void;
// ... other console methods
}
// Process module returns Node.js process object
interface NodeJSProcess {
version: string;
platform: string;
env: { [key: string]: string | undefined };
exit(code?: number): never;
on(event: string, listener: Function): this;
// ... other process properties and methods
}| Module | Browser | Node.js | Web Workers | Other |
|---|---|---|---|---|
| global/window | ✅ window | ✅ global | ✅ self | ✅ {} |
| global/document | ✅ document | ✅ min-document | ✅ min-document | ✅ min-document |
| global/console | ✅ console | ✅ console | ✅ console | ✅ console |
| global/process | ⚠️ polyfill | ✅ process | ⚠️ polyfill | ⚠️ polyfill |