![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
global-const
Advanced tools
A lightweight utility to create global singletons (on browser and node)
[!WARNING] Attaching items on globals should be a last resort, so only do this if you must... But sometimes you've got to do what you've got to do, and for that, this package exists.
To install global-const
, use npm or yarn as follows:
npm install global-const
# or
yarn add global-const
import { getGlobalisedValue, clearGlobalNamespace } from "global-const";
const targetFunction = (someParams) => {
// some function that maintains state, or works
// within a closure.
};
const singletonInstance = getGlobalisedValue(
"namespace",
"targetFunction",
targetFunction
);
// ...
singletonInstance("...");
// ... somewhere else in code
// this will get the same function instance as above
const anotherInstance = getGlobalisedValue(
"namespace",
"targetFunction",
targetFunction
);
expect(singletonInstance).toBe(anotherInstance); // true
While it's generally not advised to add code to the global-state (window
/globalThis
), you might need to. This library comes handle to manage this.
And example is when you have many packages, each using a "metrics" module. When a customer individually instantiates each module, each module will probably instantiate it's own metrics tracking module. However if you wish for all the features to use the same metrics tracking function, instead of being siloed, this feature will help ensure that each time the metrics functions are instantiated, they'll check if there's one that's been globalised, and if so return that one instead.
[!CAUTION] This assumes that each instantiation is the same as the other, so be careful to ensure that your customers aren't likely to mix different versions of the function.
getGlobalisedValue(namespace, key, value)
namespace
: A unique string identifier to prevent collisions when considering other packages using this module.key
: The name of the value to retrieve or set.value
: An object/function to be globalised if it doesn't already exist.Returns the globalised value or stores the value passed in if not initialised, and returns it.
const logger = getGlobalisedValue("myApp", "logger", new Logger());
clearGlobalNamespace(namespace)
namespace
: A unique string identifier to prevent collisions when considering other packages using this module.This function is used for an application to clear out it's namespace.
FAQs
A lightweight utility to create global singletons (on browser and node)
The npm package global-const receives a total of 2,096 weekly downloads. As such, global-const popularity was classified as popular.
We found that global-const demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.