You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# 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
|