Skip to content

Commit

Permalink
Optimize the library for webpack users (#1517)
Browse files Browse the repository at this point in the history
* Add the `sideEffects: false` flag into the ES package.json

* Add a different Readme for async-es and link across the packages

* Fix the wrong method name
  • Loading branch information
iamakulov authored and hargasinski committed Mar 23, 2018
1 parent f5d86b8 commit 3235c8f
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Makefile
Expand Up @@ -123,6 +123,10 @@ $(BUILD_ES)/package.json: package.json
mkdir -p "$(@D)"
support/sync-es-package.js > $@

$(BUILD_ES)/README.md: README.es.md
mkdir -p "$(@D)"
cp $< $@

$(BUILD_ES)/%: %
mkdir -p "$(@D)"
cp $< $@
Expand Down
59 changes: 59 additions & 0 deletions README.es.md
@@ -0,0 +1,59 @@
![Async Logo](https://raw.githubusercontent.com/caolan/async/master/logo/async-logo_readme.jpg)

[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async)
[![NPM version](https://img.shields.io/npm/v/async.svg)](https://www.npmjs.com/package/async)
[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master)
[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![libhive - Open source examples](https://www.libhive.com/providers/npm/packages/async/examples/badge.svg)](https://www.libhive.com/providers/npm/packages/async)
[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/async/badge?style=rounded)](https://www.jsdelivr.com/package/npm/async)


Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm install --save async`, it can also be used directly in the browser.

This version of the package is optimized for building with webpack. If you use Async in Node.js, install [`async`](https://www.npmjs.com/package/async) instead.

For Documentation, visit <https://caolan.github.io/async/>

*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)*


```javascript
// for use with callbacks...
import { forEachOf } from "async-es";

const images = {cat: "/cat.png", dog: "/dog.png", duck: "/duck.png"};
const sizes = {};

forEachOf(images, (value, key, callback) => {
const imageElem = new Image();
imageElem.src = value;
imageElem.addEventListener("load", () => {
sizes[key] = {
width: imageElem.naturalWidth,
height: imageElem.naturalHeight,
};
callback();
});
imageElem.addEventListener("error", (e) => {
callback(e);
});
}, err => {
if (err) console.error(err.message);
// `sizes` is now a map of image sizes
doSomethingWith(sizes);
});
```

```javascript
import { mapLimit } from "async-es";

// ...or ES2017 async functions
mapLimit(urls, 5, async function(url) {
const response = await fetch(url)
return response.body
}, (err, results) => {
if (err) throw err
// results is now an array of the response bodies
console.log(results)
})
```
6 changes: 6 additions & 0 deletions README.md
Expand Up @@ -10,13 +10,17 @@

Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm install --save async`, it can also be used directly in the browser.

This version of the package is optimized for the Node.js environment. If you use Async with webpack, install [`async-es`](https://www.npmjs.com/package/async-es) instead.

For Documentation, visit <https://caolan.github.io/async/>

*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)*


```javascript
// for use with Node-style callbacks...
var async = require("async");

var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
var configs = {};

Expand All @@ -38,6 +42,8 @@ async.forEachOf(obj, (value, key, callback) => {
```

```javascript
var async = require("async");

// ...or ES2017 async functions
async.mapLimit(urls, 5, async function(url) {
const response = await fetch(url)
Expand Down
1 change: 1 addition & 0 deletions support/sync-es-package.js
Expand Up @@ -5,6 +5,7 @@ var json = JSON.parse(fs.readFileSync(__dirname + "/../package.json"), "utf8");

json.name = "async-es";
json.main = "index.js";
json.sideEffects = false;
delete json.dependencies["lodash"];

process.stdout.write(JSON.stringify(json, null, 2));
Expand Down

0 comments on commit 3235c8f

Please sign in to comment.