Node core modules for React Native
npm install @umpc/node-libs-react-nativeThis 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.
[node-libs-browser]: https://www.npmjs.com/package/node-libs-browser
```
npm install --save node-libs-react-native
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 rn-cli.config.js or Webpack's resolve.alias.
Add a rn-cli.config.js file in the root directory of your React Native project and set extraNodeModules:
`js`
// rn-cli.config.js
module.exports = {
extraNodeModules: require('node-libs-react-native'),
};
For more information, see this post on [Node core modules in React Native][post].
[post]: https://gist.github.com/parshap/e3063d9bf6058041b34b26b7166fd6bd
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][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.
[globals]: ./globals.js
`js`
require('node-libs-react-native/globals');
// ...
require('./app.js');
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 | dunshiftio/url-parse | --- |
| util | defunctzombie/node-util | --- |
| vm | --- | --- |
| zlib | devongovett/browserify-zlib | --- |
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.
[react-native-udp][] implements Node's dgram API, but is not includedreact-native
here due to its native implementation and need to use
link.
[react-native-udp]: https://github.com/tradle/react-native-udp
[react-native-fs][] implement's Node's fs API, but is not includedreact-native
here due to its native implementation and need to use
link.
[react-native-fs]: https://github.com/itinance/react-native-fs
[react-native-level-fs][] provides an alternative pure JavaScript
implementation, using AsyncStorage as the underlying storage mechanism.
[react-native-level-fs]: https://github.com/tradle/react-native-level-fs
[react-native-tcp][] implement's Node's net API, but is not includedreact-native
here due to its native implementation and need to use
link`.
[react-native-tcp]: https://github.com/PeelTechnologies/react-native-tcp
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.
MIT