@kobayami/env-utils
v1.0.0
Published
Utilities for multi-platform code that runs in Web and NodeJS environments.
Downloads
4
Maintainers
Readme
@kobayami/env-utils
Installation
npm install --save @kobayami/env-utils
Version and License
Summary
Utilities for multi-platform code that runs in Web and NodeJS environments:
- Check for environment type (NodeJS or Web)
- Enable dynamic NodeJS module loading during runtime (i.e., not via static
import
statements) - WebPack compatibility
Usage Example
Dynamically loads a NodeJS module during runtime. Throws an exception if the code is not running in a NodeJS environment. This can also be safely embedded into code running in a Web environment like this:
if (envType === EnvType.NODE) {
const leModule = requireNodeModuleAtRuntime('leModule');
leModule.foo();
...
}
This is a practical example from @kobayami/threads
:
const WorkerClass = envType === EnvType.NODE?
requireNodeModuleAtRuntime('worker_threads').Worker: Worker
For multi platform code, this approach is sometimes necessary,
because NodeJS specific modules must only be loaded after we have confirmed
that we are not running in a Web environment.
A simple import
at the beginning of a file would therefore not work,
browsers would raise a 404 error.
Module loading via this function is also compatible with WebPack, which is
the actual reason why we need it as a wrapper for the NodeJS require
function.
When your code is being bundled and packaged by WebPack, dynamic module loading
via this approach does not confuse WebPack. No additional configuration is necessary.