summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Akulov <iamakulov@outlook.com>2018-03-23 23:21:17 +0300
committerHubert Argasinski <argasinski.hubert@gmail.com>2018-03-23 16:21:17 -0400
commit3235c8f5f67ff38b85ce6f9664053d0b1897ff3b (patch)
tree25918b68061813a242a3e4e8bc1c45f83e982508
parentf5d86b80b986c8cad88a224a6f8b3ec154839490 (diff)
downloadasync-3235c8f5f67ff38b85ce6f9664053d0b1897ff3b.tar.gz
Optimize the library for webpack users (#1517)
* 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
-rw-r--r--Makefile4
-rw-r--r--README.es.md59
-rw-r--r--README.md6
-rwxr-xr-xsupport/sync-es-package.js1
4 files changed, 70 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 880d739..770ed1b 100644
--- a/Makefile
+++ b/Makefile
@@ -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 $< $@
diff --git a/README.es.md b/README.es.md
new file mode 100644
index 0000000..9661061
--- /dev/null
+++ b/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)
+})
+```
diff --git a/README.md b/README.md
index b48c7de..49cf950 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,8 @@
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)*
@@ -17,6 +19,8 @@ For Documentation, visit <https://caolan.github.io/async/>
```javascript
// for use with Node-style callbacks...
+var async = require("async");
+
var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
var configs = {};
@@ -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)
diff --git a/support/sync-es-package.js b/support/sync-es-package.js
index 3f65a1c..e6c8aa6 100755
--- a/support/sync-es-package.js
+++ b/support/sync-es-package.js
@@ -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));