@pagopa/react-native-nodelibs
v0.1.0
Published
Node core modules for React Native
Downloads
84
Keywords
Readme
@pagopa/react-native-nodelibs
This package provides React Native compatible implementations of Node core modules like stream
, crypto
and http
avoiding the use of rn-nodeify which is now deprecated.
This is a fork of node-libs-react-native which introduces some improvements and fixes compatible with new versions of node.
crypto.getRandomValues
is based on react-native-get-random-values native library. So you need to install it to be able to use crypto
Installation
yarn add @pagopa/react-native-nodelibs
# If you need to use `crypto`
yarn add react-native-get-random-values
Usage
This package exports a mapping of absolute paths to each module implementation, keyed by module name. Modules without React Native compatible implementations are null
.
These modules can be used with React Native Packager's metro.config.js
or Webpack's resolve.alias
.
Usage with React Native Packager
Add a metro.config.js
file in the root directory of your React Native project and set resolver.extraNodeModules
:
// metro.config.js
module.exports = {
resolver: {
extraNodeModules: require('@pagopa/react-native-nodelibs'),
},
};
Globals
Node has certain globals that modules may expect, such as Buffer
or process
. React Native does not provide these globals. The @pagopa/react-native-nodelibs/globals
module in this package will shim the global environment to add these globals. Just require (or import) this module in your app before anything else.
require('@pagopa/react-native-nodelibs/globals');
// ...
require('./app.js');
Modules
The following are the module implementations provided by this package.
| Module | RN-compatible | |:--------:|:----------------------:| | assert | defunctzombie/commonjs-assert | | buffer | feross/buffer | | child_process | --- | | cluster | --- | | console | Raynos/console-browserify | | constants | juliangruber/constants-browserify | | crypto | See the next paragraph | | dgram | --- | | dns | --- | | domain | bevry/domain-browser | | events | Gozala/events | | fs | itinance/react-native-fs | | http | jhiesey/stream-http | | https | substack/https-browserify | | module | --- | | net | --- | | os | CoderPuppy/os-browserify | | path | substack/path-browserify | | process | shtylman/node-process | | punycode | bestiejs/punycode.js | | querystring | mike-spainhower/querystring | | readline | --- | | repl | --- | | stream | nodejs/readable-stream | | string_decoder | rvagg/string_decoder | | sys | defunctzombie/node-util | | timers | jryans/timers-browserify | | tls | --- | | tty | substack/tty-browserify | | url | defunctzombie/node-url | | util | defunctzombie/node-util | | vm | --- | | zlib | devongovett/browserify-zlib |
Crypto Modules
The crypto modules have been replaced by their JavaScript-based versions.
Below are the various modules implemented on crypto
| getRandomValues | react-native-get-random-values | | createHash | create-hash | | createHmac | create-hmac | | getHashes | browserify-sign/algos | | pbkdf2 | pbkdf2 | | pbkdf2Sync | pbkdf2 | | createCipher,createCipheriv,createDecipher,createDecipheriv,getCiphers,listCiphers | browserify-cipher | | createDiffieHellmanGroup,getDiffieHellman,createDiffieHellman | diffie-hellman | | createSign,createVerify | browserify-sign | | createECDH | create-ecdh | | publicEncrypt,privateEncrypt,publicDecrypt | public-encrypt | | randomFill,randomFillSync | randomfill |