Spaces:
Build error
Build error
| # MZ - Modernize node.js | |
| [![NPM version][npm-image]][npm-url] | |
| [![Build status][travis-image]][travis-url] | |
| [![Test coverage][coveralls-image]][coveralls-url] | |
| [![Dependency Status][david-image]][david-url] | |
| [![License][license-image]][license-url] | |
| [![Downloads][downloads-image]][downloads-url] | |
| Modernize node.js to current ECMAScript specifications! | |
| node.js will not update their API to ES6+ [for a while](https://github.com/joyent/node/issues/7549). | |
| This library is a wrapper for various aspects of node.js' API. | |
| ## Installation and Usage | |
| Set `mz` as a dependency and install it. | |
| ```bash | |
| npm i mz | |
| ``` | |
| Then prefix the relevant `require()`s with `mz/`: | |
| ```js | |
| var fs = require('mz/fs') | |
| fs.exists(__filename).then(function (exists) { | |
| if (exists) // do something | |
| }) | |
| ``` | |
| With ES2017, this will allow you to use async functions cleanly with node's core API: | |
| ```js | |
| const fs = require('mz/fs') | |
| async function doSomething () { | |
| if (await fs.exists(__filename)) // do something | |
| } | |
| ``` | |
| ## Promisification | |
| Many node methods are converted into promises. | |
| Any properties that are deprecated or aren't asynchronous will simply be proxied. | |
| The modules wrapped are: | |
| - `child_process` | |
| - `crypto` | |
| - `dns` | |
| - `fs` (uses `graceful-fs` if available) | |
| - `readline` | |
| - `zlib` | |
| ```js | |
| var exec = require('mz/child_process').exec | |
| exec('node --version').then(function (stdout) { | |
| console.log(stdout) | |
| }) | |
| ``` | |
| ## Promise Engine | |
| `mz` uses [`any-promise`](https://github.com/kevinbeaty/any-promise). | |
| ## FAQ | |
| ### Can I use this in production? | |
| Yes, Node 4.x ships with stable promises support. For older engines, | |
| you should probably install your own promise implementation and register it with | |
| `require('any-promise/register')('bluebird')`. | |
| ### Will this make my app faster? | |
| Nope, probably slower actually. | |
| ### Can I add more features? | |
| Sure. | |
| Open an issue. | |
| Currently, the plans are to eventually support: | |
| - New APIs in node.js that are not available in older versions of node | |
| - ECMAScript7 Streams | |
| [bluebird]: https://github.com/petkaantonov/bluebird | |
| [npm-image]: https://img.shields.io/npm/v/mz.svg?style=flat-square | |
| [npm-url]: https://npmjs.org/package/mz | |
| [github-tag]: http://img.shields.io/github/tag/normalize/mz.svg?style=flat-square | |
| [github-url]: https://github.com/normalize/mz/tags | |
| [travis-image]: https://img.shields.io/travis/normalize/mz.svg?style=flat-square | |
| [travis-url]: https://travis-ci.org/normalize/mz | |
| [coveralls-image]: https://img.shields.io/coveralls/normalize/mz.svg?style=flat-square | |
| [coveralls-url]: https://coveralls.io/r/normalize/mz?branch=master | |
| [david-image]: http://img.shields.io/david/normalize/mz.svg?style=flat-square | |
| [david-url]: https://david-dm.org/normalize/mz | |
| [license-image]: http://img.shields.io/npm/l/mz.svg?style=flat-square | |
| [license-url]: LICENSE | |
| [downloads-image]: http://img.shields.io/npm/dm/mz.svg?style=flat-square | |
| [downloads-url]: https://npmjs.org/package/mz | |