node-libs-react-native
v1.2.1
Published
Node core modules for React Native
Downloads
45,392
Readme
node-libs-react-native
This package provides React Native compatible implementations of Node core modules like stream
and http
. This is a fork of node-libs-browser with a few packages swapped to be compatible in React Native.
Installation
npm install --save node-libs-react-native
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('node-libs-react-native'),
},
};
For more information, see this post on Node core modules in React Native.
Globals
Node has certain globals that modules may expect, such as Buffer
or process
. React Native does not provide these globals. The node-libs-react-native/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('node-libs-react-native/globals');
// ...
require('./app.js');
Modules
The following are the module implementations provided by this package. Some modules also have a "mock" implementation provided in the mock
directory. These are replacements with minimal functionality.
| Module | RN-compatible | Mock | |:--------:|:----------------------:|:-------------------:| | assert | defunctzombie/commonjs-assert | --- | | buffer | feross/buffer | buffer.js | | child_process | --- | --- | | cluster | --- | --- | | console | Raynos/console-browserify | console.js | | constants | juliangruber/constants-browserify | --- | | crypto | mvayngrib/react-native-crypto | --- | | dgram | --- | --- | | dns | --- | dns.js | | domain | bevry/domain-browser | --- | | events | Gozala/events | --- | | fs | --- | --- | | http | jhiesey/stream-http | --- | | https | substack/https-browserify | --- | | module | --- | --- | | net | --- | net.js | | os | CoderPuppy/os-browserify | --- | | path | substack/path-browserify | --- | | process | shtylman/node-process | process.js | | 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 | --- | tls.js | | tty | substack/tty-browserify | tty.js | | url | defunctzombie/node-url | --- | | util | defunctzombie/node-util | --- | | vm | --- | vm.js | | zlib | devongovett/browserify-zlib | --- |
Other React Native Modules
These are other React Native packages that implement Node core related modules. They are not included in node-libs-react-native, but you may find them useful separately.
dgram
react-native-udp implements Node's dgram
API, but is not included
here due to its native implementation and need to use react-native
link
.
fs
react-native-fs implement's Node's fs
API, but is not included
here due to its native implementation and need to use react-native
link
.
react-native-level-fs provides an alternative pure JavaScript implementation, using AsyncStorage as the underlying storage mechanism.
net
react-native-tcp implement's Node's net
API, but is not included
here due to its native implementation and need to use react-native
link
.
Credit
This is a fork of node-libs-browser with minor modifications and packages swapped out for React Native implementations. Thanks to those package authors for doing the hard work.
License
MIT