From 91b5f3ca6809b709eed3e2a32cd64b0b7570fc80 Mon Sep 17 00:00:00 2001 From: David Xu Date: Sat, 5 Aug 2017 08:15:01 -0700 Subject: [PATCH 01/61] docs(config): change `global` to `root` in externals (#1214) The currently deployed documentation indicates that there are 4 module contexts you can specify under the externals config... - `global` - `commonjs` - `commonjs2` - `amd` ... which contradicts both the examples that surround it, and the actual library functionality. This just changes the word "global" to "root" in the section that lists the module contexts. --- content/configuration/externals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/configuration/externals.md b/content/configuration/externals.md index 0685e68adc75..a1c2355d82ca 100644 --- a/content/configuration/externals.md +++ b/content/configuration/externals.md @@ -48,7 +48,7 @@ $('.my-element').animate(...); The bundle with external dependencies can be used in various module contexts, such as [CommonJS, AMD, global and ES2015 modules](/concepts/modules). The external library may be available in any of these forms: -* __global__ - An external library can be available as a global variable. The consumer can achieve this by including the external library in a script tag. This is the default setting for externals. +* __root__ - An external library can be available as a global variable. The consumer can achieve this by including the external library in a script tag. This is the default setting for externals. * __commonjs__ - The consumer application may be using a CommonJS module system and hence the external library should be available as a CommonJS module. * __commonjs2__ - Similar to the above line but where the export is `module.exports.default`. * __amd__ - Similar to the above line but using AMD module system. From fbd32ef472fbe5d922946cb4e2e299b59d83d9ef Mon Sep 17 00:00:00 2001 From: Stephen Jennings Date: Sat, 5 Aug 2017 11:13:15 -0700 Subject: [PATCH 02/61] docs(config): clarify that HMR plugin can be added via a flag (#1478) --- content/configuration/dev-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/configuration/dev-server.md b/content/configuration/dev-server.md index d0504eca5ace..96b296f9b8e0 100644 --- a/content/configuration/dev-server.md +++ b/content/configuration/dev-server.md @@ -295,7 +295,7 @@ Enable webpack's Hot Module Replacement feature: hot: true ``` -T> Note that you must also include a `new webpack.HotModuleReplacementPlugin()` to fully enable HMR. See the [HMR concepts page](/concepts/hot-module-replacement) for more information. +T> Note that `webpack.HotModuleReplacementPlugin` is required to fully enable HMR. If `webpack` or `webpack-dev-server` are launched with the `--hot` option, this plugin will be added automatically, so you may not need to add this to your `webpack.config.js`. See the [HMR concepts page](/concepts/hot-module-replacement) for more information. ## `devServer.hotOnly` From 1d205610902717b3fd480b2dd33877bec75d41cb Mon Sep 17 00:00:00 2001 From: Pierre Neter Date: Sun, 6 Aug 2017 01:26:01 +0700 Subject: [PATCH 03/61] fix(markdown): resolve some odd code display bugs (#1486) Fix list formatting in `/development/plugin-patterns/`. Remove the `inline-block` declaration to let inline code flow more naturally and prevent this odd wrapping if other badly formatted lists slip in. --- content/development/plugin-patterns.md | 4 ---- styles/markdown.scss | 1 - 2 files changed, 5 deletions(-) diff --git a/content/development/plugin-patterns.md b/content/development/plugin-patterns.md index 506b91a2c6c0..8fbbbdbf5da6 100644 --- a/content/development/plugin-patterns.md +++ b/content/development/plugin-patterns.md @@ -40,13 +40,9 @@ module.exports = MyPlugin; ``` - `compilation.modules`: An array of modules (built inputs) in the compilation. Each module manages the build of a raw file from your source library. - - `module.fileDependencies`: An array of source file paths included into a module. This includes the source JavaScript file itself (ex: `index.js`), and all dependency asset files (stylesheets, images, etc) that it has required. Reviewing dependencies is useful for seeing what source files belong to a module. - - `compilation.chunks`: An array of chunks (build outputs) in the compilation. Each chunk manages the composition of a final rendered assets. - - `chunk.modules`: An array of modules that are included into a chunk. By extension, you may look through each module's dependencies to see what raw source files fed into a chunk. - - `chunk.files`: An array of output filenames generated by the chunk. You may access these asset sources from the `compilation.assets` table. ### Monitoring the watch graph diff --git a/styles/markdown.scss b/styles/markdown.scss index f16af08c2615..96844b8212b0 100644 --- a/styles/markdown.scss +++ b/styles/markdown.scss @@ -311,7 +311,6 @@ p { code, tt { - display: inline-block; max-width: 100%; line-height: initial; overflow: auto; From 7b9c19020de72dcd9667739f9c42591758caab6e Mon Sep 17 00:00:00 2001 From: Sudarsan G P Date: Sun, 6 Aug 2017 11:08:58 +0800 Subject: [PATCH 04/61] docs(guides): add note about chunkFilename (#1483) --- content/guides/code-splitting.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/guides/code-splitting.md b/content/guides/code-splitting.md index 6277b82d2596..89b090ad2d14 100644 --- a/content/guides/code-splitting.md +++ b/content/guides/code-splitting.md @@ -20,6 +20,7 @@ contributors: - TheDutchCoder - rouzbeh84 - shaodahong + - sudarsangp --- T> This guide extends the examples provided in [Getting Started](/guides/getting-started) and [Managing Built Files](/guides/output-management). Please make sure you are at least familiar with the examples provided in them. @@ -203,7 +204,7 @@ __webpack.config.js__ }; ``` -We'll also update our project to remove the now unused files: +Note the use of `chunkFilename`, which determines the name of non-entry chunk files. For more information on `chunkFilename`, see [output documentation](/configuration/output/#output-chunkfilename). We'll also update our project to remove the now unused files: __project__ From d6f90759a136ecaf5894a85ba19b1e405ec82af5 Mon Sep 17 00:00:00 2001 From: Stephen Jennings Date: Sat, 5 Aug 2017 20:21:52 -0700 Subject: [PATCH 05/61] docs(config): clarify the meaning of `Rule.parser` options (#1489) Fixes #1484 --- content/configuration/module.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content/configuration/module.md b/content/configuration/module.md index db55662d2152..e2c4a758bdef 100644 --- a/content/configuration/module.md +++ b/content/configuration/module.md @@ -160,7 +160,12 @@ W> `Rule.query` is deprecated in favor of `Rule.options` and `UseEntry.options`. An object with parser options. All applied parser options are merged. -For each different parser options object a new parser is created and plugins can apply plugins depending on the parser options. Many of the default plugins apply their parser plugins only if a property in the parser options is not set or true. +Parsers may inspect these options and disable or reconfigure themselves accordingly. Most of the default plugins interpret the values as follows: + +* Setting the option to `false` disables the parser. +* Setting the option to `true` or leaving it `undefined` enables the parser. + +However, parser plugins may accept more than just a boolean. For example, the internal `NodeStuffPlugin` can accept an object instead of `true` to add additional options for a particular Rule. **Examples** (parser options by the default plugins): From 1fdd5471123db4a44d0e69a707330fa7dcac896c Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Sun, 6 Aug 2017 05:30:03 +0200 Subject: [PATCH 06/61] docs(config): improve node documentation (#1368) The documentation about using built-in Node.js modules was very poor (i.e. non-existent). This expands the documentation of the "node" configuration option, and shows how one can require built-in modules if desired. Furthermore, all possible effects of the options are explicitly documented. Instead of being vague of what happens when `false` is used, it is explicitly spelled out what happens. References: - https://github.com/webpack/webpack/blob/a589a6c9789a9d342fc630e36ab81827dd20289b/lib/WebpackOptionsApply.js shows when the NodeStuffPlugin and NodeSourcePlugin plugins are used. - https://github.com/webpack/webpack/blob/a589a6c9789a9d342fc630e36ab81827dd20289b/lib/NodeStuffPlugin.js is the plugin that is used for every target. - https://github.com/webpack/webpack/blob/a589a6c9789a9d342fc630e36ab81827dd20289b/lib/node/NodeSourcePlugin.js is the plugin that is only used for "web" and "webworker" targets. - https://github.com/webpack/webpack/blob/a589a6c9789a9d342fc630e36ab81827dd20289b/lib/MultiModule.js#L65-L67 is the generated "webpackMissingModule" code for unresolved modules. (when the NodeSourcePlugin is not used, the environment's "require" is used. In Node.js, this also throws a "Cannot find module 'modulename'" error (with single quotes instead of double quotes)). --- content/configuration/node.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/content/configuration/node.md b/content/configuration/node.md index 059a94055fd3..7a5635341a98 100644 --- a/content/configuration/node.md +++ b/content/configuration/node.md @@ -5,9 +5,12 @@ contributors: - sokra - skipjack - oneforwonder + - Rob--W --- -These options configure whether to polyfill or mock certain [Node.js globals](https://nodejs.org/docs/latest/api/globals.html) and modules. This allows code originally written for the Node.js environment to run in other environments like the browser. This feature is provided by webpack's internal [`NodeStuffPlugin`](https://github.com/webpack/webpack/blob/master/lib/NodeStuffPlugin.js). +These options configure whether to polyfill or mock certain [Node.js globals](https://nodejs.org/docs/latest/api/globals.html) and modules. This allows code originally written for the Node.js environment to run in other environments like the browser. + +This feature is provided by webpack's internal [`NodeStuffPlugin`](https://github.com/webpack/webpack/blob/master/lib/NodeStuffPlugin.js) plugin. If the target is "web" (default) or "webworker", the [`NodeSourcePlugin`](https://github.com/webpack/webpack/blob/master/lib/node/NodeSourcePlugin.js) plugin is also activated. ## `node` @@ -19,7 +22,7 @@ This is an object where each property is the name of a Node global or module and - `true`: Provide a polyfill. - `"mock"`: Provide a mock that implements the expected interface but has little or no functionality. - `"empty"`: Provide an empty object. -- `false`: Provide nothing. Code that expects this object to be defined may crash. +- `false`: Provide nothing. Code that expects this object may crash with a `ReferenceError`. Code that attempts to import the module using `require('modulename')` may trigger a `Cannot find module "modulename"` error. W> Not every Node global supports all four options. The compiler will throw an error for property-value combinations that aren't supported (e.g. `process: 'empty'`). See the sections below for more details. @@ -34,10 +37,12 @@ node: { __dirname: "mock", Buffer: true, setImmediate: true + + // See "Other node core libraries" for additional options. } ``` -Since webpack 3.0.0, the `node` option may be set to `false` to turn off the `NodeSourcePlugin` completely. +Since webpack 3.0.0, the `node` option may be set to `false` to completely turn off the `NodeStuffPlugin` and `NodeSourcePlugin` plugins. ## `node.console` @@ -109,9 +114,13 @@ Default: `true` `boolean | "mock" | "empty"` -Many other Node.js core libraries can be configured as well. See the list of [Node.js core libraries and their polyfills](https://github.com/webpack/node-libs-browser). +W> This option is only activated (via `NodeSourcePlugin`) when the target is unspecified, "web" or "webworker". + +Polyfills for Node.js core libraries from [`node-libs-browser`](https://github.com/webpack/node-libs-browser) are used if available, when the `NodeSourcePlugin` plugin is enabled. See the list of [Node.js core libraries and their polyfills](https://github.com/webpack/node-libs-browser#readme). + +By default, webpack will polyfill each library if there is a known polyfill or do nothing if there is not one. In the latter case, webpack will behave as if the module name was configured with the `false` value. -By default, Webpack will polyfill each library if there is a known polyfill or do nothing if there is not one. +T> To import a built-in module, use [`__non_webpack_require__`](/api/module-variables/#__non_webpack_require__-webpack-specific-), i.e. `__non_webpack_require__('modulename')` instead of `require('modulename')`. Example: From bdf4dbb625df9adc2f6f9bc83e7485ba12313b49 Mon Sep 17 00:00:00 2001 From: Pierre Neter Date: Sun, 6 Aug 2017 11:05:06 +0700 Subject: [PATCH 07/61] docs(config): correct substitutions in output.md (#1487) Correct `output.filename` substitutions and move the others to `output.sourceMapFilename`. Also fix `related` link in the context- replacement-plugin. Fixes #1467 --- content/configuration/output.md | 9 +- content/plugins/context-replacement-plugin.md | 4 +- yarn.lock | 292 ++++++++++++++---- 3 files changed, 242 insertions(+), 63 deletions(-) diff --git a/content/configuration/output.md b/content/configuration/output.md index 9e1540d785c3..6d7527ac43f5 100644 --- a/content/configuration/output.md +++ b/content/configuration/output.md @@ -206,8 +206,6 @@ The following substitutions are available in template strings (via webpack's int | [chunkhash] | The hash of the chunk content | | [name] | The module name | | [id] | The module identifier | -| [file] | The module filename | -| [filebase] | The module [basename](https://nodejs.org/api/path.html#path_path_basename_path_ext) | | [query] | The module query, i.e., the string following `?` in the filename | The lengths of `[hash]` and `[chunkhash]` can be specified using `[hash:16]` (defaults to 20). Alternatively, specify [`output.hashDigestLength`](#output-hashdigestlength) to configure the length globally. @@ -617,7 +615,12 @@ This option is only used when [`devtool`](/configuration/devtool) uses a SourceM Configure how source maps are named. By default `"[file].map"` is used. -Technically, the `[name]`, `[id]`, `[hash]` and `[chunkhash]` [placeholders](#output-filename) can be used, if generating a SourceMap for chunks. In addition to that, the `[file]` placeholder is replaced with the filename of the original file. It's recommended to only use the `[file]` placeholder, as the other placeholders won't work when generating SourceMaps for non-chunk files. Best leave the default. +The `[name]`, `[id]`, `[hash]` and `[chunkhash]` substitions from [#output-filename](#output-filename) can be used. In addition to those, you can use substitutions listed below. The `[file]` placeholder is replaced with the filename of the original file. We recommend __only using the `[file]` placeholder__, as the other placeholders won't work when generating SourceMaps for non-chunk files. + +| Template | Description | +| -------------------------- | ----------------------------------------------------------------------------------- | +| [file] | The module filename | +| [filebase] | The module [basename](https://nodejs.org/api/path.html#path_path_basename_path_ext) | ## `output.sourcePrefix` diff --git a/content/plugins/context-replacement-plugin.md b/content/plugins/context-replacement-plugin.md index 6471c82c512f..9d60b5087fe4 100644 --- a/content/plugins/context-replacement-plugin.md +++ b/content/plugins/context-replacement-plugin.md @@ -3,8 +3,8 @@ title: ContextReplacementPlugin contributors: - simon04 related: - - title: Issue #2783 - ContextReplacementPlugin Description - - url: https://github.com/webpack/webpack/issues/2783#issuecomment-234137265 + - title: Issue 2783 - ContextReplacementPlugin Description + url: https://github.com/webpack/webpack/issues/2783#issuecomment-234137265 --- *Context* refers to a [require with an expression](/guides/dependency-management/#require-with-expression) such as `require('./locale/' + name + '.json')`. When encountering such an expression, webpack infers the directory (`'./locale/'`) and a regular expression (`/^.*\.json$/`). Since the `name` is not known at compile time, webpack includes every file as module in the bundle. diff --git a/yarn.lock b/yarn.lock index 171b5d7576ec..4b8154c49843 100644 --- a/yarn.lock +++ b/yarn.lock @@ -126,6 +126,12 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + antwar-helpers@0.8.1-alpha.078b5fbf: version "0.8.1-alpha.078b5fbf" resolved "https://registry.yarnpkg.com/antwar-helpers/-/antwar-helpers-0.8.1-alpha.078b5fbf.tgz#199d8954a6a62ea542f9d57535c0f918c9628d1c" @@ -296,38 +302,39 @@ assert@^1.1.1: dependencies: util "0.10.3" -assetgraph@^3.0.0-35: - version "3.0.0-40" - resolved "https://registry.yarnpkg.com/assetgraph/-/assetgraph-3.0.0-40.tgz#692395126af3d24eb1bf2ea3afd6a2888e630757" +assetgraph@^3.2.0: + version "3.6.3" + resolved "https://registry.yarnpkg.com/assetgraph/-/assetgraph-3.6.3.tgz#b6e1e4d91c51252a2bfc3b7d2c2a723a14e1c25e" dependencies: - bluebird "3.4.7" + bluebird "^3.5.0" chalk "^1.1.3" createerror "^1.1.0" cssnano "^3.7.4" esanimate "^1.1.0" escodegen "^1.8.0" - esprima "^3.0.0" - espurify "^1.5.1" + esprima "^3.1.3" + espurify "^1.7.0" estraverse "^4.2.0" - gettemporaryfilepath "0.0.1" + gettemporaryfilepath "^1.0.0" glob "^7.0.5" - html-minifier "^3.2.1" + html-minifier "^3.5.2" imageinfo "1.0.4" - jsdom "9.11.0" + jsdom "9.12.0" lodash "^4.11.2" mkdirp "^0.5.1" - normalizeurl "1.0.0" - perfectionist "2.4.0" - postcss "~5.2.0" + normalizeurl "^1.0.0" + perfectionist "^2.4.0" + postcss "~6.0.1" + read-pkg-up "^2.0.0" repeat-string "^1.5.4" schemes "^1.0.1" semver "^5.3.0" source-map "^0.5.6" sourcemap-to-ast "0.0.2" teepee "^2.28.0" - uglify-js "2.7.5" - urltools "0.3.1" - xmldom "0.1.22" + uglify-js "^3.0.3" + urltools "^0.3.5" + xmldom "^0.1.27" async-each@^1.0.0: version "1.0.1" @@ -357,6 +364,12 @@ async@^2.0.1, async@^2.1.2: dependencies: lodash "^4.14.0" +async@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + dependencies: + lodash "^4.14.0" + async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -1052,15 +1065,11 @@ bluebird@2.9.34: version "2.9.34" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.9.34.tgz#2f7b4ec80216328a9fddebdf69c8d4942feff7d8" -bluebird@3.4.7: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - bluebird@^2.10.2: version "2.11.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" -bluebird@^3.0.0, bluebird@^3.4.7: +bluebird@^3.0.0, bluebird@^3.4.7, bluebird@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" @@ -1224,6 +1233,14 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + character-entities-html4@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.0.tgz#1ab08551d3ce1fa1df08d00fb9ca1defb147a06c" @@ -1296,6 +1313,12 @@ clean-css@4.0.x: dependencies: source-map "0.5.x" +clean-css@4.1.x: + version "4.1.7" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" + dependencies: + source-map "0.5.x" + cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -1362,7 +1385,7 @@ collections@^0.2.0: dependencies: weak-map "1.0.0" -color-convert@^1.3.0: +color-convert@^1.3.0, color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: @@ -1412,6 +1435,10 @@ commander@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/commander/-/commander-1.0.0.tgz#5e6a88e7070ff5908836ead19169548c30f90bcd" +commander@2.11.x, commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + commander@2.9.0, commander@2.9.x, commander@^2.9.0, commander@~2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -2126,11 +2153,11 @@ esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^3.0.0, esprima@^3.1.1: +esprima@^3.1.1, esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" -espurify@^1.5.1: +espurify@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.7.0.tgz#1c5cf6cbccc32e6f639380bd4f991fab9ba9d226" dependencies: @@ -2388,6 +2415,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + findit@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/findit/-/findit-1.1.1.tgz#b460e2f7633d78ed2c217c77c4209ecacaf8262a" @@ -2551,9 +2584,9 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -gettemporaryfilepath@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/gettemporaryfilepath/-/gettemporaryfilepath-0.0.1.tgz#b8a2c7014bb5cd41534e983b5ca160a374708469" +gettemporaryfilepath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gettemporaryfilepath/-/gettemporaryfilepath-1.0.0.tgz#2354791f0f5cdbbc881ab8bd79d478c166a12305" gh-pages@^0.12.0: version "0.12.0" @@ -2707,7 +2740,7 @@ har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" -har-validator@~4.2.0: +har-validator@~4.2.0, har-validator@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" dependencies: @@ -2737,6 +2770,10 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2806,7 +2843,7 @@ html-encoding-sniffer@^1.0.1: dependencies: whatwg-encoding "^1.0.1" -html-minifier@^3.2.1, html-minifier@^3.2.3: +html-minifier@^3.2.3: version "3.4.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975" dependencies: @@ -2819,6 +2856,19 @@ html-minifier@^3.2.1, html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "2.8.x" +html-minifier@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.11.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.0.x" + html-webpack-plugin@^2.22.0: version "2.28.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" @@ -2934,17 +2984,18 @@ https-proxy-agent@^1.0.0: debug "2" extend "3" -hyperlink@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/hyperlink/-/hyperlink-2.7.0.tgz#f838f7871e319cf0893b9a0f246eb1cb63d3d331" +hyperlink@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hyperlink/-/hyperlink-3.0.0.tgz#3b4207373cd252f4359f3833513a7681213e575b" dependencies: - assetgraph "^3.0.0-35" - async "^2.1.2" - lodash "^4.16.4" + assetgraph "^3.2.0" + async "^2.4.0" + lodash "^4.17.4" optimist "^0.6.1" - request "^2.75.0" + pretty-bytes "^4.0.2" + request "^2.81.0" tap-render Munter/tap-render#0.1.7-patch1 - urltools "^0.3.0" + urltools "^0.3.1" iconv-lite@0.4.13, iconv-lite@~0.4.13: version "0.4.13" @@ -3310,9 +3361,9 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@9.11.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.11.0.tgz#a95b0304e521a2ca5a63c6ea47bf7708a7a84591" +jsdom@9.12.0: + version "9.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" dependencies: abab "^1.0.3" acorn "^4.0.4" @@ -3507,6 +3558,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + loader-utils@^0.2.10, loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.3, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" @@ -3524,6 +3584,13 @@ loader-utils@^1.0.2: emojis-list "^2.0.0" json5 "^0.5.0" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash._arraycopy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" @@ -3779,7 +3846,7 @@ lodash@3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.11.2, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.16.1, lodash@^4.16.4, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.1: +lodash@^4.0.0, lodash@^4.11.2, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.16.1, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -4246,7 +4313,7 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" -normalizeurl@1.0.0: +normalizeurl@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/normalizeurl/-/normalizeurl-1.0.0.tgz#4b1a458cd0c7d0856436f69c6b51047ab6855317" @@ -4408,6 +4475,16 @@ osenv@0, osenv@^0.1.0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + package-json@^2.0.0: version "2.4.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" @@ -4505,6 +4582,10 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -4525,6 +4606,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -4539,7 +4626,7 @@ pbkdf2-compat@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288" -perfectionist@2.4.0: +perfectionist@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/perfectionist/-/perfectionist-2.4.0.tgz#c147ad3714e126467f1764129ee72df861d47ea0" dependencies: @@ -4841,7 +4928,7 @@ postcss-zindex@^2.0.1: postcss "^5.0.4" uniqs "^2.0.0" -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15, postcss@^5.2.4, postcss@~5.2.0: +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15, postcss@^5.2.4: version "5.2.15" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30" dependencies: @@ -4850,6 +4937,14 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" +postcss@~6.0.1: + version "6.0.8" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.8.tgz#89067a9ce8b11f8a84cbc5117efc30419a0857b3" + dependencies: + chalk "^2.0.1" + source-map "^0.5.6" + supports-color "^4.2.0" + preact-compat@3.11.0: version "3.11.0" resolved "https://registry.yarnpkg.com/preact-compat/-/preact-compat-3.11.0.tgz#be6348945e0c4f2e5b9ed7afb33b1bc095e6c829" @@ -4903,6 +4998,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + pretty-error@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23" @@ -5039,6 +5138,10 @@ qs@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + query-string@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-3.0.3.tgz#ae2e14b4d05071d4e9b9eb4873c35b0dcd42e638" @@ -5138,6 +5241,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0, read-pkg@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -5146,6 +5256,14 @@ read-pkg@^1.0.0, read-pkg@^1.1.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@1.0, readable-stream@^1.0.33: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -5393,6 +5511,33 @@ request@2, request@^2.61.0, request@^2.75.0, request@^2.79.0: tunnel-agent "~0.4.1" uuid "^3.0.0" +request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5487,6 +5632,10 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" +safe-buffer@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + sass-graph@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b" @@ -5906,6 +6055,12 @@ supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" +supports-color@^4.0.0, supports-color@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" + dependencies: + has-flag "^2.0.0" + svg-pathdata@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/svg-pathdata/-/svg-pathdata-1.0.4.tgz#7a681342aac7effd8d52afba7999910c9da3b959" @@ -5986,9 +6141,9 @@ tap-parser@^5.3.2, tap-parser@^5.3.3: optionalDependencies: readable-stream "^2" -tap-render@Munter/tap-render#0.1.7-patch1: +"tap-render@github:munter/tap-render#0.1.7-patch1": version "0.1.7" - resolved "https://codeload.github.com/Munter/tap-render/tar.gz/35bf3ac21c4fd2776d8569d5e8a1ab62df1f6d4f" + resolved "https://codeload.github.com/munter/tap-render/tar.gz/35bf3ac21c4fd2776d8569d5e8a1ab62df1f6d4f" dependencies: jsonify "0.0.0" pause-stream "0.0.7" @@ -6097,6 +6252,10 @@ to-vfile@^1.0.0: dependencies: vfile "^1.0.0" +tool-list@^0.9.1: + version "0.9.2" + resolved "https://registry.yarnpkg.com/tool-list/-/tool-list-0.9.2.tgz#3385861588293e1b60b2dcb8bb7f0b215a1522f2" + toposort@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" @@ -6164,6 +6323,12 @@ tunnel-agent@^0.4.3, tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -6193,15 +6358,6 @@ uc.micro@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" -uglify-js@2.7.5, uglify-js@~2.7.3: - version "2.7.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" - dependencies: - async "~0.2.6" - source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" - uglify-js@2.8.x: version "2.8.7" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.7.tgz#e0391911507b6d2e05697a528f1686e90a11b160" @@ -6210,6 +6366,13 @@ uglify-js@2.8.x: uglify-to-browserify "~1.0.0" yargs "~3.10.0" +uglify-js@3.0.x, uglify-js@^3.0.3: + version "3.0.27" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.27.tgz#a97db8c8ba6b9dba4e2f88d86aa9548fa6320034" + dependencies: + commander "~2.11.0" + source-map "~0.5.1" + uglify-js@~2.3: version "2.3.6" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" @@ -6218,6 +6381,15 @@ uglify-js@~2.3: optimist "~0.3.5" source-map "~0.1.7" +uglify-js@~2.7.3: + version "2.7.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" @@ -6367,9 +6539,9 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -urltools@0.3.1, urltools@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/urltools/-/urltools-0.3.1.tgz#13b0d5b73e2ecf5fc03c8815574be9c4b550ff6d" +urltools@^0.3.1, urltools@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/urltools/-/urltools-0.3.5.tgz#61c12cb2785feb17ffb4069c9972ed7e00c75b96" dependencies: glob "^7.0.3" underscore "^1.8.3" @@ -6719,7 +6891,11 @@ xml-name-validator@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" -xmldom@0.1.22, xmldom@~0.1.22: +xmldom@^0.1.27: + version "0.1.27" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" + +xmldom@~0.1.22: version "0.1.22" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.22.tgz#10de4e5e964981f03c8cc72fadc08d14b6c3aa26" From d02b35dc19d7079558cc3710d54183d88322ef52 Mon Sep 17 00:00:00 2001 From: Habner Date: Sun, 6 Aug 2017 23:07:12 -0300 Subject: [PATCH 08/61] docs(config): fix typo in output (#1494) --- content/guides/caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/caching.md b/content/guides/caching.md index 6abf83fb1dc3..02a9da8bc064 100644 --- a/content/guides/caching.md +++ b/content/guides/caching.md @@ -29,7 +29,7 @@ This guide focuses on the configuration needed to ensure files produced by webpa ## Output Filenames -A simple way to ensure the browser picks up changed files is by using `output.filename` [substitutions](/configuration/output#output-filename). The `[hash]` substitution can be used to include a build-specific hash in the filename, however it's even better to use the `[chunkhash]` subsitution which includes a chunk-specific hash in the filename. +A simple way to ensure the browser picks up changed files is by using `output.filename` [substitutions](/configuration/output#output-filename). The `[hash]` substitution can be used to include a build-specific hash in the filename, however it's even better to use the `[chunkhash]` substitution which includes a chunk-specific hash in the filename. Let's get our project set up using the example from [getting started](/guides/getting-started) with the `plugins` from [output management](/guides/output-management), so we don't have to deal with maintaining our `index.html` file manually: From d4234bbb2c5eeb329d69bd9cf4cda490fd0ae77a Mon Sep 17 00:00:00 2001 From: Stephen Jennings Date: Sun, 6 Aug 2017 19:29:40 -0700 Subject: [PATCH 09/61] docs(config): discuss params in configuration types (#1479) Expand on how --env arguments gets translated into the env parameter. Briefly explain the argv parameter. --- content/api/cli.md | 29 +++++++++++++------- content/configuration/configuration-types.md | 20 ++++++++------ 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/content/api/cli.md b/content/api/cli.md index 40c16490da9e..d5e496cff412 100644 --- a/content/api/cli.md +++ b/content/api/cli.md @@ -110,16 +110,6 @@ Specifies a different [configuration](/configuration) file to pick up. Use this webpack --config example.config.js ``` -**Specify build environment** - -Send [environment](/configuration/configuration-types) variable to be used in webpack config file. - - -```bash -webpack --env.production # sets production to true -webpack --env.platform=web # sets platform to "web" -``` - **Print result of webpack as a JSON** ```bash @@ -129,6 +119,25 @@ webpack --json > stats.json In every other case, webpack prints out a set of stats showing bundle, chunk and timing details. Using this option the output can be a JSON object. This response is accepted by webpack's [analyse tool](https://webpack.github.com/analyse), or chrisbateman's [webpack-visualizer](https://chrisbateman.github.io/webpack-visualizer/), or th0r's [webpack-bundle-analyzer](https://github.com/th0r/webpack-bundle-analyzer). The analyse tool will take in the JSON and provide all the details of the build in graphical form. +### Environment Options + +When the webpack configuration [exports a function](/configuration/configuration-types#exporting-a-function), an "environment" may be passed to it. + +```bash +webpack --env.production # sets env.production == true +webpack --env.platform=web # sets env.platform == "web" +``` + +The `--env` argument accepts various syntaxes: + +| Invocation | Resulting environment | +|-------------------------------|-----------------------------| +| webpack --env prod | `"prod"` | +| webpack --env.prod | `{ prod: true }` | +| webpack --env.prod=1 | `{ prod: 1 }` | +| webpack --env.prod=foo | `{ prod: "foo" }` | +| webpack --env.prod --env.min | `{ prod: true, min: true }` | +| webpack --env.prod --env min | `[{ prod: true }, "min"]` | ### Output Options diff --git a/content/configuration/configuration-types.md b/content/configuration/configuration-types.md index 8021e3597790..de51fd1e8aaf 100644 --- a/content/configuration/configuration-types.md +++ b/content/configuration/configuration-types.md @@ -11,21 +11,25 @@ contributors: Besides exporting a single config object, there are a few more ways that cover other needs as well. -## Exporting a function to use `--env` +## Exporting a Function Eventually you will find the need to disambiguate in your `webpack.config.js` between [development](/guides/development) and [production builds](/guides/production). You have (at least) two options: -Instead of exporting a configuration object, you may return a function which accepts an environment as argument. When running webpack, you may specify build environment keys via `--env`, such as `--env.production` or `--env.platform=web`. +One option is to export a function from your webpack config instead of exporting an object. The function will be invoked with two arguments: + +* An environment as the first parameter. See the [environment options CLI documentation](/api/cli#environment-options) for syntax examples. +* An options map (`argv`) as the second parameter. This describes the options passed to webpack, with keys such as [`output-filename`](/api/cli/#output-options) and [`optimize-minimize`](/api/cli/#optimize-options). ```diff -module.exports = { -+module.exports = function(env) { ++module.exports = function(env, argv) { + return { - plugins: [ - new webpack.optimize.UglifyJsPlugin({ -+ compress: env.production // compress only in production build - }) - ] ++ devtool: env.production ? 'source-maps' : 'eval', + plugins: [ + new webpack.optimize.UglifyJsPlugin({ ++ compress: argv['optimize-minimize'] // only if -p or --optimize-minimize were passed + }) + ] + }; }; ``` From 6469f8c6823cb0b687900685752dc0b987cc5332 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 09:47:26 -0400 Subject: [PATCH 10/61] style(splash): tighten up the index paragraphs a little for readability --- components/splash/splash-style.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/splash/splash-style.scss b/components/splash/splash-style.scss index 0dc17bfbe99f..8ca96de6e988 100644 --- a/components/splash/splash-style.scss +++ b/components/splash/splash-style.scss @@ -10,6 +10,11 @@ background-color:#f3f3f3; } + p { + margin: 0 auto; + max-width: 800px; + } + .container { padding:5em 1em; From 043cb4fa261d6544cb7da24a23bd2cd9ddb98f91 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 09:50:29 -0400 Subject: [PATCH 11/61] feat(support): add descriptions to sponsor and backer sections This is a follow up to #1466 based on @xdamman's suggestion. It adds a short description above the avatars to describe the rank and contributions. --- components/support/support-style.scss | 13 ++++++++++++- components/support/support.jsx | 13 +++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/components/support/support-style.scss b/components/support/support-style.scss index b71d2cf9ad6f..ce649015ec8e 100644 --- a/components/support/support-style.scss +++ b/components/support/support-style.scss @@ -4,7 +4,18 @@ display: flex; flex-wrap: wrap; justify-content: center; - padding: 1em 0.5em; + padding: 0 0.5em 1em; + + &__description { + flex: 0 0 100%; + margin-bottom: 1em; + } + + &__rank { + text-transform: capitalize; + + &:after { content: ' '; } + } &__item { position: relative; diff --git a/components/support/support.jsx b/components/support/support.jsx index 2d3be767c825..9abf5f0287d5 100644 --- a/components/support/support.jsx +++ b/components/support/support.jsx @@ -47,6 +47,19 @@ export default class Support extends React.Component { return (
+
+ { type === 'sponsors' ? ( +

+ { rank } sponsors + are those who have pledged { minimum ? `$${minimum}` : '' } { maximum ? `to $${maximum}` : 'or more' } to webpack. +

+ ) : ( +

+ The following Backers are individuals who have contributed various amounts of money in order to help support webpack. Every little bit helps, and we appreciate even the smallest contributions. +

+ )} +
+ { supporters.map((supporter, index) => ( Date: Sun, 6 Aug 2017 09:51:03 -0400 Subject: [PATCH 12/61] docs(index): make minor formatting changes --- content/index.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/content/index.md b/content/index.md index 2d3b4773beaf..46aacbd4ba06 100644 --- a/content/index.md +++ b/content/index.md @@ -6,25 +6,22 @@ title: webpack
- -**app.js** +__app.js__ ```js import bar from './bar'; bar(); ``` - -
- -**bar.js** +
+
+__bar.js__ ```js export default function bar() { // } ``` -
@@ -33,8 +30,7 @@ export default function bar() {
- -**webpack.config.js** +__webpack.config.js__ ```js module.exports = { @@ -44,10 +40,9 @@ module.exports = { } } ``` - -
- -**page.html** +
+
+__page.html__ ```html @@ -62,7 +57,6 @@ module.exports = { ``` Then run `webpack` on the command-line to create `bundle.js`. -
From 4cbd052e9e6af673eb4305f395b4465bfaccd422 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 09:51:56 -0400 Subject: [PATCH 13/61] docs(index): highlight the concepts section as well Resolves #1300 --- content/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/index.md b/content/index.md index 46aacbd4ba06..243a02f1369f 100644 --- a/content/index.md +++ b/content/index.md @@ -62,4 +62,4 @@ Then run `webpack` on the command-line to create `bundle.js`. ## It's that simple -## [Get Started](/guides/getting-started) +__[Get Started](/guides/getting-started)__ quickly in our __Guides__ section, or dig into the __[Concepts](/concepts)__ section for more high-level information on the core notions behind behind webpack. From 5dd9d227c2f089859d97a4fb64387cf7c3a379f0 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 22:05:54 -0400 Subject: [PATCH 14/61] refactor(support): fix grammar in description --- components/support/support.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/support/support.jsx b/components/support/support.jsx index 9abf5f0287d5..5657868b9120 100644 --- a/components/support/support.jsx +++ b/components/support/support.jsx @@ -51,7 +51,7 @@ export default class Support extends React.Component { { type === 'sponsors' ? (

{ rank } sponsors - are those who have pledged { minimum ? `$${minimum}` : '' } { maximum ? `to $${maximum}` : 'or more' } to webpack. + are those who have pledged { minimum ? `$${minimum}` : 'up' } { maximum ? `to $${maximum}` : 'or more' } to webpack.

) : (

From 4d42ac8a8371c40a68b93dcb0b628e173a23e879 Mon Sep 17 00:00:00 2001 From: Reinier Kaper Date: Mon, 7 Aug 2017 13:48:24 -0400 Subject: [PATCH 15/61] docs(guides): add middleware section to development (#1481) Add missing `webpack-dev-middleware` section to the development guide. It provides a simple example of how you might build a custom `express` server using the middleware. --- content/guides/development.md | 144 ++++++++++++++++++++++- content/guides/hot-module-replacement.md | 2 + 2 files changed, 144 insertions(+), 2 deletions(-) diff --git a/content/guides/development.md b/content/guides/development.md index f26e7c61ca0f..6b8cf2f3c950 100644 --- a/content/guides/development.md +++ b/content/guides/development.md @@ -213,7 +213,7 @@ __package.json__ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "watch": "webpack --progress --watch", -+ "start": "webpack-dev-server --open" ++ "start": "webpack-dev-server --open", "build": "webpack" }, "keywords": [], @@ -240,7 +240,147 @@ T> Now that your server is working, you might want to give [Hot Module Replaceme ### Using webpack-dev-middleware -?> Familiar with `webpack-dev-middleware`? We need your help! Please submit a PR to fill in the missing instructions and example here. Make sure to keep it simple as this guide is intended for beginners. +`webpack-dev-middleware` is a wrapper that will emit files processed by webpack to a server. This is used in `webpack-dev-server` internally, however it's available as a separate package to allow more custom setups if desired. We'll take a look at an example that combines webpack-dev-middleware with an express server. + +Let's install `express` and `webpack-dev-middleware` so we can get started: + +``` bash +npm install --save-dev express webpack-dev-middleware +``` + +Now we need to make some adjustments to our webpack configuration file in order to make sure the middleware will function correctly: + +__webpack.config.js__ + +``` diff + const path = require('path'); + const HtmlWebpackPlugin = require('html-webpack-plugin'); + const CleanWebpackPlugin = require('clean-webpack-plugin'); + + module.exports = { + entry: { + app: './src/index.js', + print: './src/print.js' + }, + devtool: 'inline-source-map', + plugins: [ + new CleanWebpackPlugin(['dist']), + new HtmlWebpackPlugin({ + title: 'Output Management' + }), + new webpack.HotModuleReplacementPlugin() + ], + output: { + filename: '[name].bundle.js', + path: path.resolve(__dirname, 'dist'), ++ publicPath: '/' + } + }; +``` + +The `publicPath` will be used within our server script as well in order to make sure files are served correctly on `http://localhost:3000`, the port number we'll specify later. The next step is setting up our custom `express` server: + +__project__ + +``` bash + webpack-demo + |- package.json + |- webpack.config.js ++ |- server.js + |- /dist + |- /src + |- index.js + |- print.js + |- /node_modules +``` + +__server.js__ + +``` js +const express = require('express'); +const webpack = require('webpack'); +const webpackDevMiddleware = require('webpack-dev-middleware'); + +const app = express(); +const config = require('../webpack.config.js'); +const compiler = webpack(config); + +// Tell express to use the webpack-dev-middleware and use the webpack.config.js +// configuration file as a base. +app.use(webpackDevMiddleware(compiler, { + publicPath: config.output.publicPath +})); + +// Serve the files on port 3000. +app.listen(3000, function () { + console.log('Example app listening on port 3000!\n'); +}); +``` + +Now add an npm script to make it a little easier to run the server: + +__package.json__ + +``` json + { + "name": "development", + "version": "1.0.0", + "description": "", + "main": "webpack.config.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "watch": "webpack --progress --watch", + "start": "webpack-dev-server --open", ++ "server": "node server.js", + "build": "webpack" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "css-loader": "^0.28.4", + "csv-loader": "^2.1.1", + "express": "^4.15.3", + "file-loader": "^0.11.2", + "html-webpack-plugin": "^2.29.0", + "style-loader": "^0.18.2", + "webpack": "^3.0.0", + "webpack-dev-middleware": "^1.12.0", + "xml-loader": "^1.2.1" + } + } +``` + +Now in your terminal run `run npm server`, it should give you an output similar to this: + +``` bash +Example app listening on port 3000! +webpack built 27b137af6d9d8668c373 in 1198ms +Hash: 27b137af6d9d8668c373 +Version: webpack 3.0.0 +Time: 1198ms + Asset Size Chunks Chunk Names + app.bundle.js 1.44 MB 0, 1 [emitted] [big] app +print.bundle.js 6.57 kB 1 [emitted] print + index.html 306 bytes [emitted] + [0] ./src/print.js 116 bytes {0} {1} [built] + [1] ./src/index.js 403 bytes {0} [built] + [2] ./node_modules/lodash/lodash.js 540 kB {0} [built] + [3] (webpack)/buildin/global.js 509 bytes {0} [built] + [4] (webpack)/buildin/module.js 517 bytes {0} [built] +Child html-webpack-plugin for "index.html": + Asset Size Chunks Chunk Names + index.html 544 kB 0 + [0] ./node_modules/html-webpack-plugin/lib/loader.js!./node_modules/html-webpack-plugin/default_index.ejs 538 bytes {0} [built] + [1] ./node_modules/lodash/lodash.js 540 kB {0} [built] + [2] (webpack)/buildin/global.js 509 bytes {0} [built] + [3] (webpack)/buildin/module.js 517 bytes {0} [built] +webpack: Compiled successfully. +``` + +Now fire up your browser and go to `http://localhost:3000`, you should see your webpack app running and functioning! + +T> If you like to know more about how Hot Module Replacement works, we recommend you read the [Hot Module Replacement](/guides/hot-module-replacement/) guide. ## Adjusting Your Text Editor diff --git a/content/guides/hot-module-replacement.md b/content/guides/hot-module-replacement.md index 208a7093d9ac..b44c0fe21d83 100644 --- a/content/guides/hot-module-replacement.md +++ b/content/guides/hot-module-replacement.md @@ -30,6 +30,8 @@ W> __HMR__ is not intended for use in production, meaning it should only be used This feature is great for productivity. All we need to do is update our [webpack-dev-server](https://github.com/webpack/webpack-dev-server) configuration, and use webpack's built in HMR plugin. We'll also remove the entry point for `print.js` as it will now be consumed by the `index.js` module. +T> If you took the route of using `webpack-dev-middleware` instead of `webpack-dev-server`, please use the [`webpack-hot-middleware`](https://github.com/glenjamin/webpack-hot-middleware) package to enable HMR on your custom server or application. + __webpack.config.js__ ``` diff From 75aa99b65222a804ed29ae3c43d410480c0e5313 Mon Sep 17 00:00:00 2001 From: Adam Jahnke Date: Tue, 8 Aug 2017 16:40:21 -0500 Subject: [PATCH 16/61] docs(config): fix typo in devtool (#1498) --- content/configuration/devtool.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/configuration/devtool.md b/content/configuration/devtool.md index 4189a470f57a..b549bf35c90a 100644 --- a/content/configuration/devtool.md +++ b/content/configuration/devtool.md @@ -60,7 +60,7 @@ The following options are ideal for development: `cheap-eval-source-map` - Similar to `eval-source-map`, each module is executed with `eval()`. However, with this option the Source Map is passed as a Data URL to the `eval()` call. It is "cheap" because it doesn't have column mappings, it only maps line numbers. -`cheap-module-eval-source-map` - Similar to `cheap-eval-source-map`, however in this case this case loaders are able to process the mapping for better results. +`cheap-module-eval-source-map` - Similar to `cheap-eval-source-map`, however, in this case loaders are able to process the mapping for better results. ### Production From 44e690b9bb97b160506113c4bf12058eb2af2255 Mon Sep 17 00:00:00 2001 From: Raymond Holmboe Date: Tue, 8 Aug 2017 23:42:09 +0200 Subject: [PATCH 17/61] docs(guides): fix incorrect path in development (#1499) `webpack.config.js` is located in the current directory, not the parent directory. --- content/guides/development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/development.md b/content/guides/development.md index 6b8cf2f3c950..2c11b99b48ef 100644 --- a/content/guides/development.md +++ b/content/guides/development.md @@ -302,7 +302,7 @@ const webpack = require('webpack'); const webpackDevMiddleware = require('webpack-dev-middleware'); const app = express(); -const config = require('../webpack.config.js'); +const config = require('./webpack.config.js'); const compiler = webpack(config); // Tell express to use the webpack-dev-middleware and use the webpack.config.js From 0844ec8cc9baaf3558156b7e8b4749f605e98cc2 Mon Sep 17 00:00:00 2001 From: Daniel Carl Jones Date: Tue, 8 Aug 2017 23:42:00 +0100 Subject: [PATCH 18/61] docs(guides): add missing bash output to caching.md (#1500) Add warning message and output. Related #1496 --- content/guides/caching.md | 40 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/content/guides/caching.md b/content/guides/caching.md index 02a9da8bc064..cc275dfabc6a 100644 --- a/content/guides/caching.md +++ b/content/guides/caching.md @@ -5,6 +5,7 @@ contributors: - okonet - jouni-kantola - skipjack + - dannycjones related: - title: Predictable Long Term Caching url: https://medium.com/webpack/predictable-long-term-caching-with-webpack-d3eee1d3fa31 @@ -71,14 +72,47 @@ __webpack.config.js__ Running our build script, `npm run build`, with this configuration should produce the following output: -?> Add bash output +``` bash +Hash: f7a289a94c5e4cd1e566 +Version: webpack 3.5.1 +Time: 835ms + Asset Size Chunks Chunk Names +main.7e2c49a622975ebd9b7e.js 544 kB 0 [emitted] [big] main + index.html 197 bytes [emitted] + [0] ./src/index.js 216 bytes {0} [built] + [2] (webpack)/buildin/global.js 509 bytes {0} [built] + [3] (webpack)/buildin/module.js 517 bytes {0} [built] + + 1 hidden module +Child html-webpack-plugin for "index.html": + 1 asset + [2] (webpack)/buildin/global.js 509 bytes {0} [built] + [3] (webpack)/buildin/module.js 517 bytes {0} [built] + + 2 hidden modules +``` -As you can see the bundle's name now reflects its content (via the hash). If we run another build without making any changes, we'd expect that filename to stay the same. However, upon running it, we'll see that this is not the case: +As you can see the bundle's name now reflects its content (via the hash). If we run another build without making any changes, we'd expect that filename to stay the same. However, if we were to run it again, we may find that this is not the case: -?> Add bash output +``` bash +Hash: f7a289a94c5e4cd1e566 +Version: webpack 3.5.1 +Time: 835ms + Asset Size Chunks Chunk Names +main.205199ab45963f6a62ec.js 544 kB 0 [emitted] [big] main + index.html 197 bytes [emitted] + [0] ./src/index.js 216 bytes {0} [built] + [2] (webpack)/buildin/global.js 509 bytes {0} [built] + [3] (webpack)/buildin/module.js 517 bytes {0} [built] + + 1 hidden module +Child html-webpack-plugin for "index.html": + 1 asset + [2] (webpack)/buildin/global.js 509 bytes {0} [built] + [3] (webpack)/buildin/module.js 517 bytes {0} [built] + + 2 hidden modules +``` This is because webpack includes certain boilerplate, specifically the runtime and manifest, in the entry chunk. +W> Output may differ depending on your current webpack version. Newer versions may not have all the same issues with hashing as some older versions, but we still recommend the following steps to be safe. ## Extracting Boilerplate From fbd089ff9605a4f1f782810a89fe18cefa7e3eab Mon Sep 17 00:00:00 2001 From: Philip Alegret Date: Tue, 8 Aug 2017 18:57:29 -0400 Subject: [PATCH 19/61] docs(guides): correct link text in code-splitting (#1497) Corrected link text to reflect current section heading text. --- content/guides/code-splitting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/code-splitting.md b/content/guides/code-splitting.md index 89b090ad2d14..69ef43ff0019 100644 --- a/content/guides/code-splitting.md +++ b/content/guides/code-splitting.md @@ -23,7 +23,7 @@ contributors: - sudarsangp --- -T> This guide extends the examples provided in [Getting Started](/guides/getting-started) and [Managing Built Files](/guides/output-management). Please make sure you are at least familiar with the examples provided in them. +T> This guide extends the examples provided in [Getting Started](/guides/getting-started) and [Output Management](/guides/output-management). Please make sure you are at least familiar with the examples provided in them. Code splitting is one of the most compelling features of webpack. This feature allows you to split your code into various bundles which can then be loaded on demand or in parallel. It can be used to achieve smaller bundles and control resource load prioritization which, if used correctly, can have a major impact on load time. From 2d840fb962320d4b90b803563857715071fdfbfa Mon Sep 17 00:00:00 2001 From: Stephen Jennings Date: Tue, 8 Aug 2017 17:31:29 -0700 Subject: [PATCH 20/61] docs(api): clarify 'watch mode' in the plugin docs (#1495) Add documentation for watch-close event. Clarify what 'watch mode' is in the plugin documentation. Add use case for watch mode in compiler. Resolves #1493 --- content/api/plugins/compiler.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/content/api/plugins/compiler.md b/content/api/plugins/compiler.md index e5a5f23bb669..bc27dc66a226 100644 --- a/content/api/plugins/compiler.md +++ b/content/api/plugins/compiler.md @@ -60,7 +60,9 @@ The `Compiler` is what we call a `Tapable` instance. By this, we mean that it mi ## Watching -The `Compiler` supports two flavors of execution. One on watch mode and one on a normal single run. While it essentially performs the same functionality while watching, there are some additions to the lifecycle events. This allows `webpack` to have Watch specific plugins. +The `Compiler` supports "watch mode" which monitors the file system and recompiles as files change. When in watch mode, the compiler will emit the additional events ["watch-run", "watch-close", and "invalid"](#event-hooks). This is typically used in [development](/guides/development), usually under the hood of tools like `webpack-dev-server`, so that the developer doesn't need to re-compile manually every time. + +For more details about watch mode, see the [Node.js API documentation](/api/node/#watching) or the [CLI watch options](/api/cli/#watch-options). ## MultiCompiler @@ -115,6 +117,7 @@ __`after-emit`__ | After emitting assets to output dir | `compi __`done`__ | Completion of compile | `stats` | sync __`failed`__ | Failure of compile | `error` | sync __`invalid`__ | After invalidating a watch compile | `fileName`, `changeTime` | sync +__`watch-close`__ | After stopping a watch compile | - | sync ## Usage From a91870c76b4bfd859c835a114196fa252dcac727 Mon Sep 17 00:00:00 2001 From: Veronika Voronova Date: Wed, 9 Aug 2017 15:10:45 +0300 Subject: [PATCH 21/61] docs(guides): correct a typo in development (#1501) --- content/guides/development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/development.md b/content/guides/development.md index 2c11b99b48ef..386b0b3029ac 100644 --- a/content/guides/development.md +++ b/content/guides/development.md @@ -351,7 +351,7 @@ __package.json__ } ``` -Now in your terminal run `run npm server`, it should give you an output similar to this: +Now in your terminal run `npm run server`, it should give you an output similar to this: ``` bash Example app listening on port 3000! From ca104e0cdb12b56d6642456791f53de2e8d9d7bf Mon Sep 17 00:00:00 2001 From: Reinier Kaper Date: Wed, 9 Aug 2017 12:42:33 -0400 Subject: [PATCH 22/61] docs(guides): fix highlight sections (#1503) Change highlight sections from bash/json to diff where required. --- content/guides/development.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/guides/development.md b/content/guides/development.md index 386b0b3029ac..65571863825e 100644 --- a/content/guides/development.md +++ b/content/guides/development.md @@ -282,7 +282,7 @@ The `publicPath` will be used within our server script as well in order to make __project__ -``` bash +``` diff webpack-demo |- package.json |- webpack.config.js @@ -321,7 +321,7 @@ Now add an npm script to make it a little easier to run the server: __package.json__ -``` json +``` diff { "name": "development", "version": "1.0.0", From fd8fd098371317067b757a82d1c9ec254c2505fd Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Wed, 9 Aug 2017 08:06:39 -0400 Subject: [PATCH 23/61] docs(plugins): minor formatting fix in banner-plugin --- content/plugins/banner-plugin.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/plugins/banner-plugin.md b/content/plugins/banner-plugin.md index ee3f79262967..02e411b5d1e8 100644 --- a/content/plugins/banner-plugin.md +++ b/content/plugins/banner-plugin.md @@ -5,7 +5,6 @@ contributors: related: - title: banner-plugin-hashing test url: https://github.com/webpack/webpack/blob/master/test/configCases/plugins/banner-plugin-hashing/webpack.config.js - --- Adds a banner to the top of each generated chunk. From 0642c0174c9a2c485523f71f93b573079070fb19 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Wed, 9 Aug 2017 08:08:16 -0400 Subject: [PATCH 24/61] docs(plugins): add module-concatenation-plugin Add docs for the `ModuleConcatenationPlugin` added in v3. This is the last step of completing #1318. Resolves #1318 --- content/plugins/module-concatenation-plugin.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 content/plugins/module-concatenation-plugin.md diff --git a/content/plugins/module-concatenation-plugin.md b/content/plugins/module-concatenation-plugin.md new file mode 100644 index 000000000000..06a6bf0bf9ba --- /dev/null +++ b/content/plugins/module-concatenation-plugin.md @@ -0,0 +1,18 @@ +--- +title: ModuleConcatenationPlugin +contributors: + - skipjack + - TheLarkInn +related: + - webpack 3: Official Release!! +--- + +In the past, one of webpack’s trade-offs when bundling was that each module in your bundle would be wrapped in individual function closures. These wrapper functions made it slower for your JavaScript to execute in the browser. In comparison, tools like Closure Compiler and RollupJS ‘hoist’ or concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. + +This plugin will enable the same concatenation behavior in webpack. + +``` js +new webpack.optimize.ModuleConcatenationPlugin() +``` + +> Scope Hoisting is specifically a feature made possible by ECMAScript Module syntax. Because of this webpack may fallback to normal bundling based on what kind of modules you are using, and [other conditions](https://medium.com/webpack/webpack-freelancing-log-book-week-5-7-4764be3266f5). From 6c071e603a257d23329dd2c254e19689ca81d1a5 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Thu, 3 Aug 2017 06:51:26 -0400 Subject: [PATCH 25/61] docs(coc): add code of conduct page --- .github/CODE_OF_CONDUCT.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/CODE_OF_CONDUCT.md diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..d8b9301ba43d --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,7 @@ +Code of Conduct +--------------- + +At webpack and all webpack/webpack-contrib repositories we follow the [JSFoundation Code of Conduct][1]. Please adhere to the guidelines there and feel free to report any violation of them to the @webpack/core-team or @webpack/documentation-team. + + +[1]: https://js.foundation/community/code-of-conduct From 492a4d43d9657b67515a8a9e35348f202da49665 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Thu, 3 Aug 2017 06:53:33 -0400 Subject: [PATCH 26/61] refactor(tests): ignore img shield link testing failures These fail all the time due to timeouts so I think it's best to ignore them for now as they aren't used a huge amount in the core content. --- scripts/check-links.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/check-links.js b/scripts/check-links.js index 5ef662793315..b40f1cef41e3 100755 --- a/scripts/check-links.js +++ b/scripts/check-links.js @@ -26,7 +26,8 @@ function checkLinks(args) { return ( !failure.diag || !failure.diag.at || - !failure.diag.at.match(/class="support__[^"]*"/) + !failure.diag.at.match(/class="support__[^"]*"/) || + !failure.diag.at.match(/src="https:\/\/img\.shields\.io[^"]*"/) ); }); From 1fb1c2eb8497a87b9acf498737b983efe7e0f1e6 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 00:23:49 -0400 Subject: [PATCH 27/61] docs(code-of-conduct): update formatting --- .github/CODE_OF_CONDUCT.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index d8b9301ba43d..8b3ef4b365bf 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -1,7 +1,10 @@ Code of Conduct --------------- -At webpack and all webpack/webpack-contrib repositories we follow the [JSFoundation Code of Conduct][1]. Please adhere to the guidelines there and feel free to report any violation of them to the @webpack/core-team or @webpack/documentation-team. +At webpack and all webpack/webpack-contrib repositories we follow the +[JSFoundation Code of Conduct][1]. Please adhere to the guidelines there and +feel free to report any violation of them to the @webpack/core-team or +@webpack/documentation-team. [1]: https://js.foundation/community/code-of-conduct From ae308ab9ef163e0f827f3452c2a2e0ae1942fdbd Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 00:30:36 -0400 Subject: [PATCH 28/61] docs: bring the README, CONTRIBUTING, and writers-guide up to date Update these documents to reflect the current state of the site and hopefully point people who are interested in contributing to the right places. --- .github/CONTRIBUTING.md | 111 +++++++++++++++++++++++++++++---------- README.md | 47 ++++++++++++----- content/writers-guide.md | 28 +++++----- 3 files changed, 130 insertions(+), 56 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 9dc2ce16e8d9..1e276a9ad06f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,51 +1,92 @@ -# Contributing +Contributing +------------ + +From adding an issue for a documentation suggestion to creating a pull request: every +contribution is appreciated and welcome. If you're planning to implement a new section or +page please create an issue first. -From adding an issue for a documentation suggestion to creating a pull request: every contribution is appreciated and welcome. If you're planning to implement a new section or page please create an issue first. ## Setup -* Install [Node.js](https://nodejs.org/) if you have not already. - *Note: Node 6.9.* is required for "best results".*. Node 7 may have issues! -* Fork the **webpack.js.org** repo at [https://github.com/webpack/webpack.js.org](https://github.com/webpack/webpack.js.org). -* `git clone && cd webpack.js.org` -* `npm install` -* `npm run build` -* `npm start` -* Visit [http://localhost:3000](http://localhost:3000) to preview your changes before making a pull request. +Start by ensuring you have Node installed and forking the repository: + +- Install [Node.js][1] if you have not already. +- Fork the **webpack.js.org** repo from [the main repository][2]. +- `git clone && cd webpack.js.org` + +Once you are in the project directory, run the following commands: + +- `npm install` to pull all dependencies. +- `npm run build` to create a production version of the site. +- `npm start` to develop on a local webpack-dev-server: [localhost:3000][3]. +- `npm run fetch` to retrieve external documentation/data. + +The final command, `npm run fetch`, is optional as both `npm run build` and `npm start` +will do this automatically. This step pulls in documentation for loaders/plugins hosted +in separate repositories such as the ones found in the [webpack-contrib][4] organization. +See the `package.json` for the full list of `scripts`. + +> Note that __Node 6.9.x__ or above is required for the build process to run properly. + ## Contributor License Agreement -When submitting your contribution, a CLA (Contributor License Agreement) bot will come by to verify that you signed the CLA. If it is your first time, it will link you to the right place to sign it. However, if you have committed your contributions using an email that is not the same as your email used on GitHub, the CLA bot can't accept your contribution. +When submitting your contribution, a CLA (Contributor License Agreement) bot will come by +to verify that you signed the CLA. If it is your first time, it will link you to the right +place to sign it. However, if you have committed your contributions using an email that is +not the same as your email used on GitHub, the CLA bot can't accept your contribution. + +Run `git config user.email` to see your Git email, and verify it with your [GitHub email][5]. -Run `git config user.email` to see your Git email, and verify it with [your GitHub email](https://github.com/settings/emails). ## Editor Config -The [.editorconfig](https://github.com/webpack/webpack.js.org/blob/master/.editorconfig) in the root should ensure consistent formatting. Please make sure you've [installed the plugin](http://editorconfig.org/#download) if your text editor needs one. +The [.editorconfig][6] in the root should ensure consistent formatting. Please make sure +you've [installed the plugin][7] if your text editor needs one. + ## Branching Your Changes Making a branch in your fork for your contribution is helpful in the following ways: -* It allows you to have multiple contributions in as PRs at once. -* It allows us to identify what your contribution is about from the branch name. +- It allows you to have multiple contributions in as PRs at once. +- It allows us to identify what your contribution is about from the branch name. + + +## Committing Your Changes + +Please follow the [conventionalcommits][10] specification. For example, for documentation +changes, a short commit message may resemble the following: + +``` md +docs(config): clarify `output.filename` usage +``` + +Note that you can add a body/footer if more details are necessary. Soon we will +start utilizing [`standard-version`][11] for releases/changelog generation. This +will also potentially tie in to having archived docs for each major version. + ## Submitting Changes -After getting some feedback, push to your fork branch and submit a pull request. We may suggest some changes or improvements or alternatives, but for small changes your pull request should be accepted quickly. +After getting some feedback, push to your fork branch and submit a pull request. We may +suggest some changes or improvements or alternatives, but for small changes your pull +request should be accepted and merged fairly quick. + +Issue the PR to the [master][8] branch. -Issue the PR to the [master](https://github.com/webpack/webpack.js.org/tree/master) branch. +> See [GitHub documentation][9] for more help. -> See [GitHub documentation](https://help.github.com/articles/proposing-changes-to-your-work-with-pull-requests/) for more help. -## Contribution Recognition +## Recognition -You can choose to add your GitHub username for recognition at the top of any markdown document you edit: +You can choose to add your GitHub username for recognition at the top of any markdown +document you edit: -**example.md** +__example.md__ ```markdown -=== +--- title: Some Example Page contributors: - TheLarkInn @@ -53,15 +94,29 @@ contributors: - bebraw - Jhnns - SpaceK33z -=== - -## Some Documentation +--- +Some documenation... ``` -This will add your name and GitHub profile photo to the document in production. It's a great way to own the awesome work that you do and we encourage you to do this in your PRs. +This will add your name and GitHub profile photo to the document in production. It's a +great way to own the awesome work that you do and we encourage you to do this in your PRs. + + +## Thank You +webpack is insanely feature rich and documentation is a huge time sink. We greatly appreciate +any time spent fixing typos or clarifying sections in the documentation. -## Thank you -webpack is insanely feature rich and documentation is a huge time sink. We greatly appreciate any time spent fixing typos or clarifying sections in the documentation. +[1]: https://nodejs.org/ +[2]: https://github.com/webpack/webpack.js.org +[3]: http://localhost:3000/ +[4]: https://github.com/webpack-contrib +[5]: https://github.com/settings/emails +[6]: https://github.com/webpack/webpack.js.org/blob/master/.editorconfig +[7]: http://editorconfig.org/#download +[8]: https://github.com/webpack/webpack.js.org/tree/master +[9]: https://help.github.com/articles/proposing-changes-to-your-work-with-pull-requests/ +[10]: http://conventionalcommits.org/ +[11]: https://github.com/conventional-changelog/standard-version diff --git a/README.md b/README.md index 523053d3d123..f57e5244a02e 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,48 @@ -[![build status](https://secure.travis-ci.org/webpack/webpack.js.org.svg)](http://travis-ci.org/webpack/webpack.js.org) +webpack.js.org +-------------- -# webpack.js.org +[![build status](https://secure.travis-ci.org/webpack/webpack.js.org.svg)](http://travis-ci.org/webpack/webpack.js.org) +[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version) Guides, documentation, and all things webpack. -## Contributing - -To develop, please pull the project, `cd` into the directory and run: -- `npm install` to pull all dependencies. -- `npm run build` to create a production version of the site. -- `npm start` to develop on a local webpack-dev-server (should be [here](http://localhost:3000/)). +## Content Progress -If you want to fetch the documentation on additional loaders/plugins hosted in [separate repositories](https://github.com/webpack), run `npm run fetch`. +Now that we've covered much of the backlog of _missing documentation_, we are starting +to heavily review each section of the site's content to sort and structure it appropriately. +The following issues should provide a pretty good idea of where things are, and where +they are going: -For more information see the [contributors page](https://github.com/webpack/webpack.js.org/blob/master/.github/CONTRIBUTING.md) +- [Guides - Review and Simplify][1] +- [Concepts - Review, Organize, Define Clear Goals][2] -## Content Progress +We haven't created issues for the other sections yet but they will be coming soon. For +dev-related work please see [General - Current Longterm Plan][3], which will soon be +replaced by a more dev-specific issue. -Check out the [MVP Milestone](https://github.com/webpack/webpack.js.org/milestones) for the current status. ## Translation -If you hope to localize this documentation please transit to [translate branch](https://github.com/webpack/webpack.js.org/tree/translation). +If you hope to localize this documentation please jump to the [translate branch][4]. + + +## Contributing + +Read throug the [writer's guide][7] if you're interested in editing the conent on this +site. See the [contributors page][5] to learn how to set up and start working on the site +locally. + ## License -The content is available under [Creative Commons BY 4.0](https://creativecommons.org/licenses/by/4.0/) license. +The content is available under the [Creative Commons BY 4.0][6] license. + + +[1]: https://github.com/webpack/webpack.js.org/issues/1258 +[2]: https://github.com/webpack/webpack.js.org/issues/1386 +[3]: https://github.com/webpack/webpack.js.org/issues/1380 +[4]: https://github.com/webpack/webpack.js.org/tree/translation +[5]: https://github.com/webpack/webpack.js.org/blob/master/.github/CONTRIBUTING.md +[6]: https://creativecommons.org/licenses/by/4.0/ +[7]: https://webpack.js.org/writers-guide diff --git a/content/writers-guide.md b/content/writers-guide.md index aaa355ab82d0..0a8c9e2086de 100644 --- a/content/writers-guide.md +++ b/content/writers-guide.md @@ -48,18 +48,18 @@ Note that `related` will generate a __Further Reading__ section at the bottom of ## Typesetting -* webpack should always be written in lower-case letters. Even at the beginning of a sentence. ([source](https://github.com/webpack/media#name)) -* loaders are enclosed in backticks and [kebab-cased](https://en.wikipedia.org/w/index.php?title=Kebab_case): `css-loader`, `ts-loader`, … -* plugins are enclosed in backticks and [camel-cased](https://en.wikipedia.org/wiki/Camel_case): `BannerPlugin`, `NpmInstallWebpackPlugin`, … -* Use "webpack 2" to refer to a specific webpack version (~~"webpack v2"~~) -* Use ES5; ES2015, ES2016, … to refer to the ECMAScript standards (~~ES6~~, ~~ES7~~) +- webpack should always be written in lower-case letters. Even at the beginning of a sentence. ([source](https://github.com/webpack/media#name)) +- loaders are enclosed in backticks and [kebab-cased](https://en.wikipedia.org/w/index.php?title=Kebab_case): `css-loader`, `ts-loader`, … +- plugins are enclosed in backticks and [camel-cased](https://en.wikipedia.org/wiki/Camel_case): `BannerPlugin`, `NpmInstallWebpackPlugin`, … +- Use "webpack 2" to refer to a specific webpack version (~~"webpack v2"~~) +- Use ES5; ES2015, ES2016, … to refer to the ECMAScript standards (~~ES6~~, ~~ES7~~) ## Formatting ### Code -**Syntax: \`\`\`javascript … \`\`\`** +__Syntax: \`\`\`javascript … \`\`\`__ ```javascript function foo () { @@ -71,19 +71,19 @@ foo(); ### Lists -* Boo -* Foo -* Zoo +- Boo +- Foo +- Zoo Lists should be ordered alphabetically. ### Tables -| Parameter | Explanation | Input type | Default value | -|------------|--------------------------------------------------|------------|---------------| -| --debug | Switch loaders to debug mode | boolean | false | -| --devtool | Define source map type for the bundled resources | string | - | -| --progress | Print compilation progress in percentage | boolean | false | +Parameter | Explanation | Input Type | Default Value +----------- | ------------------------------------------------ | ---------- |-------------- +--debug | Switch loaders to debug mode | boolean | false +--devtool | Define source map type for the bundled resources | string | - +--progress | Print compilation progress in percentage | boolean | false Same goes for tables. From 00c6076ab5e7aa4212522aeab9d7c6052476ffdd Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 00:32:42 -0400 Subject: [PATCH 29/61] docs(templates): update issue and pr templates Simplify these templates to highlight the fact that they should be quickly skimmed and then deleted. --- .github/ISSUE_TEMPLATE.md | 6 ++++-- .github/PULL_REQUEST_TEMPLATE.md | 14 ++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 2dc83d2122b7..fa6f49039a4a 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,2 +1,4 @@ -1. Check the existing issues to see if you can find something matching to your request. -2. If you didn't find a relevant issue, go ahead and open a new one. It's better to make small typo fixes and such directly as pull requests. +- [ ] Check the current issues to ensure you aren't creating a duplicate. +- [ ] Consider making small typo fixes and such directly as pull requests. +- [ ] No existing issue? Go ahead and open a new one. +- __Remove these instructions from your PR as they are for your eyes only.__ diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b8e9b90dd0ec..13b0a35a860f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,10 @@ -1. [Read and sign the CLA](https://cla.js.foundation/webpack/webpack.js.org). This needs to be done only once. PRs that haven't signed it won't be accepted. -2. Make sure your PR complies with [the writer's guide](https://webpack.js.org/writers-guide/). -3. Read through the PR diff carefully as sometimes this can reveal issues. The work will be reviewed, but this can save some effort. -4. Remove these instructions from your PR as they are for your eyes only. +_describe your changes..._ + +- [ ] Read and sign the [CLA][1]. PRs that haven't signed it won't be accepted. +- [ ] Make sure your PR complies with the [writer's guide][2]. +- [ ] Review the diff carefully as sometimes this can reveal issues. +- __Remove these instructions from your PR as they are for your eyes only.__ + + +[1]: https://cla.js.foundation/webpack/webpack.js.org +[2]: https://webpack.js.org/content/writers-guide/ From 7b9ae88314803a2be3880147db6e33a914615175 Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 6 Aug 2017 08:44:15 -0400 Subject: [PATCH 30/61] docs(contributing): fix spelling and update semantics --- .github/CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 1e276a9ad06f..94f80d72ee0e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -96,7 +96,7 @@ contributors: - SpaceK33z --- -Some documenation... +Some documentation... ``` This will add your name and GitHub profile photo to the document in production. It's a @@ -105,7 +105,7 @@ great way to own the awesome work that you do and we encourage you to do this in ## Thank You -webpack is insanely feature rich and documentation is a huge time sink. We greatly appreciate +webpack is a feature rich, low level tool and documentation is a huge time sink. We appreciate any time spent fixing typos or clarifying sections in the documentation. From fa7618352b45f5ea151898e4a598432fb007eb3c Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Wed, 9 Aug 2017 07:59:29 -0400 Subject: [PATCH 31/61] refactor(tests): fix check-links.js change The logic was a bit off here with my ignore `img.shields.io` change so I refactored to make clear exclusion conditions. --- scripts/check-links.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/scripts/check-links.js b/scripts/check-links.js index b40f1cef41e3..291f64302e01 100755 --- a/scripts/check-links.js +++ b/scripts/check-links.js @@ -23,12 +23,10 @@ function checkLinks(args) { tap.on('complete', function(res) { const failures = res.failures.filter(failure => { - return ( - !failure.diag || - !failure.diag.at || - !failure.diag.at.match(/class="support__[^"]*"/) || - !failure.diag.at.match(/src="https:\/\/img\.shields\.io[^"]*"/) - ); + return failure.diag && failure.diag.at ? !( + /class="support__[^"]*"/.test(failure.diag.at) || + /src="https:\/\/img\.shields\.io[^"]*"/.test(failure.diag.at) + ) : false; }); if (failures.length > 0) { From 3f86e4807ad6496b4103096d8bd12016d0b754fd Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Wed, 9 Aug 2017 08:35:15 -0400 Subject: [PATCH 32/61] docs(readme): fix markdown linting --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index f57e5244a02e..a8c696aecf1f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -webpack.js.org --------------- +# webpack.js.org [![build status](https://secure.travis-ci.org/webpack/webpack.js.org.svg)](http://travis-ci.org/webpack/webpack.js.org) [![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version) From e7427e6d326fdee4457120a006c8afc88899427b Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Wed, 9 Aug 2017 22:03:08 -0400 Subject: [PATCH 33/61] docs(code-of-conduct): add contact email --- .github/CODE_OF_CONDUCT.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 8b3ef4b365bf..defdd0ceb34c 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -3,8 +3,8 @@ Code of Conduct At webpack and all webpack/webpack-contrib repositories we follow the [JSFoundation Code of Conduct][1]. Please adhere to the guidelines there and -feel free to report any violation of them to the @webpack/core-team or -@webpack/documentation-team. +feel free to report any violation of them to the @webpack/core-team, +@webpack/documentation-team, or . [1]: https://js.foundation/community/code-of-conduct From 13661b9b0efc41d2298fba845e9f9a710ae3e6de Mon Sep 17 00:00:00 2001 From: Greg MacWilliam Date: Thu, 10 Aug 2017 01:01:38 -0400 Subject: [PATCH 34/61] docs(guides): update public-path.md (#1504) Update formatting and grammar in public-path.md. Add a few more details re how this option is used. --- content/guides/public-path.md | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/content/guides/public-path.md b/content/guides/public-path.md index 9d39c333f887..df94f99620fd 100644 --- a/content/guides/public-path.md +++ b/content/guides/public-path.md @@ -7,27 +7,23 @@ contributors: - gonzoyumo --- -webpack has a highly useful configuration that let you specify the base path for -all the assets on your application. It's called `publicPath`. +The `publicPath` configuration option can be quite useful in a variety of scenarios. It allows you to specify the base path for all the assets within your application. -## Use cases -There are a few use cases on real applications where this feature becomes -especially neat. +## Use Cases -### Set value on build time +There are a few use cases in real applications where this feature becomes especially neat. Essentially, every file emitted to your `output.path` directory will be referenced from the `output.publicPath` location. This includes child chunks (created via [code splitting](/guides/code-splitting/)) and any other assets (e.g. images, fonts, etc.) that are a part of your dependency graph. -For development mode what we usually have is an `assets/` folder that lives on -the same level of our index page. This is fine but let's say you want to host -all these static assets on a CDN on your production environment? +### Environment Based -To approach this problem you can easily use a good old environment variable. -Let's say we have a variable `ASSET_PATH`: +In development for example, we might have an `assets/` folder that lives on the same level of our index page. This is fine, but what if we wanted to host all these static assets on a CDN in production? -```js +To approach this problem you can easily use a good old environment variable. Let's say we have a variable `ASSET_PATH`: + +``` js import webpack from 'webpack'; -// Whatever comes as an environment variable, otherwise use root +// Try the environment variable, otherwise use root const ASSET_PATH = process.env.ASSET_PATH || '/'; export default { @@ -44,11 +40,9 @@ export default { }; ``` -### Set value on the fly +### On The Fly -Another possible use case is to set the public path on the fly. webpack exposes -a global variable that let's you do that, it's called `__webpack_public_path__`. -So in your application entry point, you can simply do this: +Another possible use case is to set the `publicPath` on the fly. webpack exposes a global variable called `__webpack_public_path__` that allows you to do that. So, in your application's entry point, you can simply do this: ```js __webpack_public_path__ = process.env.ASSET_PATH; @@ -58,7 +52,7 @@ That's all you need. Since we're already using the `DefinePlugin` on our configuration, `process.env.ASSET_PATH` will always be defined so we can safely do that. -**WARNING:** Be aware that if you use ES6 module imports in your entry file the `__webpack_public_path__` assignment will be done after the imports. In such cases, you'll have to move the public path assignment to its own dedicated module and then import it on top of your entry.js: +W> Be aware that if you use ES6 module imports in your entry file the `__webpack_public_path__` assignment will be done after the imports. In such cases, you'll have to move the public path assignment to its own dedicated module and then import it on top of your entry.js: ```js // entry.js From 2b9b3e48e1f57d03fb03dfff32752ac5d3c0d883 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 11 Aug 2017 02:05:14 +0200 Subject: [PATCH 35/61] docs(guides): add build-performance page (#1506) This adds a solid baseline for how to start improving build performance with specific pointers for development and production. It can be built on in other PRs but probably doesn't need to be synchronized with the earlier guides (as it's a lot of one off changes that depend on your use case). --- content/guides/build-performance.md | 199 ++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 content/guides/build-performance.md diff --git a/content/guides/build-performance.md b/content/guides/build-performance.md new file mode 100644 index 000000000000..048ad816ec69 --- /dev/null +++ b/content/guides/build-performance.md @@ -0,0 +1,199 @@ +--- +title: Build Performance +sort: 17 +contributors: + - sokra +--- + +This guide contains some useful tips for improving build/compilation performance. + +--- + +## General + +The following best practices should help whether or not you are in [development](/guides/development) or building for [production](/guides/production). + + +### Stay Up to Date + +Use the latest webpack version. We are always making performance improvements. The latest stable version of webpack is: + +[![latest webpack version](https://img.shields.io/npm/v/webpack.svg?label=webpack&style=flat-square&maxAge=3600)](https://github.com/webpack/webpack/releases) + +Staying up to date with __Node.js__ can also help with performance. On top of this, keeping your package manager (e.g. `npm` or `yarn`) up to date can also help. Newer versions create more efficient module trees and increase resolving speed. + + +### Loaders + +Apply loaders to the minimal number of modules necessary. Instead of: + +``` js +{ + test: /\.js$/, + loader: "babel-loader" +} +``` + +Use the `include` field to only apply the loader modules that actually need to be transformed by it: + +``` js +{ + test: /\.js$/, + include: path.resolve(__dirname, "src"), + loader: "babel-loader" +} +``` + + +### Bootstrap + +Each additional loader/plugin has a bootup time. Try to use a few different tools are possible. + + +### Resolving + +The following steps can increase the speed of resolving: + +- Minimize the number of items in `resolve.modules`, `resolve.extensions`, `resolve.mainFiles`, `resolve.descriptionFiles` as they increase the number of filesystem calls. +- Set `resolve.symlinks: false` if you don't use symlinks (e.g. `npm link` or `yarn link`). +- Set `resolve.cacheWithContext: false` if you use custom resolving plugins, that are not context specific. + + +### Dlls + +Use the `DllPlugin` to move code that is changed less often into a separate compilation. This will improve the application's compilation speed, although it does increase complexitity of the build process. + + +### Smaller = Faster + +Decrease the total size of the compilation to increase build performance. Try to keep chunks small. + +- Use less/smaller libraries. +- Use the `CommonsChunksPlugin` in Multi-Page Applications. +- Use the `CommonsChunksPlugin` in `async` mode in Multi-Page Applications. +- Remove unused code. +- Only compile the part of the code you are currenly developing on. + + +### Worker Pool + +The `thread-loader` can be used to offload expensive loaders to a worker pool. + +W> Don't use too many workers as there is a boot overhead for the Node.js runtime and the loader. Minimize the module transfers between worker and main process. IPC is expensive. + + +### Persistent cache + +Enable persistent caching with the `cache-loader`. Clear cache directory on `"postinstall"` in `package.json`. + + +### Custom plugins/loaders + +Profile them to not intruduce a performance problem here. + +--- + + +## Development + +The following steps are especially useful in _development_. + + +### Incremental Builds + +Use webpack's watch mode. Don't use other tools to watch your files and invoke webpack. The built in watch mode will keep track of timestamps and passes this information to the compilation for cache invalidation. + +In some setups watching falls back to polling mode. With many watched files this can cause a lot of CPU load. In these cases you can increase the polling interval with `watchOptions.poll`. + + +### Compile in Memory + +The following utilities improve performance by compiling and serving assets in memory rather than writing to disk: + +- `webpack-dev-server` +- `webpack-hot-middleware` +- `webpack-dev-middleware` + + +### Devtool + +Be aware of the performance differences of the different `devtool` settings. + +- `"eval"` has the best performance, but doesn't assist you for transpilied code. +- The `cheap-source-map` variants are more performant, if you can live with the slightly worse mapping quality. +- Use a `eval-source-map` variant for incremental builds. + +=> In most cases `eval-cheap-module-source-map` is the best option. + + +### Avoid Production Specific Tooling + +Certain utilities, plugins and loader only make sense when building for production. For example, it usually doesn't make sense to minify and mangle your code with the `UglifyJsPlugin` while in development. These tools should typically be excluded in development: + +- `UglifyJsPlugin` +- `ExtractTextPlugin` +- `[hash]`/`[chunkhash]` +- `AggressiveSplittingPlugin` +- `AggressiveMergingPlugin` +- `ModuleConcatenationPlugin` + + +### Minimal Entry Chunk + +webpack only emits updated chunks to the filesystem. For some configuration options (HMR, `[name]`/`[chunkhash]` in `output.chunkFilename`, `[hash]`) the entry chunk is invalidated in addition to the changed chunks. + +Make sure the entry chunk is cheap to emit by keeping it small. The following code block extracts a chunk containing only the runtime with _all other chunks as children_: + +``` js +new CommonsChunkPlugin({ + name: "manifest", + minChunks: Infinity +}) +``` + +--- + + +## Production + +The following steps are especially useful in _production_. + +W> __Don't sacrifice the quality of your application for small performance gains!__ Keep in mind that optimization quality is in most cases more important than build performance. + + +### Multiple Compilations + +When using multiple compilations the following tools can help: + +- [`parallel-webpack`](https://github.com/trivago/parallel-webpack): It allows to do compilation in a worker pool. +- `cache-loader`: The cache can be shared between multiple compilations. + + +### Source Maps + +Source maps are really expensive. Do you really need them? + +--- + + +## Specific Tooling Issues + +The following tools have certain problems that can degrade build performance. + + +### Babel + +- Minimize the number of preset/plugins + + +### Typescript + +- Use the `fork-ts-checker-webpack-plugin` for type checking in a separate process. +- Configure loaders to skip typechecking. +- Use the `ts-loader` in `happyPackMode: true` / `transpileOnly: true`. + + +### Sass + +- `node-sass` has a bug which blocks threads from the Node.js threadpool. When using it with the `thread-loader` set `workerParallelJobs: 2`. + From 902ed5f2eca3c6236e94e84f8967d618b088f372 Mon Sep 17 00:00:00 2001 From: Mark Meyer Date: Thu, 10 Aug 2017 20:39:56 -0800 Subject: [PATCH 36/61] docs(target): fix typo causing an extra cell to overflow (#1507) --- content/configuration/target.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/configuration/target.md b/content/configuration/target.md index 6e7db7db1523..b9c8e28f0587 100644 --- a/content/configuration/target.md +++ b/content/configuration/target.md @@ -29,7 +29,7 @@ Option | Description ~~`electron`~~ | Alias for `electron-main` `electron-main` | Compile for [Electron](http://electron.atom.io/) for main process. `electron-renderer` | Compile for [Electron](http://electron.atom.io/) for renderer process, providing a target using `JsonpTemplatePlugin`, `FunctionModulePlugin` for browser environments and `NodeTargetPlugin` and `ExternalsPlugin` for CommonJS and Electron built-in modules. -`node` | Compile for usage in a Node.js-like environment (uses Node.js `require` to load chunks) | +`node` | Compile for usage in a Node.js-like environment (uses Node.js `require` to load chunks) `node-webkit` | Compile for usage in WebKit and uses JSONP for chunk loading. Allows importing of built-in Node.js modules and [`nw.gui`](http://docs.nwjs.io/en/latest/) (experimental) `web` | Compile for usage in a browser-like environment **(default)** `webworker` | Compile as WebWorker From 602d77d28d89ab15e19cf9a46d213d37de070ce9 Mon Sep 17 00:00:00 2001 From: James Gillmore Date: Thu, 10 Aug 2017 21:44:30 -0700 Subject: [PATCH 37/61] docs(api): add eager-weak + notes to module-methods (#1453) Add eager-weak + notes to the `resolveWeak` section of the Module Methods page. The corresponding webpack PR that added this functionality was merged and released: webpack/webpack#5235 --- content/api/module-methods.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/api/module-methods.md b/content/api/module-methods.md index a9b55eba5ba0..15a92974eef8 100644 --- a/content/api/module-methods.md +++ b/content/api/module-methods.md @@ -86,6 +86,7 @@ import( - `"lazy"` (default): Generates a lazy-loadable chunk for each `import()`ed module. - `"lazy-once"`: Generates a single lazy-loadable chunk that can satisfy all calls to `import()`. The chunk will be fetched on the first call to `import()`, and subsequent calls to `import()` will use the same network response. Note that this only makes sense in the case of a partially dynamic statement, e.g. ``import(`./locales/${language}.json`)``, where there are multiple module paths that could potentially be requested. - `"eager"`: Generates no extra chunk. All modules are included in the current chunk and no additional network requests are made. A `Promise` is still returned but is already resolved. In contrast to a static import, the module isn't executed until the call to `import()` is made. +- `"weak"`: Tries to load the module if the module function has already been loaded in some other way (i. e. another chunk imported it or a script containing the module was loaded). A `Promise` is still returned but, only successfully resolves if the chunks are already on the client. If the module is not available, the `Promise` is rejected. A network request will never be performed. This is useful for universal rendering when required chunks are always manually served in initial requests (embedded within the page), but not in cases where app navigation will trigger an import not initially served. T> Note that both options can be combined like so `/* webpackMode: "lazy-once", webpackChunkName: "all-i18n-data" */`. This is parsed as a JSON5 object without curly brackets. @@ -353,4 +354,11 @@ if(__webpack_modules__[require.resolveWeak('module')]) { if(require.cache[require.resolveWeak('module')]) { // Do something when module was loaded before... } + +// You can perform dynamic resolves ("context") +// just as with other require/import methods. +const page = 'Foo'; +__webpack_modules__[require.resolveWeak(`./page/${page}`)] ``` + +T> `require.resolveWeak` is the foundation of *universal rendering* (SSR + Code Splitting), as used in packages such as [react-universal-component](https://github.com/faceyspacey/react-universal-component). It allows code to render synchronously on both the server and initial page-loads on the client. It requires that chunks are manually served or somehow available. It's able to require modules without indicating they should be bundled into a chunk. It's used in conjunction with `import()` which takes over when user navigation triggers additional imports. From 40bf91d90a2374a6a0d4775b1484b220aae3d5f4 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Sat, 12 Aug 2017 05:46:43 +0200 Subject: [PATCH 38/61] docs(config): add `parallelism` option (#1509) Add details for parallelism on the index and __Other Options__ page, with a note that profiling should be used. --- content/configuration/index.md | 3 +++ content/configuration/other-options.md | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/content/configuration/index.md b/content/configuration/index.md index 99cdf46c41ad..ce494d1264e9 100644 --- a/content/configuration/index.md +++ b/content/configuration/index.md @@ -390,6 +390,9 @@ module.exports = { [resolveLoader](/configuration/resolve#resolveloader): { /* same as resolve */ } // separate resolve options for loaders + + [parallelism](other-options#parallelism): 1, // number + // limit the number of parallel processed modules [profile](other-options#profile): true, // boolean // capture timing information diff --git a/content/configuration/other-options.md b/content/configuration/other-options.md index 5062d576bc08..b0a047f21d89 100644 --- a/content/configuration/other-options.md +++ b/content/configuration/other-options.md @@ -84,6 +84,13 @@ Expose custom values into the loader context. ?> Add an example... +## `parallelism` + +`number` + +Limit the number of parallel processed modules. Can be used to fine tune performance or to get more reliable profiling results. + + ## `profile` `boolean` @@ -92,6 +99,8 @@ Capture a "profile" of the application, including statistics and hints, which ca T> Use the [StatsPlugin](https://www.npmjs.com/package/stats-webpack-plugin) for more control over the generated profile. +T> Combine with `parallelism: 1` for better results. + ## `recordsPath` From da6c97b642e73ccc8e85ea885b8b60c0d5f33f31 Mon Sep 17 00:00:00 2001 From: lizhihua <275091674@qq.com> Date: Sun, 13 Aug 2017 21:26:32 +0800 Subject: [PATCH 39/61] update contributors --- content/about.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/about.md b/content/about.md index e14f6f2ef53b..2c1b292b2311 100644 --- a/content/about.md +++ b/content/about.md @@ -12,6 +12,7 @@ contributors: - dingyiming - dear-lizhihua - ellyliang + - fa93hws - hijiangtao - hikerpig - huangtubiao From f7aad7de978412c20ed9eb8520ccabce96041c6e Mon Sep 17 00:00:00 2001 From: lizhihua <275091674@qq.com> Date: Sun, 13 Aug 2017 21:33:51 +0800 Subject: [PATCH 40/61] fix --- content/configuration/configuration-languages.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/configuration/configuration-languages.md b/content/configuration/configuration-languages.md index 0155042c20d0..c6bd92faaa9d 100644 --- a/content/configuration/configuration-languages.md +++ b/content/configuration/configuration-languages.md @@ -19,7 +19,7 @@ webpack 接受以多种编程和数据语言编写的配置文件。支持的文 npm install --save-dev typescript ts-node @types/node @types/webpack ``` -之后就可以使用 typescript 书写 webpack 的配置文件了: +之后就可以使用 TypeScript 书写 webpack 的配置文件了: __webpack.config.ts__ @@ -77,7 +77,7 @@ module.exports = config ## Babel and JSX -在以下的例子中,使用了 JSX ( React 形式的 javascript ) 以及 Babel 来创建 JSON 形式的 webpack 配置文件: +在以下的例子中,使用了 JSX(React 形式的 javascript)以及 Babel 来创建 JSON 形式的 webpack 配置文件: > 感谢 [Jason Miller](https://twitter.com/_developit/status/769583291666169862) @@ -126,7 +126,7 @@ export default ( ); ``` -W> 如果你在其他地方也使用了 babel 并且把`模块(modules)`设置为了 `fales` ,那么你要么同时维护两份单独的 `.babelrc` 文件,要么使用 `conts jsxobj = requrie('jsxojb');` 并且使用 `moduel.exports` 而不是新版本的 `import` 和 `export` 语法。这是因为尽管 node.js 已经支持了不少 ES6 的新语法, 可是 node.js 还是不支持 ES6 的 import 和 export 。 +W> 如果你在其他地方也使用了 babel 并且把`模块(modules)`设置为了 `false`,那么你要么同时维护两份单独的 `.babelrc` 文件,要么使用 `conts jsxobj = requrie('jsxojb');` 并且使用 `moduel.exports` 而不是新版本的 `import` 和 `export` 语法。这是因为尽管 Node.js 已经支持了许多 ES6 的新特性,然而还无法支持 ES6 模块语法。 *** From a2c55313d2a353332b9cf947767b010590110caf Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 13 Aug 2017 14:07:44 -0400 Subject: [PATCH 41/61] fix(plugins): babili has been renamed to babel-minify This fixes the errors found in some other PRs. --- content/plugins/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/plugins/index.md b/content/plugins/index.md index 8f8b9de2189e..e14081c85ca9 100644 --- a/content/plugins/index.md +++ b/content/plugins/index.md @@ -13,7 +13,7 @@ webpack has a rich plugin interface. Most of the features within webpack itself Name | Description -------------------------------------------------------- | ----------- [`AggressiveSplittingPlugin`](/plugins/aggressive-splitting-plugin) | Splits the original chunks into smaller chunks -[`BabiliWebpackPlugin`](/plugins/babili-webpack-plugin) | Babel based minification: [Babili](https://github.com/babel/babili) +[`BabelMinifyWebpackPlugin`](/plugins/babel-minify-webpack-plugin) | Minification with [babel-minify](https://github.com/babel/minify) [`BannerPlugin`](/plugins/banner-plugin) | Add a banner to the top of each generated chunk [`CommonsChunkPlugin`](/plugins/commons-chunk-plugin) | Extract common modules shared between chunks [`ComponentWebpackPlugin`](/plugins/component-webpack-plugin) | Use components with webpack From 5cd03b9959baeb4fba1789af618c6541c9f857da Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Sun, 13 Aug 2017 17:04:45 -0400 Subject: [PATCH 42/61] docs(guides): contenthash => chunkhash in caching (#1517) Correct this error in `output` configuration. Fixes #1512 --- content/guides/caching.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/guides/caching.md b/content/guides/caching.md index cc275dfabc6a..4b20f9373397 100644 --- a/content/guides/caching.md +++ b/content/guides/caching.md @@ -192,7 +192,7 @@ __webpack.config.js__ }) ], output: { - filename: '[name].[contenthash].js', + filename: '[name].[chunkhash].js', path: path.resolve(__dirname, 'dist') } }; @@ -319,7 +319,7 @@ __webpack.config.js__ }) ], output: { - filename: '[name].[contenthash].js', + filename: '[name].[chunkhash].js', path: path.resolve(__dirname, 'dist') } }; From 76b64e084dd4c6f5630ee296187b08821bc7ee08 Mon Sep 17 00:00:00 2001 From: Artem Sapegin Date: Sun, 13 Aug 2017 23:32:23 +0200 Subject: [PATCH 43/61] =?UTF-8?q?docs(pr-template):=20fix=20link=20to=20wr?= =?UTF-8?q?iter=E2=80=99s=20guide=20(#1511)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 13b0a35a860f..199e9e7094fb 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,4 +7,4 @@ _describe your changes..._ [1]: https://cla.js.foundation/webpack/webpack.js.org -[2]: https://webpack.js.org/content/writers-guide/ +[2]: https://webpack.js.org/writers-guide/ From bb42038bc3cf3bb0b093df9a0b37b9a4acb57309 Mon Sep 17 00:00:00 2001 From: Bijan Vakili Date: Sun, 13 Aug 2017 15:12:37 -0700 Subject: [PATCH 44/61] docs(plugins): update dllreferencplugin (#1518) Document absolute path string usage within the `manifest` parameter in the `DllReferencePlugin` options. Fixes #1513 --- content/plugins/dll-plugin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/plugins/dll-plugin.md b/content/plugins/dll-plugin.md index 1ee05e2c15ba..e31b2241eb44 100644 --- a/content/plugins/dll-plugin.md +++ b/content/plugins/dll-plugin.md @@ -36,7 +36,7 @@ Combine this plugin with [`output.library`](/configuration/output/#output-librar This plugin is used in the primary webpack config, it references the dll-only-bundle(s) to require pre-built dependencies. * `context`: (**absolute path**) context of requests in the manifest (or content property) -* `manifest` (object): an object containing `content` and `name` +* `manifest` : an object containing `content` and `name` or a string to the absolute path of the JSON manifest to be loaded upon compilation * `content` (optional): the mappings from request to module id (defaults to `manifest.content`) * `name` (optional): the name where the dll is exposed (defaults to `manifest.name`) (see also [`externals`](/configuration/externals/)) * `scope` (optional): prefix which is used for accessing the content of the dll From 50e3ea75adf155a8614c60c02be37e41d7e85b5d Mon Sep 17 00:00:00 2001 From: Artem Sapegin Date: Mon, 14 Aug 2017 16:32:37 +0200 Subject: [PATCH 45/61] docs(config): remove incorrect note in dev-server (#1523) Remove incorrect note on `clientLogLevel`, more details can be found in this issue: https://github.com/webpack/webpack-dev-server/issues/1038 --- content/configuration/dev-server.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/configuration/dev-server.md b/content/configuration/dev-server.md index 96b296f9b8e0..93220ee83773 100644 --- a/content/configuration/dev-server.md +++ b/content/configuration/dev-server.md @@ -116,8 +116,6 @@ webpack-dev-server --client-log-level none Possible values are `none`, `error`, `warning` or `info` (default). -Note that the console will *always* show bundle errors and warnings. This option only effects the message before it. - ## `devServer.color` - CLI only From 60e5b6d10997f9cf5cd7d82f60ef8d498a47b284 Mon Sep 17 00:00:00 2001 From: Alexey Mikhaylov Date: Mon, 14 Aug 2017 17:38:43 +0300 Subject: [PATCH 46/61] docs(development): update release-process.md (#1522) Add link to releases page. --- content/development/release-process.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/development/release-process.md b/content/development/release-process.md index 2093d320724e..8851866c5eab 100644 --- a/content/development/release-process.md +++ b/content/development/release-process.md @@ -19,4 +19,4 @@ npm version major && git push --follow-tags && npm publish _This will increment the package version, commits the changes, cuts a **local tag**, push to github & publish the npm package._ -After that go to the github releases page and write a Changelog for the new tag. +After that go to the github [releases page](https://github.com/webpack/webpack/releases) and write a Changelog for the new tag. From 843ae40e9d3c65b0a2643a0279f77093d89e801c Mon Sep 17 00:00:00 2001 From: Piper Chester Date: Sun, 20 Aug 2017 14:01:10 -0700 Subject: [PATCH 47/61] docs(comparison): fix possessive "it's" (#1531) --- content/comparison.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/comparison.md b/content/comparison.md index 99fade7beff3..c4916a24504b 100644 --- a/content/comparison.md +++ b/content/comparison.md @@ -57,4 +57,4 @@ X is the length of the path string It's important to note some key differences between _loading_ and _bundling_ modules. A tool like [SystemJS](https://github.com/systemjs/systemjs), which can be found under the hood of [JSPM](https://github.com/jspm/jspm-cli), is used to load and transpile modules at runtime in the browser. This differs significantly from webpack, where modules are transpiled (through "loaders") and bundled before hitting the browser. -Each method has it's advantages and disadvantages. Loading and transpiling modules at runtime can add a lot of overhead for larger sites and applications comprised of many modules. For this reason, SystemJS makes more sense for smaller projects where fewer modules are required. However, this may change a bit as [HTTP/2](https://http2.github.io/) will improve the speed at which files can be transferred from server to client. Note that HTTP/2 doesn't change anything about _transpiling_ modules, which will always take longer when done client-side. +Each method has its advantages and disadvantages. Loading and transpiling modules at runtime can add a lot of overhead for larger sites and applications comprised of many modules. For this reason, SystemJS makes more sense for smaller projects where fewer modules are required. However, this may change a bit as [HTTP/2](https://http2.github.io/) will improve the speed at which files can be transferred from server to client. Note that HTTP/2 doesn't change anything about _transpiling_ modules, which will always take longer when done client-side. From 94cbd1a110c102549f45ff1c148643f5ae2bbfbf Mon Sep 17 00:00:00 2001 From: Chris Chinchilla Date: Sun, 20 Aug 2017 23:08:20 +0200 Subject: [PATCH 48/61] docs(contributing): note python dep (#1524) Mention Python dependency for proselint in the contributing guide. --- .github/CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 94f80d72ee0e..3166e3be370b 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -28,6 +28,8 @@ See the `package.json` for the full list of `scripts`. > Note that __Node 6.9.x__ or above is required for the build process to run properly. +> Note that a __Python version between v2.5.0 and 3.0.0__ is required for the [proselint][12] dependency. + ## Contributor License Agreement @@ -120,3 +122,4 @@ any time spent fixing typos or clarifying sections in the documentation. [9]: https://help.github.com/articles/proposing-changes-to-your-work-with-pull-requests/ [10]: http://conventionalcommits.org/ [11]: https://github.com/conventional-changelog/standard-version +[12]: https://github.com/amperser/proselint From aaf4acd8dcb27ba0352b7db289c97c4b0719ef78 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Mon, 21 Aug 2017 06:52:25 +0900 Subject: [PATCH 49/61] docs(api): update module-methods (#1527) Remove description about `id` 0 as this `module.id` doesn't necessarily mean it is an entry point as it can be affected by various plugins and the `--optimize-module-order` flag. --- content/api/module-methods.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/content/api/module-methods.md b/content/api/module-methods.md index 15a92974eef8..ad57f7d26cbf 100644 --- a/content/api/module-methods.md +++ b/content/api/module-methods.md @@ -126,13 +126,6 @@ require.resolve(dependency: String) Synchronously retrieve a module's ID. The compiler will ensure that the dependency is available in the output bundle. See [`module.id`](/api/module-variables#module-id-commonjs-) for more information. -``` javascript -var id = require.resolve("dependency"); -typeof id === "number"; -id === 0 // if dependency is the entry point -id > 0 // elsewise -``` - W> Module ID is a number in webpack (in contrast to NodeJS where it is a string -- the filename). From 5f646cad5b4761da9eb8ba1d6fa11f7fc424d76b Mon Sep 17 00:00:00 2001 From: lizhihua <275091674@qq.com> Date: Tue, 22 Aug 2017 11:23:03 +0800 Subject: [PATCH 50/61] update contributors --- content/about.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/about.md b/content/about.md index 2c1b292b2311..85cf1a4c49ee 100644 --- a/content/about.md +++ b/content/about.md @@ -13,6 +13,7 @@ contributors: - dear-lizhihua - ellyliang - fa93hws + - guyunxiang - hijiangtao - hikerpig - huangtubiao From 99f2ef46e5fed62f0dd9668595a8489a939a6326 Mon Sep 17 00:00:00 2001 From: Artem Sapegin Date: Tue, 22 Aug 2017 11:19:32 +0200 Subject: [PATCH 51/61] Fix typos https://twitter.com/wSokra/status/899923788397203456 --- content/guides/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/build-performance.md b/content/guides/build-performance.md index 048ad816ec69..d09aff7702e6 100644 --- a/content/guides/build-performance.md +++ b/content/guides/build-performance.md @@ -47,7 +47,7 @@ Use the `include` field to only apply the loader modules that actually need to b ### Bootstrap -Each additional loader/plugin has a bootup time. Try to use a few different tools are possible. +Each additional loader/plugin has a bootup time. Try to use as few different tools as possible. ### Resolving From fd37f672cc157ed33df119424e23cb53a2141dc6 Mon Sep 17 00:00:00 2001 From: Pierre Neter Date: Wed, 23 Aug 2017 08:08:02 +0700 Subject: [PATCH 52/61] refactor(pwa): rename components and move code to /src (#1490) Rename component directories, files and stylesheets. Move app specific code to a `/src` directory. Update all location dependent scripts. Resolve some linting issues -- it seems most of our content actually wasn't picked up by alex prior to these changes. This commit fixes/ignores the new warnings that cropped up. --- .alexrc | 25 ++++++---- .gitignore | 6 +-- .travis.yml | 2 +- antwar.config.js | 44 +++++++++--------- package.json | 8 ++-- scripts/fetch.sh | 23 --------- {assets => src/assets}/ag-grid-logo.png | Bin {assets => src/assets}/awesome-badge.svg | 0 {assets => src/assets}/by.svg | 0 {assets => src/assets}/cc.svg | 0 {assets => src/assets}/favicon.ico | Bin {assets => src/assets}/geomanist-medium.woff | Bin {assets => src/assets}/geomanist-medium.woff2 | Bin {assets => src/assets}/github-logo.svg | 0 {assets => src/assets}/homepage-modules.svg | 0 {assets => src/assets}/icon-square-big.svg | 0 .../assets}/icon-square-small-slack.png | Bin {assets => src/assets}/icon-square-small.svg | 0 {assets => src/assets}/language-icon.svg | 0 {assets => src/assets}/logo-on-dark-bg.svg | 0 {assets => src/assets}/logo-on-white-bg.svg | 0 {assets => src/assets}/site-logo.svg | 0 .../components/Container/Container.jsx | 0 .../components/Container/Container.scss | 0 .../components/Contributors/Contributors.jsx | 2 +- .../components/Contributors/Contributors.scss | 0 .../cube.jsx => src/components/Cube/Cube.jsx | 0 .../components/Cube/Cube.scss | 0 .../components/Dropdown/Dropdown.jsx | 0 .../components/Dropdown/Dropdown.scss | 0 .../components/Footer/Footer.jsx | 6 +-- .../components/Footer/Footer.scss | 0 .../components/Gitter/Gitter.jsx | 0 .../components/Gitter/Gitter.scss | 0 .../link.jsx => src/components/Link/Link.jsx | 0 .../logo.jsx => src/components/Logo/Logo.jsx | 0 .../components/Logo/Logo.scss | 0 .../components/Navigation/Navigation.jsx | 8 ++-- .../components/Navigation/Navigation.scss | 0 .../components/Navigation/Search.scss | 0 .../NotificationBar/NotificationBar.jsx | 2 +- .../NotificationBar/NotificationBar.scss | 0 .../components/Organization/Organization.jsx | 10 ++-- .../components/Organization/Organization.scss | 0 .../components/Organization}/projects.json | 0 .../page.jsx => src/components/Page/Page.jsx | 24 +++++----- .../components/Page/Page.scss | 0 .../components/PageLinks/PageLinks.jsx | 4 +- .../components/PageLinks/PageLinks.scss | 0 .../components/Shield/Shield.jsx | 0 .../components/Sidebar/Sidebar.jsx | 4 +- .../components/Sidebar/Sidebar.scss | 0 .../components/SidebarItem/SidebarItem.jsx | 2 +- .../components/SidebarItem/SidebarItem.scss | 0 .../SidebarMobile/SidebarMobile.jsx | 2 +- .../SidebarMobile/SidebarMobile.scss | 0 .../site.jsx => src/components/Site/Site.jsx | 32 ++++++------- .../components/Site/Site.scss | 0 .../components/Splash/Splash.jsx | 16 +++---- .../components/Splash/Splash.scss | 0 .../components/SplashViz/SplashViz.jsx | 4 +- .../components/SplashViz/SplashViz.scss | 0 .../components/Sponsors/Sponsors.jsx | 2 +- .../components/Sponsors/Sponsors.scss | 0 .../components/StarterKits/StarterKits.jsx | 6 +-- .../components/StarterKits/StarterKits.scss | 0 .../StarterKits/starter-kits-data.json | 1 + .../components/Support/Support.jsx | 2 +- .../components/Support/Support.scss | 0 .../Support}/support-additional.json | 0 src/components/Support/support-backers.json | 1 + src/components/Support/support-sponsors.json | 1 + .../components/TextRotater/TextRotater.jsx | 0 .../components/TextRotater/TextRotater.scss | 0 .../app.jsx => src/components/Vote/App.jsx | 4 +- .../components/Vote/App.scss | 0 .../components/Vote/Button/Button.jsx | 0 .../components/Vote/Button/Button.scss | 0 .../components/Vote/Influence.jsx | 0 .../components/Vote/Influence.scss | 0 .../list.jsx => src/components/Vote/List.jsx | 14 +++--- .../components/Vote/List.scss | 0 .../vote => src/components/Vote}/api.dev.js | 0 .../vote => src/components/Vote}/api.js | 0 {content => src/content}/analyze.md | 0 {content => src/content}/api/cli.md | 0 .../content}/api/hot-module-replacement.md | 2 +- {content => src/content}/api/index.md | 0 {content => src/content}/api/loaders.md | 0 .../content}/api/module-methods.md | 0 .../content}/api/module-variables.md | 0 {content => src/content}/api/node.md | 0 .../content}/api/plugins/compilation.md | 0 .../content}/api/plugins/compiler.md | 0 .../content}/api/plugins/dependency.md | 0 {content => src/content}/api/plugins/index.md | 0 .../content}/api/plugins/module-factories.md | 0 .../content}/api/plugins/parser.md | 0 .../content}/api/plugins/resolver.md | 0 .../content}/api/plugins/tapable.md | 0 .../content}/api/plugins/template.md | 0 {content => src/content}/api/stats.md | 0 {content => src/content}/branding.md | 0 {content => src/content}/comparison.md | 0 .../content}/concepts/configuration.md | 0 .../content}/concepts/dependency-graph.md | 0 .../content}/concepts/entry-points.md | 0 .../concepts/hot-module-replacement.md | 0 {content => src/content}/concepts/index.md | 0 {content => src/content}/concepts/loaders.md | 0 {content => src/content}/concepts/manifest.md | 2 +- .../content}/concepts/module-resolution.md | 0 {content => src/content}/concepts/modules.md | 0 {content => src/content}/concepts/output.md | 0 {content => src/content}/concepts/plugins.md | 0 {content => src/content}/concepts/targets.md | 0 .../configuration/configuration-languages.md | 0 .../configuration/configuration-types.md | 0 .../content}/configuration/dev-server.md | 10 ++-- .../content}/configuration/devtool.md | 0 .../content}/configuration/entry-context.md | 0 .../content}/configuration/externals.md | 0 .../content}/configuration/index.md | 0 .../content}/configuration/module.md | 0 .../content}/configuration/node.md | 0 .../content}/configuration/other-options.md | 0 .../content}/configuration/output.md | 0 .../content}/configuration/performance.md | 0 .../content}/configuration/plugins.md | 0 .../content}/configuration/resolve.md | 0 .../content}/configuration/stats.md | 0 .../content}/configuration/target.md | 0 .../content}/configuration/watch.md | 0 .../development/how-to-write-a-loader.md | 0 .../development/how-to-write-a-plugin.md | 0 {content => src/content}/development/index.md | 0 .../content}/development/plugin-patterns.md | 0 .../content}/development/release-process.md | 0 {content => src/content}/glossary.md | 0 .../content}/guides/asset-management.md | 0 .../content}/guides/author-libraries.md | 0 .../content}/guides/build-performance.md | 0 {content => src/content}/guides/caching.md | 0 .../content}/guides/code-splitting.md | 0 .../content}/guides/dependency-management.md | 0 .../content}/guides/development-vagrant.md | 0 .../content}/guides/development.md | 0 .../content}/guides/environment-variables.md | 0 .../content}/guides/getting-started.md | 0 .../content}/guides/hot-module-replacement.md | 0 {content => src/content}/guides/index.md | 0 .../content}/guides/installation.md | 0 .../content}/guides/integrations.md | 0 .../content}/guides/lazy-loading.md | 0 {content => src/content}/guides/migrating.md | 0 .../content}/guides/output-management.md | 4 +- {content => src/content}/guides/production.md | 0 .../content}/guides/public-path.md | 0 {content => src/content}/guides/shimming.md | 0 .../content}/guides/tree-shaking.md | 0 {content => src/content}/guides/typescript.md | 0 {content => src/content}/index.md | 0 {content => src/content}/license.md | 0 {content => src/content}/loaders/index.md | 0 .../plugins/aggressive-splitting-plugin.md | 0 .../content}/plugins/banner-plugin.md | 0 .../content}/plugins/commons-chunk-plugin.md | 0 .../plugins/context-replacement-plugin.md | 0 .../content}/plugins/define-plugin.md | 0 .../content}/plugins/dll-plugin.md | 0 .../content}/plugins/environment-plugin.md | 0 .../plugins/hashed-module-ids-plugin.md | 0 .../plugins/hot-module-replacement-plugin.md | 0 .../content}/plugins/html-webpack-plugin.md | 0 .../content}/plugins/ignore-plugin.md | 0 {content => src/content}/plugins/index.md | 0 .../plugins/limit-chunk-count-plugin.md | 0 .../content}/plugins/loader-options-plugin.md | 0 .../content}/plugins/min-chunk-size-plugin.md | 0 .../plugins/module-concatenation-plugin.md | 0 .../content}/plugins/named-modules-plugin.md | 0 .../plugins/no-emit-on-errors-plugin.md | 0 .../normal-module-replacement-plugin.md | 0 .../content}/plugins/prefetch-plugin.md | 0 .../content}/plugins/provide-plugin.md | 0 .../plugins/source-map-dev-tool-plugin.md | 0 .../content}/plugins/watch-ignore-plugin.md | 0 {content => src/content}/support/index.md | 0 {content => src/content}/writers-guide.md | 0 {scripts => src/scripts}/check-links.js | 0 {scripts => src/scripts}/deploy.sh | 0 {scripts => src/scripts}/deploy_key.enc | Bin {scripts => src/scripts}/deploy_key.pub | 0 src/scripts/fetch.sh | 23 +++++++++ .../scripts}/fetch_package_files.js | 0 .../scripts}/fetch_package_names.js | 0 .../scripts}/fetch_starter_kits.js | 2 +- {scripts => src/scripts}/fetch_supporters.js | 4 +- {styles => src/styles}/fonts.scss | 0 {styles => src/styles}/homepage.scss | 0 {styles => src/styles}/icon.font.js | 0 {styles => src/styles}/icon.template.hbs | 0 {styles => src/styles}/icons/chevron-down.svg | 0 {styles => src/styles}/icons/chevron-left.svg | 0 .../styles}/icons/chevron-right.svg | 0 {styles => src/styles}/icons/chevron-up.svg | 0 {styles => src/styles}/icons/cross.svg | 0 {styles => src/styles}/icons/edit.svg | 0 {styles => src/styles}/icons/exit-right.svg | 0 {styles => src/styles}/icons/github.svg | 0 {styles => src/styles}/icons/gitter.svg | 0 {styles => src/styles}/icons/link.svg | 0 .../styles}/icons/magnifying-glass.svg | 0 {styles => src/styles}/icons/medium.svg | 0 {styles => src/styles}/icons/menu.svg | 0 .../styles}/icons/stack-overflow.svg | 0 {styles => src/styles}/icons/vertical-bar.svg | 0 {styles => src/styles}/index.scss | 0 {styles => src/styles}/markdown.scss | 0 .../styles}/partials/_functions.scss | 0 {styles => src/styles}/partials/_mixins.scss | 0 {styles => src/styles}/partials/_vars.scss | 0 {styles => src/styles}/prism-theme.scss | 0 {styles => src/styles}/reset.css | 0 {utilities => src/utilities}/highlight.js | 0 {utilities => src/utilities}/markdown.js | 0 .../utilities}/test-local-storage.js | 0 webpack.config.js | 10 ++-- yarn.lock | 4 +- 229 files changed, 162 insertions(+), 154 deletions(-) delete mode 100755 scripts/fetch.sh rename {assets => src/assets}/ag-grid-logo.png (100%) rename {assets => src/assets}/awesome-badge.svg (100%) rename {assets => src/assets}/by.svg (100%) rename {assets => src/assets}/cc.svg (100%) rename {assets => src/assets}/favicon.ico (100%) rename {assets => src/assets}/geomanist-medium.woff (100%) mode change 100755 => 100644 rename {assets => src/assets}/geomanist-medium.woff2 (100%) mode change 100755 => 100644 rename {assets => src/assets}/github-logo.svg (100%) rename {assets => src/assets}/homepage-modules.svg (100%) rename {assets => src/assets}/icon-square-big.svg (100%) rename {assets => src/assets}/icon-square-small-slack.png (100%) rename {assets => src/assets}/icon-square-small.svg (100%) rename {assets => src/assets}/language-icon.svg (100%) rename {assets => src/assets}/logo-on-dark-bg.svg (100%) rename {assets => src/assets}/logo-on-white-bg.svg (100%) rename {assets => src/assets}/site-logo.svg (100%) rename components/container/container.jsx => src/components/Container/Container.jsx (100%) rename components/container/container-style.scss => src/components/Container/Container.scss (100%) rename components/contributors/contributors.jsx => src/components/Contributors/Contributors.jsx (95%) rename components/contributors/contributors-style.scss => src/components/Contributors/Contributors.scss (100%) rename components/cube/cube.jsx => src/components/Cube/Cube.jsx (100%) rename components/cube/cube-style.scss => src/components/Cube/Cube.scss (100%) rename components/dropdown/dropdown.jsx => src/components/Dropdown/Dropdown.jsx (100%) rename components/dropdown/dropdown-style.scss => src/components/Dropdown/Dropdown.scss (100%) rename components/footer/footer.jsx => src/components/Footer/Footer.jsx (93%) rename components/footer/footer-style.scss => src/components/Footer/Footer.scss (100%) rename components/gitter/gitter.jsx => src/components/Gitter/Gitter.jsx (100%) rename components/gitter/gitter-style.scss => src/components/Gitter/Gitter.scss (100%) rename components/link/link.jsx => src/components/Link/Link.jsx (100%) rename components/logo/logo.jsx => src/components/Logo/Logo.jsx (100%) rename components/logo/logo-style.scss => src/components/Logo/Logo.scss (100%) rename components/navigation/navigation.jsx => src/components/Navigation/Navigation.jsx (97%) rename components/navigation/navigation-style.scss => src/components/Navigation/Navigation.scss (100%) rename components/navigation/search-style.scss => src/components/Navigation/Search.scss (100%) rename components/notification-bar/notification-bar.jsx => src/components/NotificationBar/NotificationBar.jsx (97%) rename components/notification-bar/notification-bar-style.scss => src/components/NotificationBar/NotificationBar.scss (100%) rename components/organization/organization.jsx => src/components/Organization/Organization.jsx (91%) rename components/organization/organization-style.scss => src/components/Organization/Organization.scss (100%) rename {components/organization => src/components/Organization}/projects.json (100%) rename components/page/page.jsx => src/components/Page/Page.jsx (73%) rename components/page/page-style.scss => src/components/Page/Page.scss (100%) rename components/page-links/page-links.jsx => src/components/PageLinks/PageLinks.jsx (94%) rename components/page-links/page-links-style.scss => src/components/PageLinks/PageLinks.scss (100%) rename components/shield/shield.jsx => src/components/Shield/Shield.jsx (100%) rename components/sidebar/sidebar.jsx => src/components/Sidebar/Sidebar.jsx (96%) rename components/sidebar/sidebar-style.scss => src/components/Sidebar/Sidebar.scss (100%) rename components/sidebar-item/sidebar-item.jsx => src/components/SidebarItem/SidebarItem.jsx (98%) rename components/sidebar-item/sidebar-item-style.scss => src/components/SidebarItem/SidebarItem.scss (100%) rename components/sidebar-mobile/sidebar-mobile.jsx => src/components/SidebarMobile/SidebarMobile.jsx (99%) rename components/sidebar-mobile/sidebar-mobile-style.scss => src/components/SidebarMobile/SidebarMobile.scss (100%) rename components/site/site.jsx => src/components/Site/Site.jsx (62%) rename components/site/site-style.scss => src/components/Site/Site.scss (100%) rename components/splash/splash.jsx => src/components/Splash/Splash.jsx (78%) rename components/splash/splash-style.scss => src/components/Splash/Splash.scss (100%) rename components/splash-viz/splash-viz.jsx => src/components/SplashViz/SplashViz.jsx (89%) rename components/splash-viz/splash-viz-style.scss => src/components/SplashViz/SplashViz.scss (100%) rename components/sponsors/sponsors.jsx => src/components/Sponsors/Sponsors.jsx (95%) rename components/sponsors/sponsors-style.scss => src/components/Sponsors/Sponsors.scss (100%) rename components/starter-kits/starter-kits.jsx => src/components/StarterKits/StarterKits.jsx (96%) rename components/starter-kits/starter-kits-style.scss => src/components/StarterKits/StarterKits.scss (100%) create mode 100644 src/components/StarterKits/starter-kits-data.json rename components/support/support.jsx => src/components/Support/Support.jsx (99%) rename components/support/support-style.scss => src/components/Support/Support.scss (100%) rename {components/support => src/components/Support}/support-additional.json (100%) create mode 100644 src/components/Support/support-backers.json create mode 100644 src/components/Support/support-sponsors.json rename components/text-rotater/text-rotater.jsx => src/components/TextRotater/TextRotater.jsx (100%) rename components/text-rotater/text-rotater-style.scss => src/components/TextRotater/TextRotater.scss (100%) rename components/vote/app.jsx => src/components/Vote/App.jsx (99%) rename components/vote/app-style.scss => src/components/Vote/App.scss (100%) rename components/vote/button/button.jsx => src/components/Vote/Button/Button.jsx (100%) rename components/vote/button/button-style.scss => src/components/Vote/Button/Button.scss (100%) rename components/vote/influence.jsx => src/components/Vote/Influence.jsx (100%) rename components/vote/influence-style.scss => src/components/Vote/Influence.scss (100%) rename components/vote/list.jsx => src/components/Vote/List.jsx (67%) rename components/vote/list-style.scss => src/components/Vote/List.scss (100%) rename {components/vote => src/components/Vote}/api.dev.js (100%) rename {components/vote => src/components/Vote}/api.js (100%) rename {content => src/content}/analyze.md (100%) rename {content => src/content}/api/cli.md (100%) rename {content => src/content}/api/hot-module-replacement.md (94%) rename {content => src/content}/api/index.md (100%) rename {content => src/content}/api/loaders.md (100%) rename {content => src/content}/api/module-methods.md (100%) rename {content => src/content}/api/module-variables.md (100%) rename {content => src/content}/api/node.md (100%) rename {content => src/content}/api/plugins/compilation.md (100%) rename {content => src/content}/api/plugins/compiler.md (100%) rename {content => src/content}/api/plugins/dependency.md (100%) rename {content => src/content}/api/plugins/index.md (100%) rename {content => src/content}/api/plugins/module-factories.md (100%) rename {content => src/content}/api/plugins/parser.md (100%) rename {content => src/content}/api/plugins/resolver.md (100%) rename {content => src/content}/api/plugins/tapable.md (100%) rename {content => src/content}/api/plugins/template.md (100%) rename {content => src/content}/api/stats.md (100%) rename {content => src/content}/branding.md (100%) rename {content => src/content}/comparison.md (100%) rename {content => src/content}/concepts/configuration.md (100%) rename {content => src/content}/concepts/dependency-graph.md (100%) rename {content => src/content}/concepts/entry-points.md (100%) rename {content => src/content}/concepts/hot-module-replacement.md (100%) rename {content => src/content}/concepts/index.md (100%) rename {content => src/content}/concepts/loaders.md (100%) rename {content => src/content}/concepts/manifest.md (90%) rename {content => src/content}/concepts/module-resolution.md (100%) rename {content => src/content}/concepts/modules.md (100%) rename {content => src/content}/concepts/output.md (100%) rename {content => src/content}/concepts/plugins.md (100%) rename {content => src/content}/concepts/targets.md (100%) rename {content => src/content}/configuration/configuration-languages.md (100%) rename {content => src/content}/configuration/configuration-types.md (100%) rename {content => src/content}/configuration/dev-server.md (98%) rename {content => src/content}/configuration/devtool.md (100%) rename {content => src/content}/configuration/entry-context.md (100%) rename {content => src/content}/configuration/externals.md (100%) rename {content => src/content}/configuration/index.md (100%) rename {content => src/content}/configuration/module.md (100%) rename {content => src/content}/configuration/node.md (100%) rename {content => src/content}/configuration/other-options.md (100%) rename {content => src/content}/configuration/output.md (100%) rename {content => src/content}/configuration/performance.md (100%) rename {content => src/content}/configuration/plugins.md (100%) rename {content => src/content}/configuration/resolve.md (100%) rename {content => src/content}/configuration/stats.md (100%) rename {content => src/content}/configuration/target.md (100%) rename {content => src/content}/configuration/watch.md (100%) rename {content => src/content}/development/how-to-write-a-loader.md (100%) rename {content => src/content}/development/how-to-write-a-plugin.md (100%) rename {content => src/content}/development/index.md (100%) rename {content => src/content}/development/plugin-patterns.md (100%) rename {content => src/content}/development/release-process.md (100%) rename {content => src/content}/glossary.md (100%) rename {content => src/content}/guides/asset-management.md (100%) rename {content => src/content}/guides/author-libraries.md (100%) rename {content => src/content}/guides/build-performance.md (100%) rename {content => src/content}/guides/caching.md (100%) rename {content => src/content}/guides/code-splitting.md (100%) rename {content => src/content}/guides/dependency-management.md (100%) rename {content => src/content}/guides/development-vagrant.md (100%) rename {content => src/content}/guides/development.md (100%) rename {content => src/content}/guides/environment-variables.md (100%) rename {content => src/content}/guides/getting-started.md (100%) rename {content => src/content}/guides/hot-module-replacement.md (100%) rename {content => src/content}/guides/index.md (100%) rename {content => src/content}/guides/installation.md (100%) rename {content => src/content}/guides/integrations.md (100%) rename {content => src/content}/guides/lazy-loading.md (100%) rename {content => src/content}/guides/migrating.md (100%) rename {content => src/content}/guides/output-management.md (95%) rename {content => src/content}/guides/production.md (100%) rename {content => src/content}/guides/public-path.md (100%) rename {content => src/content}/guides/shimming.md (100%) rename {content => src/content}/guides/tree-shaking.md (100%) rename {content => src/content}/guides/typescript.md (100%) rename {content => src/content}/index.md (100%) rename {content => src/content}/license.md (100%) rename {content => src/content}/loaders/index.md (100%) rename {content => src/content}/plugins/aggressive-splitting-plugin.md (100%) rename {content => src/content}/plugins/banner-plugin.md (100%) rename {content => src/content}/plugins/commons-chunk-plugin.md (100%) rename {content => src/content}/plugins/context-replacement-plugin.md (100%) rename {content => src/content}/plugins/define-plugin.md (100%) rename {content => src/content}/plugins/dll-plugin.md (100%) rename {content => src/content}/plugins/environment-plugin.md (100%) rename {content => src/content}/plugins/hashed-module-ids-plugin.md (100%) rename {content => src/content}/plugins/hot-module-replacement-plugin.md (100%) rename {content => src/content}/plugins/html-webpack-plugin.md (100%) rename {content => src/content}/plugins/ignore-plugin.md (100%) rename {content => src/content}/plugins/index.md (100%) rename {content => src/content}/plugins/limit-chunk-count-plugin.md (100%) rename {content => src/content}/plugins/loader-options-plugin.md (100%) rename {content => src/content}/plugins/min-chunk-size-plugin.md (100%) rename {content => src/content}/plugins/module-concatenation-plugin.md (100%) rename {content => src/content}/plugins/named-modules-plugin.md (100%) rename {content => src/content}/plugins/no-emit-on-errors-plugin.md (100%) rename {content => src/content}/plugins/normal-module-replacement-plugin.md (100%) rename {content => src/content}/plugins/prefetch-plugin.md (100%) rename {content => src/content}/plugins/provide-plugin.md (100%) rename {content => src/content}/plugins/source-map-dev-tool-plugin.md (100%) rename {content => src/content}/plugins/watch-ignore-plugin.md (100%) rename {content => src/content}/support/index.md (100%) rename {content => src/content}/writers-guide.md (100%) rename {scripts => src/scripts}/check-links.js (100%) mode change 100755 => 100644 rename {scripts => src/scripts}/deploy.sh (100%) rename {scripts => src/scripts}/deploy_key.enc (100%) rename {scripts => src/scripts}/deploy_key.pub (100%) create mode 100644 src/scripts/fetch.sh rename {scripts => src/scripts}/fetch_package_files.js (100%) mode change 100755 => 100644 rename {scripts => src/scripts}/fetch_package_names.js (100%) mode change 100755 => 100644 rename {scripts => src/scripts}/fetch_starter_kits.js (79%) mode change 100755 => 100644 rename {scripts => src/scripts}/fetch_supporters.js (81%) mode change 100755 => 100644 rename {styles => src/styles}/fonts.scss (100%) rename {styles => src/styles}/homepage.scss (100%) rename {styles => src/styles}/icon.font.js (100%) rename {styles => src/styles}/icon.template.hbs (100%) rename {styles => src/styles}/icons/chevron-down.svg (100%) rename {styles => src/styles}/icons/chevron-left.svg (100%) rename {styles => src/styles}/icons/chevron-right.svg (100%) rename {styles => src/styles}/icons/chevron-up.svg (100%) rename {styles => src/styles}/icons/cross.svg (100%) rename {styles => src/styles}/icons/edit.svg (100%) rename {styles => src/styles}/icons/exit-right.svg (100%) mode change 100755 => 100644 rename {styles => src/styles}/icons/github.svg (100%) rename {styles => src/styles}/icons/gitter.svg (100%) rename {styles => src/styles}/icons/link.svg (100%) mode change 100755 => 100644 rename {styles => src/styles}/icons/magnifying-glass.svg (100%) rename {styles => src/styles}/icons/medium.svg (100%) mode change 100755 => 100644 rename {styles => src/styles}/icons/menu.svg (100%) rename {styles => src/styles}/icons/stack-overflow.svg (100%) mode change 100755 => 100644 rename {styles => src/styles}/icons/vertical-bar.svg (100%) rename {styles => src/styles}/index.scss (100%) rename {styles => src/styles}/markdown.scss (100%) rename {styles => src/styles}/partials/_functions.scss (100%) rename {styles => src/styles}/partials/_mixins.scss (100%) rename {styles => src/styles}/partials/_vars.scss (100%) rename {styles => src/styles}/prism-theme.scss (100%) rename {styles => src/styles}/reset.css (100%) rename {utilities => src/utilities}/highlight.js (100%) rename {utilities => src/utilities}/markdown.js (100%) rename {utilities => src/utilities}/test-local-storage.js (100%) diff --git a/.alexrc b/.alexrc index 6c510021a81b..22e6d90c3208 100644 --- a/.alexrc +++ b/.alexrc @@ -2,23 +2,28 @@ "allow": [ "bigger", "color", - "lies", + "colors", + "crash", + "dead", + "dive", "execute", "executed", "execution", - "host-hostess", + "dirty", "disabled", - "crash", + "failed", "failure", - "period", + "fire", "hook", - "dirty", "host-hostess", - "fire", - "remains", + "hosts", "jade", - "failed", - "white", - "colors" + "laid", + "lies", + "period", + "pros", + "reject", + "remains", + "white" ] } diff --git a/.gitignore b/.gitignore index ee93ba0570cc..bb7872e59383 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ node_modules npm-debug.log build generated -components/support/support-backers.json -components/support/support-sponsors.json -components/starter-kits/starter-kits-data.json +src/components/Support/support-backers.json +src/components/Support/support-sponsors.json +src/components/StarterKits/starter-kits-data.json .antwar diff --git a/.travis.yml b/.travis.yml index 06ad990738bf..1c8c3de13cc2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ language: node_js node_js: - "6" script: - - bash ./scripts/deploy.sh + - bash ./src/scripts/deploy.sh sudo: required install: - npm install --global yarn diff --git a/antwar.config.js b/antwar.config.js index 4cd06e60fd08..38257ba7b14c 100644 --- a/antwar.config.js +++ b/antwar.config.js @@ -1,8 +1,8 @@ var _ = require('lodash'); var path = require('path'); var prevnextPlugin = require('antwar-prevnext-plugin'); -var markdown = require('./utilities/markdown'); -var highlight = require('./utilities/highlight'); +var markdown = require('./src/utilities/markdown'); +var highlight = require('./src/utilities/highlight'); module.exports = { template: { @@ -26,13 +26,13 @@ module.exports = { prevnextPlugin() ], layout: function() { - return require('./components/site/site.jsx').default + return require('./src/components/Site/Site.jsx').default }, paths: { '/': root( function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content', + 'json-loader!yaml-frontmatter-loader!./src/content', false, /^\.\/.*\.md$/ ); @@ -51,7 +51,7 @@ module.exports = { 'Concepts', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/concepts', + 'json-loader!yaml-frontmatter-loader!./src/content/concepts', false, /^\.\/.*\.md$/ ); @@ -62,7 +62,7 @@ module.exports = { 'Guides', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/guides', + 'json-loader!yaml-frontmatter-loader!./src/content/guides', true, /^\.\/.*\.md$/ ); @@ -80,7 +80,7 @@ module.exports = { 'guides/starter-kits': { title: 'Starter Kits', path() { - return require('./components/starter-kits/starter-kits.jsx').default; + return require('./src/components/StarterKits/StarterKits.jsx').default; } }, @@ -88,7 +88,7 @@ module.exports = { 'Development', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/development', + 'json-loader!yaml-frontmatter-loader!./src/content/development', true, /^\.\/.*\.md$/ ); @@ -99,7 +99,7 @@ module.exports = { 'Configuration', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/configuration', + 'json-loader!yaml-frontmatter-loader!./src/content/configuration', false, /^\.\/.*\.md$/ ); @@ -112,7 +112,7 @@ module.exports = { 'API', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/api', + 'json-loader!yaml-frontmatter-loader!./src/content/api', false, /^\.\/.*\.md$/ ); @@ -125,7 +125,7 @@ module.exports = { 'API', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/api/plugins', + 'json-loader!yaml-frontmatter-loader!./src/content/api/plugins', false, /^\.\/.*\.md$/ ); @@ -144,7 +144,7 @@ module.exports = { 'Loaders', function() { const content = require.context( - 'json-loader!yaml-frontmatter-loader!./content/loaders', + 'json-loader!yaml-frontmatter-loader!./src/content/loaders', false, /^\.\/.*\.md$/ ); @@ -161,7 +161,7 @@ module.exports = { 'Plugins', function() { const content = require.context( - 'json-loader!yaml-frontmatter-loader!./content/plugins', + 'json-loader!yaml-frontmatter-loader!./src/content/plugins', false, /^\.\/.*\.md$/ ); @@ -178,7 +178,7 @@ module.exports = { 'Support', function() { return require.context( - 'json-loader!yaml-frontmatter-loader!./content/support', + 'json-loader!yaml-frontmatter-loader!./src/content/support', false, /^\.\/.*\.md$/ ); @@ -187,25 +187,25 @@ module.exports = { vote: { path() { - return require('./components/vote/list.jsx').default + return require('./src/components/Vote/List.jsx').default } }, 'vote/feedback': { path() { - return require('./components/vote/list.jsx').default + return require('./src/components/Vote/List.jsx').default } }, 'vote/moneyDistribution': { path() { - return require('./components/vote/list.jsx').default + return require('./src/components/Vote/List.jsx').default } }, organization: { path() { - return require('./components/organization/organization.jsx').default + return require('./src/components/Organization/Organization.jsx').default } } } @@ -220,10 +220,10 @@ function root(contentCb) { processPage: processPage(), // Process individual page (url, content) layouts: { // Layouts (page/section) index: function() { - return require('./components/splash/splash.jsx').default + return require('./src/components/Splash/Splash.jsx').default }, page: function() { - return require('./components/page/page.jsx').default + return require('./src/components/Page/Page.jsx').default } }, redirects: {} // Redirects : @@ -242,10 +242,10 @@ function section(title, contentCb, redirects = {}) { processPage: processPage(), layouts: { index: function() { - return require('./components/page/page.jsx').default + return require('./src/components/Page/Page.jsx').default }, page: function() { - return require('./components/page/page.jsx').default + return require('./src/components/Page/Page.jsx').default } }, redirects: redirects // : diff --git a/package.json b/package.json index 8f35d22bffc8..174ce267eb6c 100644 --- a/package.json +++ b/package.json @@ -28,14 +28,14 @@ "build": "npm run init:generated && npm run fetch && rm -rf build/ && node ./bootstrap.js && npm run sitemap && echo webpack.js.org > build/CNAME", "build-test": "npm run build && http-server build/", "deploy": "gh-pages -d build", - "fetch": "scripts/fetch.sh", + "fetch": "bash src/scripts/fetch.sh", "init:generated": "mkdirp ./generated/loaders && mkdirp ./generated/plugins ", "lint": "run-s lint:*", - "lint:links": "hyperlink -r build/index.html --canonicalroot https://webpack.js.org/ | ./scripts/check-links.js", + "lint:links": "hyperlink -r build/index.html --canonicalroot https://webpack.js.org/ | node ./src/scripts/check-links.js", "lint:js": "eslint . --ext .js --ext .jsx", - "lint:markdown": "markdownlint --config ./.markdownlint.json *.md ./content/**/*.md", + "lint:markdown": "markdownlint --config ./.markdownlint.json *.md ./src/content/**/*.md", "lint:social": "alex ./**/*.md", - "lint:prose": "cp .proselintrc ~/ && proselint content", + "lint:prose": "cp .proselintrc ~/ && proselint src/content", "test": "npm run lint", "sitemap": "cd build && sitemap-static --prefix=https://webpack.js.org/ > sitemap.xml" }, diff --git a/scripts/fetch.sh b/scripts/fetch.sh deleted file mode 100755 index 5053f487e227..000000000000 --- a/scripts/fetch.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e # Exit with nonzero exit code if anything fails - -rm -rf ./generated -mkdir -p ./generated/loaders -cp -rf ./content/loaders/ ./generated/loaders -mkdir -p ./generated/plugins -cp -rf ./content/plugins/ ./generated/plugins - -# Fetch webpack-contrib (and various other) loader repositories -./scripts/fetch_package_names.js "webpack-contrib" "-loader" | ./scripts/fetch_package_files.js "README.md" "./generated/loaders" -./scripts/fetch_package_names.js "babel" "babel-loader" | ./scripts/fetch_package_files.js "README.md" "./generated/loaders" -./scripts/fetch_package_names.js "postcss" "postcss-loader" | ./scripts/fetch_package_files.js "README.md" "./generated/loaders" -./scripts/fetch_package_names.js "peerigon" "extract-loader" | ./scripts/fetch_package_files.js "README.md" "./generated/loaders" - -# Fetch webpack-contrib (and various other) plugin repositories -./scripts/fetch_package_names.js "webpack-contrib" "-webpack-plugin" | ./scripts/fetch_package_files.js "README.md" "./generated/plugins" - -# Fetch sponsors and backers from opencollective -./scripts/fetch_supporters.js - -# Fetch starter kits -./scripts/fetch_starter_kits.js diff --git a/assets/ag-grid-logo.png b/src/assets/ag-grid-logo.png similarity index 100% rename from assets/ag-grid-logo.png rename to src/assets/ag-grid-logo.png diff --git a/assets/awesome-badge.svg b/src/assets/awesome-badge.svg similarity index 100% rename from assets/awesome-badge.svg rename to src/assets/awesome-badge.svg diff --git a/assets/by.svg b/src/assets/by.svg similarity index 100% rename from assets/by.svg rename to src/assets/by.svg diff --git a/assets/cc.svg b/src/assets/cc.svg similarity index 100% rename from assets/cc.svg rename to src/assets/cc.svg diff --git a/assets/favicon.ico b/src/assets/favicon.ico similarity index 100% rename from assets/favicon.ico rename to src/assets/favicon.ico diff --git a/assets/geomanist-medium.woff b/src/assets/geomanist-medium.woff old mode 100755 new mode 100644 similarity index 100% rename from assets/geomanist-medium.woff rename to src/assets/geomanist-medium.woff diff --git a/assets/geomanist-medium.woff2 b/src/assets/geomanist-medium.woff2 old mode 100755 new mode 100644 similarity index 100% rename from assets/geomanist-medium.woff2 rename to src/assets/geomanist-medium.woff2 diff --git a/assets/github-logo.svg b/src/assets/github-logo.svg similarity index 100% rename from assets/github-logo.svg rename to src/assets/github-logo.svg diff --git a/assets/homepage-modules.svg b/src/assets/homepage-modules.svg similarity index 100% rename from assets/homepage-modules.svg rename to src/assets/homepage-modules.svg diff --git a/assets/icon-square-big.svg b/src/assets/icon-square-big.svg similarity index 100% rename from assets/icon-square-big.svg rename to src/assets/icon-square-big.svg diff --git a/assets/icon-square-small-slack.png b/src/assets/icon-square-small-slack.png similarity index 100% rename from assets/icon-square-small-slack.png rename to src/assets/icon-square-small-slack.png diff --git a/assets/icon-square-small.svg b/src/assets/icon-square-small.svg similarity index 100% rename from assets/icon-square-small.svg rename to src/assets/icon-square-small.svg diff --git a/assets/language-icon.svg b/src/assets/language-icon.svg similarity index 100% rename from assets/language-icon.svg rename to src/assets/language-icon.svg diff --git a/assets/logo-on-dark-bg.svg b/src/assets/logo-on-dark-bg.svg similarity index 100% rename from assets/logo-on-dark-bg.svg rename to src/assets/logo-on-dark-bg.svg diff --git a/assets/logo-on-white-bg.svg b/src/assets/logo-on-white-bg.svg similarity index 100% rename from assets/logo-on-white-bg.svg rename to src/assets/logo-on-white-bg.svg diff --git a/assets/site-logo.svg b/src/assets/site-logo.svg similarity index 100% rename from assets/site-logo.svg rename to src/assets/site-logo.svg diff --git a/components/container/container.jsx b/src/components/Container/Container.jsx similarity index 100% rename from components/container/container.jsx rename to src/components/Container/Container.jsx diff --git a/components/container/container-style.scss b/src/components/Container/Container.scss similarity index 100% rename from components/container/container-style.scss rename to src/components/Container/Container.scss diff --git a/components/contributors/contributors.jsx b/src/components/Contributors/Contributors.jsx similarity index 95% rename from components/contributors/contributors.jsx rename to src/components/Contributors/Contributors.jsx index e114aac1843b..b56a00c73b5e 100644 --- a/components/contributors/contributors.jsx +++ b/src/components/Contributors/Contributors.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import './contributors-style'; +import './Contributors.scss'; export default ({contributors}) => { if (!contributors.length) { diff --git a/components/contributors/contributors-style.scss b/src/components/Contributors/Contributors.scss similarity index 100% rename from components/contributors/contributors-style.scss rename to src/components/Contributors/Contributors.scss diff --git a/components/cube/cube.jsx b/src/components/Cube/Cube.jsx similarity index 100% rename from components/cube/cube.jsx rename to src/components/Cube/Cube.jsx diff --git a/components/cube/cube-style.scss b/src/components/Cube/Cube.scss similarity index 100% rename from components/cube/cube-style.scss rename to src/components/Cube/Cube.scss diff --git a/components/dropdown/dropdown.jsx b/src/components/Dropdown/Dropdown.jsx similarity index 100% rename from components/dropdown/dropdown.jsx rename to src/components/Dropdown/Dropdown.jsx diff --git a/components/dropdown/dropdown-style.scss b/src/components/Dropdown/Dropdown.scss similarity index 100% rename from components/dropdown/dropdown-style.scss rename to src/components/Dropdown/Dropdown.scss diff --git a/components/footer/footer.jsx b/src/components/Footer/Footer.jsx similarity index 93% rename from components/footer/footer.jsx rename to src/components/Footer/Footer.jsx index a88347dc0c91..344058dbd79b 100644 --- a/components/footer/footer.jsx +++ b/src/components/Footer/Footer.jsx @@ -1,10 +1,10 @@ import React from 'react'; -import Link from '../link/link'; -import Container from '../container/container'; +import Link from '../Link/Link'; +import Container from '../Container/Container'; import Icon from '../../assets/icon-square-small.svg'; import CC from '../../assets/cc.svg'; import BY from '../../assets/by.svg'; -import './footer-style'; +import './Footer.scss'; export default (props) => { return ( diff --git a/components/footer/footer-style.scss b/src/components/Footer/Footer.scss similarity index 100% rename from components/footer/footer-style.scss rename to src/components/Footer/Footer.scss diff --git a/components/gitter/gitter.jsx b/src/components/Gitter/Gitter.jsx similarity index 100% rename from components/gitter/gitter.jsx rename to src/components/Gitter/Gitter.jsx diff --git a/components/gitter/gitter-style.scss b/src/components/Gitter/Gitter.scss similarity index 100% rename from components/gitter/gitter-style.scss rename to src/components/Gitter/Gitter.scss diff --git a/components/link/link.jsx b/src/components/Link/Link.jsx similarity index 100% rename from components/link/link.jsx rename to src/components/Link/Link.jsx diff --git a/components/logo/logo.jsx b/src/components/Logo/Logo.jsx similarity index 100% rename from components/logo/logo.jsx rename to src/components/Logo/Logo.jsx diff --git a/components/logo/logo-style.scss b/src/components/Logo/Logo.scss similarity index 100% rename from components/logo/logo-style.scss rename to src/components/Logo/Logo.scss diff --git a/components/navigation/navigation.jsx b/src/components/Navigation/Navigation.jsx similarity index 97% rename from components/navigation/navigation.jsx rename to src/components/Navigation/Navigation.jsx index 0a4be42aa82e..a100f56f0370 100644 --- a/components/navigation/navigation.jsx +++ b/src/components/Navigation/Navigation.jsx @@ -1,8 +1,8 @@ import React from 'react'; -import Link from '../link/link'; -import Container from '../container/container'; -import Logo from '../logo/logo'; -import Dropdown from '../dropdown/dropdown'; +import Link from '../Link/Link'; +import Container from '../Container/Container'; +import Logo from '../Logo/Logo'; +import Dropdown from '../Dropdown/Dropdown'; // TODO: Maybe by updating the routing scheme later on we can avoid hardcoding this? let Sections = [ diff --git a/components/navigation/navigation-style.scss b/src/components/Navigation/Navigation.scss similarity index 100% rename from components/navigation/navigation-style.scss rename to src/components/Navigation/Navigation.scss diff --git a/components/navigation/search-style.scss b/src/components/Navigation/Search.scss similarity index 100% rename from components/navigation/search-style.scss rename to src/components/Navigation/Search.scss diff --git a/components/notification-bar/notification-bar.jsx b/src/components/NotificationBar/NotificationBar.jsx similarity index 97% rename from components/notification-bar/notification-bar.jsx rename to src/components/NotificationBar/NotificationBar.jsx index 0a05b7f6939d..d75719b8265b 100644 --- a/components/notification-bar/notification-bar.jsx +++ b/src/components/NotificationBar/NotificationBar.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import Container from '../container/container'; +import Container from '../Container/Container'; import testLocalStorage from '../../utilities/test-local-storage'; const version = '1'; diff --git a/components/notification-bar/notification-bar-style.scss b/src/components/NotificationBar/NotificationBar.scss similarity index 100% rename from components/notification-bar/notification-bar-style.scss rename to src/components/NotificationBar/NotificationBar.scss diff --git a/components/organization/organization.jsx b/src/components/Organization/Organization.jsx similarity index 91% rename from components/organization/organization.jsx rename to src/components/Organization/Organization.jsx index 6641561221b6..544916606c89 100644 --- a/components/organization/organization.jsx +++ b/src/components/Organization/Organization.jsx @@ -1,10 +1,10 @@ import React from 'react'; -import Container from '../container/container'; -import Contributors from '../contributors/contributors'; -import Link from '../link/link'; -import Shield from '../shield/shield'; +import Container from '../Container/Container'; +import Contributors from '../Contributors/Contributors'; +import Link from '../Link/Link'; +import Shield from '../Shield/Shield'; import Items from './projects.json'; -import './organization-style'; +import './Organization.scss'; export default props => { return ( diff --git a/components/organization/organization-style.scss b/src/components/Organization/Organization.scss similarity index 100% rename from components/organization/organization-style.scss rename to src/components/Organization/Organization.scss diff --git a/components/organization/projects.json b/src/components/Organization/projects.json similarity index 100% rename from components/organization/projects.json rename to src/components/Organization/projects.json diff --git a/components/page/page.jsx b/src/components/Page/Page.jsx similarity index 73% rename from components/page/page.jsx rename to src/components/Page/Page.jsx index e2216e8f631b..3acd5ba592a0 100644 --- a/components/page/page.jsx +++ b/src/components/Page/Page.jsx @@ -1,15 +1,15 @@ import React from 'react'; import Interactive from 'antwar-interactive'; -import Container from '../container/container'; -import Sidebar from '../sidebar/sidebar'; -import PageLinks from '../page-links/page-links'; -import Gitter from '../gitter/gitter'; -import Contributors from '../contributors/contributors'; -import Sponsors from '../sponsors/sponsors'; -import './page-style'; -import '../sidebar/sidebar-style'; -import '../sponsors/sponsors-style'; -import '../gitter/gitter-style'; +import Container from '../Container/Container'; +import Sidebar from '../Sidebar/Sidebar'; +import PageLinks from '../PageLinks/PageLinks'; +import Gitter from '../Gitter/Gitter'; +import Contributors from '../Contributors/Contributors'; +import Sponsors from '../Sponsors/Sponsors'; +import './Page.scss'; +import '../Sidebar/Sidebar.scss'; +import '../Sponsors/Sponsors.scss'; +import '../Gitter/Gitter.scss'; export default ({ section, page }) => ( @@ -17,7 +17,7 @@ export default ({ section, page }) => ( ({ @@ -65,7 +65,7 @@ export default ({ section, page }) => ( ) : null } diff --git a/components/page/page-style.scss b/src/components/Page/Page.scss similarity index 100% rename from components/page/page-style.scss rename to src/components/Page/Page.scss diff --git a/components/page-links/page-links.jsx b/src/components/PageLinks/PageLinks.jsx similarity index 94% rename from components/page-links/page-links.jsx rename to src/components/PageLinks/PageLinks.jsx index dc07c6768483..8814a5093109 100644 --- a/components/page-links/page-links.jsx +++ b/src/components/PageLinks/PageLinks.jsx @@ -1,12 +1,12 @@ import React from 'react'; import TrimEnd from 'lodash/trimEnd'; -import './page-links-style'; +import './PageLinks.scss'; export default ({ section = '', page = {} }) => { - let baseURL = 'https://github.com/webpack/webpack.js.org/edit/master/content'; + let baseURL = 'https://github.com/webpack/webpack.js.org/edit/master/src/content'; let indexPath = page.type === 'index' ? '/index' : ''; let mainPath = page.url.startsWith('/') ? page.url : `/${page.url}`; let editLink = page.edit || baseURL + TrimEnd(mainPath, '/') + indexPath + '.md'; diff --git a/components/page-links/page-links-style.scss b/src/components/PageLinks/PageLinks.scss similarity index 100% rename from components/page-links/page-links-style.scss rename to src/components/PageLinks/PageLinks.scss diff --git a/components/shield/shield.jsx b/src/components/Shield/Shield.jsx similarity index 100% rename from components/shield/shield.jsx rename to src/components/Shield/Shield.jsx diff --git a/components/sidebar/sidebar.jsx b/src/components/Sidebar/Sidebar.jsx similarity index 96% rename from components/sidebar/sidebar.jsx rename to src/components/Sidebar/Sidebar.jsx index 72dffcff6d06..69eb1f857f68 100644 --- a/components/sidebar/sidebar.jsx +++ b/src/components/Sidebar/Sidebar.jsx @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -import Shield from '../shield/shield'; -import SidebarItem from '../sidebar-item/sidebar-item'; +import Shield from '../Shield/Shield'; +import SidebarItem from '../SidebarItem/SidebarItem'; export default class Sidebar extends Component { constructor(props) { diff --git a/components/sidebar/sidebar-style.scss b/src/components/Sidebar/Sidebar.scss similarity index 100% rename from components/sidebar/sidebar-style.scss rename to src/components/Sidebar/Sidebar.scss diff --git a/components/sidebar-item/sidebar-item.jsx b/src/components/SidebarItem/SidebarItem.jsx similarity index 98% rename from components/sidebar-item/sidebar-item.jsx rename to src/components/SidebarItem/SidebarItem.jsx index a3771c5d26df..3476b8052958 100644 --- a/components/sidebar-item/sidebar-item.jsx +++ b/src/components/SidebarItem/SidebarItem.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { uniqueId } from 'lodash'; -import Link from '../link/link'; +import Link from '../Link/Link'; const block = 'sidebar-item'; diff --git a/components/sidebar-item/sidebar-item-style.scss b/src/components/SidebarItem/SidebarItem.scss similarity index 100% rename from components/sidebar-item/sidebar-item-style.scss rename to src/components/SidebarItem/SidebarItem.scss diff --git a/components/sidebar-mobile/sidebar-mobile.jsx b/src/components/SidebarMobile/SidebarMobile.jsx similarity index 99% rename from components/sidebar-mobile/sidebar-mobile.jsx rename to src/components/SidebarMobile/SidebarMobile.jsx index 55b8b3f5de67..5e551ddf5a5f 100644 --- a/components/sidebar-mobile/sidebar-mobile.jsx +++ b/src/components/SidebarMobile/SidebarMobile.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import Link from '../link/link'; +import Link from '../Link/Link'; let initialTouchPosition = {}; let lastTouchPosition = {}; diff --git a/components/sidebar-mobile/sidebar-mobile-style.scss b/src/components/SidebarMobile/SidebarMobile.scss similarity index 100% rename from components/sidebar-mobile/sidebar-mobile-style.scss rename to src/components/SidebarMobile/SidebarMobile.scss diff --git a/components/site/site.jsx b/src/components/Site/Site.jsx similarity index 62% rename from components/site/site.jsx rename to src/components/Site/Site.jsx index 1c30115c5cc1..4e9db7aaf146 100644 --- a/components/site/site.jsx +++ b/src/components/Site/Site.jsx @@ -1,23 +1,23 @@ import React from 'react'; import Interactive from 'antwar-interactive'; import { GoogleAnalytics } from 'antwar-helpers'; -import NotificationBar from '../notification-bar/notification-bar'; -import Navigation from '../navigation/navigation'; -import Footer from '../footer/footer'; -import SidebarMobile from '../sidebar-mobile/sidebar-mobile'; -import './site-style'; +import NotificationBar from '../NotificationBar/NotificationBar'; +import Navigation from '../Navigation/Navigation'; +import Footer from '../Footer/Footer'; +import SidebarMobile from '../SidebarMobile/SidebarMobile'; +import './Site.scss'; // Load base styling import '../../styles'; import '../../styles/icon.font.js'; -import '../container/container-style.scss'; -import '../notification-bar/notification-bar-style'; -import '../navigation/navigation-style'; -import '../navigation/search-style'; -import '../sidebar-mobile/sidebar-mobile-style'; -import '../sidebar-item/sidebar-item-style'; -import '../logo/logo-style'; -import '../dropdown/dropdown-style.scss'; +import '../Container/Container.scss'; +import '../NotificationBar/NotificationBar.scss'; +import '../Navigation/Navigation.scss'; +import '../Navigation/Search.scss'; +import '../SidebarMobile/SidebarMobile.scss'; +import '../SidebarItem/SidebarItem.scss'; +import '../Logo/Logo.scss'; +import '../Dropdown/Dropdown.scss'; export default props => { // Retrieve section data @@ -40,17 +40,17 @@ export default props => { return (

diff --git a/components/site/site-style.scss b/src/components/Site/Site.scss similarity index 100% rename from components/site/site-style.scss rename to src/components/Site/Site.scss diff --git a/components/splash/splash.jsx b/src/components/Splash/Splash.jsx similarity index 78% rename from components/splash/splash.jsx rename to src/components/Splash/Splash.jsx index b230adf85412..9025ab24f53b 100644 --- a/components/splash/splash.jsx +++ b/src/components/Splash/Splash.jsx @@ -1,12 +1,12 @@ import React from 'react'; import Interactive from 'antwar-interactive'; -import Container from '../container/container'; -import SplashViz from '../splash-viz/splash-viz'; -import Support from '../support/support'; -import './splash-style'; -import '../splash-viz/splash-viz-style'; -import '../cube/cube-style'; -import '../text-rotater/text-rotater-style.scss'; +import Container from '../Container/Container'; +import SplashViz from '../SplashViz/SplashViz'; +import Support from '../Support/Support'; +import './Splash.scss'; +import '../SplashViz/SplashViz.scss'; +import '../Cube/Cube.scss'; +import '../TextRotater/TextRotater.scss'; export default props => { let { page } = props; @@ -14,7 +14,7 @@ export default props => { return (
diff --git a/components/splash/splash-style.scss b/src/components/Splash/Splash.scss similarity index 100% rename from components/splash/splash-style.scss rename to src/components/Splash/Splash.scss diff --git a/components/splash-viz/splash-viz.jsx b/src/components/SplashViz/SplashViz.jsx similarity index 89% rename from components/splash-viz/splash-viz.jsx rename to src/components/SplashViz/SplashViz.jsx index 9657dcaedbc0..3cae30b3eba3 100644 --- a/components/splash-viz/splash-viz.jsx +++ b/src/components/SplashViz/SplashViz.jsx @@ -1,7 +1,7 @@ import React from 'react'; -import Cube from '../cube/cube'; -import TextRotator from '../text-rotater/text-rotater'; +import Cube from '../Cube/Cube'; +import TextRotator from '../TextRotater/TextRotater'; import Modules from '../../assets/homepage-modules.svg'; export default class SplashViz extends React.Component { diff --git a/components/splash-viz/splash-viz-style.scss b/src/components/SplashViz/SplashViz.scss similarity index 100% rename from components/splash-viz/splash-viz-style.scss rename to src/components/SplashViz/SplashViz.scss diff --git a/components/sponsors/sponsors.jsx b/src/components/Sponsors/Sponsors.jsx similarity index 95% rename from components/sponsors/sponsors.jsx rename to src/components/Sponsors/Sponsors.jsx index 87b789a106b3..da62c314d4ce 100644 --- a/components/sponsors/sponsors.jsx +++ b/src/components/Sponsors/Sponsors.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import Link from '../link/link'; +import Link from '../Link/Link'; // Imports for Ad Content import AGLogo from '../../assets/ag-grid-logo.png'; diff --git a/components/sponsors/sponsors-style.scss b/src/components/Sponsors/Sponsors.scss similarity index 100% rename from components/sponsors/sponsors-style.scss rename to src/components/Sponsors/Sponsors.scss diff --git a/components/starter-kits/starter-kits.jsx b/src/components/StarterKits/StarterKits.jsx similarity index 96% rename from components/starter-kits/starter-kits.jsx rename to src/components/StarterKits/StarterKits.jsx index 76976368658e..bb0dccd3bf9c 100644 --- a/components/starter-kits/starter-kits.jsx +++ b/src/components/StarterKits/StarterKits.jsx @@ -1,8 +1,8 @@ import React from 'react'; -import Container from '../container/container'; -import Link from '../link/link'; +import Container from '../Container/Container'; +import Link from '../Link/Link'; import Kits from './starter-kits-data.json'; -import './starter-kits-style'; +import './StarterKits.scss'; // NOTE: The table classes used in this component correspond to // those used in the markdown utility. Ideally we will soon create diff --git a/components/starter-kits/starter-kits-style.scss b/src/components/StarterKits/StarterKits.scss similarity index 100% rename from components/starter-kits/starter-kits-style.scss rename to src/components/StarterKits/StarterKits.scss diff --git a/src/components/StarterKits/starter-kits-data.json b/src/components/StarterKits/starter-kits-data.json new file mode 100644 index 000000000000..c7b946fa1221 --- /dev/null +++ b/src/components/StarterKits/starter-kits-data.json @@ -0,0 +1 @@ +[{"githubUrl":"https://github.com/este/este","githubPath":"este/este","githubUserName":"este","githubRepoName":"este","description":"Starter kit for universal full–fledged React apps.","homepage":"https://este.now.sh","updatedAt":"2017-05-27T13:16:39Z","createdAt":"2013-02-16T03:30:38Z","pushedAt":"2017-05-26T01:09:49Z","dependencies":["autoprefixer","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-react-intl","babel-plugin-react-transform","babel-plugin-transform-react-constant-elements","babel-plugin-transform-runtime","babel-polyfill","babel-preset-env","babel-preset-react","babel-preset-react-native","babel-preset-stage-1","babel-register","babel-runtime","color","compression","copy-webpack-plugin","css-loader","del","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-babel","eslint-plugin-flowtype","eslint-plugin-fp","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","eslint-plugin-react-native","express","extract-text-webpack-plugin","farce","fela","fela-native","fela-plugin-placeholder-prefixer","fela-plugin-validator","fela-preset-web","file-loader","firebase","flow-bin","found","found-scroll","gravatar","gulp","gulp-bg","gulp-eslint","gulp-if","gulp-real-favicon","gulp-util","iflow-react-intl","intl","intl-locales-supported","intl-messageformat","intl-relativeformat","invariant","ip","jest","localforage","make-error","nconf","nodemon","postcss-loader","prettier","ramda","raven-js","react","react-addons-test-utils","react-dom","react-fela","react-helmet","react-intl","react-native","react-native-fbsdk","react-native-i18n","react-native-side-menu","react-native-uuid","react-native-vector-icons","react-redux","react-router","react-test-renderer","redbox-react","redux","redux-logger","redux-observable","redux-persist","regenerator","regenerator-runtime","require-dir","run-sequence","rxjs","serialize-javascript","sinon","sinon-as-promised","style-loader","through2","url-loader","uuid","validator","webpack","webpack-dev-middleware","webpack-hot-middleware","webpack-isomorphic-tools","yargs"],"dependencyCount":105,"tags":["babel","es6","hmr","linter","live reload","react native","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/kriasoft/react-starter-kit","githubPath":"kriasoft/react-starter-kit","githubUserName":"kriasoft","githubRepoName":"react-starter-kit","description":"React Starter Kit — isomorphic web app boilerplate (Node.js, Express, GraphQL, React.js, Babel, PostCSS, Webpack, Browsersync)","homepage":"https://reactstarter.com","updatedAt":"2017-05-27T16:02:55Z","createdAt":"2014-04-16T13:08:18Z","pushedAt":"2017-05-27T08:13:04Z","dependencies":["babel-polyfill","bluebird","body-parser","classnames","cookie-parser","core-js","express","express-graphql","express-jwt","fastclick","graphql","history","isomorphic-fetch","isomorphic-style-loader","jsonwebtoken","normalize.css","passport","passport-facebook","pretty-error","prop-types","query-string","react","react-dom","sequelize","serialize-javascript","source-map-support","sqlite3","universal-router","assets-webpack-plugin","autoprefixer","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-istanbul","babel-plugin-rewire","babel-preset-env","babel-preset-react","babel-preset-react-optimize","babel-preset-stage-2","babel-register","babel-template","babel-types","browser-sync","chai","chokidar","cross-env","css-loader","editorconfig-tools","enzyme","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-css-modules","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","file-loader","front-matter","glob","json-loader","lint-staged","markdown-it","mkdirp","mocha","null-loader","nyc","opn-cli","pixrem","pleeease-filters","postcss","postcss-calc","postcss-color-function","postcss-custom-media","postcss-custom-properties","postcss-custom-selectors","postcss-flexbugs-fixes","postcss-import","postcss-loader","postcss-media-minmax","postcss-nested","postcss-nesting","postcss-pseudoelements","postcss-selector-matches","postcss-selector-not","pre-commit","raw-loader","react-addons-test-utils","react-deep-force-update","react-hot-loader","redbox-react","rimraf","sinon","stylefmt","stylelint","stylelint-config-standard","url-loader","webpack","webpack-bundle-analyzer","webpack-dev-middleware","webpack-hot-middleware","write-file-webpack-plugin"],"dependencyCount":102,"tags":["babel","es6","hmr","linter","live reload","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/dozoisch/koa-react-full-example","githubPath":"dozoisch/koa-react-full-example","githubUserName":"dozoisch","githubRepoName":"koa-react-full-example","description":"Full example using Koa, React, Passport, Mongoose, Webpack, Mocha, Babel","homepage":"","updatedAt":"2017-05-26T15:05:25Z","createdAt":"2014-06-06T20:40:37Z","pushedAt":"2016-10-06T09:31:26Z","dependencies":["bcrypt","bootstrap","co","co-views","koa","koa-bodyparser","koa-compress","koa-error","koa-generic-session","koa-logger","koa-passport","koa-response-time","koa-router","koa-static-cache","lodash","mongoose","passport-local","react","react-bootstrap","react-router","react-router-bootstrap","superagent","swig","babel","babel-core","babel-eslint","babel-loader","babel-runtime","css-loader","eslint","eslint-plugin-babel","eslint-plugin-react","extract-text-webpack-plugin","file-loader","html-loader","koa-proxy","koa-sess-mongo-store","less","less-loader","mocha","nodemon","null-loader","react-hot-loader","react-proxy-loader","should","style-loader","supertest","url-loader","webpack","webpack-dev-server","yargs"],"dependencyCount":51,"tags":["babel","es6","hmr","linter","live reload","react-router","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/KyleAMathews/coffee-react-quickstart","githubPath":"KyleAMathews/coffee-react-quickstart","githubUserName":"KyleAMathews","githubRepoName":"coffee-react-quickstart","description":"Quickstart for building React single page apps using Coffeescript, Gulp, Webpack, and React-Router","homepage":"http://kyleamathews.github.io/coffee-react-quickstart","updatedAt":"2017-05-25T21:46:55Z","createdAt":"2014-06-09T21:01:47Z","pushedAt":"2016-03-27T17:12:19Z","dependencies":["cjsx-loader","coffee-loader","coffee-react-transform","coffee-script","css-loader","gulp","gulp-compass","gulp-cssfont64","gulp-load-plugins","gulp-rename","gulp-shell","gulp-size","gulp-util","highlight.js","jest-cli","map-stream","react","react-dom","react-hot-loader","react-retina-image","react-router","style-loader","touch","underscore","webpack","webpack-dev-server"],"dependencyCount":26,"tags":["CoffeeScript","hmr","live reload","react-router","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","coffee","coffee script","hot","hot module reloading","router","test","unit test"]},{"githubUrl":"https://github.com/kjda/ReactJs-Phonegap","githubPath":"kjda/ReactJs-Phonegap","githubUserName":"kjda","githubRepoName":"ReactJs-Phonegap","description":"A boilerplate ReactJS-Phonegap/Cordova App + Flux data flow","homepage":"","updatedAt":"2017-05-24T15:27:33Z","createdAt":"2014-07-16T21:05:09Z","pushedAt":"2016-03-11T15:14:37Z","dependencies":["backbone","bower","fastclick","gulp","gulp-clean","gulp-concat","gulp-jsvalidate","gulp-less","gulp-minify-css","gulp-notify","gulp-notify-growl","gulp-plumber","gulp-react","gulp-replace","gulp-run-sequence","gulp-shell","gulp-uglify","gulp-watch","jquery","jsx-loader","lodash-node","promise","react","react-flux","react-tools","react-topui","underscore","express","static-favicon","morgan","cookie-parser","body-parser","debug","ejs","less-middleware","mongoose","mongoose-validator","validator","async","bcrypt","u","passport","passport-local","webpack"],"dependencyCount":44,"tags":["webpack"],"tagAlternateNames":[]},{"githubUrl":"https://github.com/webpack/react-starter","githubPath":"webpack/react-starter","githubUserName":"webpack","githubRepoName":"react-starter","description":"[OUTDATED] Starter template for React with webpack. Doesn't focus on simplicity! NOT FOR BEGINNERS!","homepage":"","updatedAt":"2017-05-27T06:32:38Z","createdAt":"2014-07-31T14:34:24Z","pushedAt":"2016-01-01T13:58:52Z","dependencies":["async","babel-core","babel-loader","body-parser","css-loader","express","extract-text-webpack-plugin","file-loader","html-loader","items-store","less","less-loader","markdown-loader","null-loader","react","react-hot-loader","react-proxy-loader","react-router","stats-webpack-plugin","style-loader","superagent","url-loader","uuid","webpack","webpack-dev-server","babel-eslint","eslint","eslint-plugin-react"],"dependencyCount":28,"tags":["babel","es6","hmr","linter","live reload","react-router","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled"]},{"githubUrl":"https://github.com/kriasoft/aspnet-starter-kit","githubPath":"kriasoft/aspnet-starter-kit","githubUserName":"kriasoft","githubRepoName":"aspnet-starter-kit","description":"Cross-platform web development with Visual Studio Code, C#, F#, JavaScript, ASP.NET Core, EF Core, React (ReactJS), Redux, Babel. Single-page application boilerplate.","homepage":"https://twitter.com/dotnetreact","updatedAt":"2017-05-25T20:20:08Z","createdAt":"2014-08-21T09:51:46Z","pushedAt":"2017-05-25T15:57:44Z","dependencies":["babel-polyfill","classnames","fastclick","history","react","react-dom","react-mdl","react-redux","redux","whatwg-fetch","assets-webpack-plugin","autoprefixer","babel-core","babel-eslint","babel-loader","babel-plugin-transform-class-properties","babel-plugin-transform-object-rest-spread","babel-plugin-transform-react-constant-elements","babel-plugin-transform-regenerator","babel-plugin-transform-runtime","babel-preset-latest","babel-preset-react","babel-register","babel-runtime","browser-sync","chai","cpy","css-loader","del","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","front-matter","highlight.js","json-loader","markdown-it","mkdirp","mocha","path-to-regexp","pixrem","pleeease-filters","postcss","postcss-calc","postcss-color-function","postcss-custom-media","postcss-custom-properties","postcss-custom-selectors","postcss-import","postcss-loader","postcss-media-minmax","postcss-nesting","postcss-selector-matches","postcss-selector-not","react-hot-loader","style-loader","stylelint","stylelint-config-standard","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":65,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","redux","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/gaearon/react-hot-boilerplate","githubPath":"gaearon/react-hot-boilerplate","githubUserName":"gaearon","githubRepoName":"react-hot-boilerplate","description":"Minimal live-editing example for React","homepage":"","updatedAt":"2017-05-26T08:56:59Z","createdAt":"2014-08-23T16:38:09Z","pushedAt":"2017-04-20T20:31:59Z","dependencies":["react","react-dom","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","eslint","eslint-plugin-react","express","react-hot-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":15,"tags":["babel","es6","hmr","linter","live reload","minimal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","simple","transpiled"]},{"githubUrl":"https://github.com/lynnaloo/mullet","githubPath":"lynnaloo/mullet","githubUserName":"lynnaloo","githubRepoName":"mullet","description":"Mullet Stack: Facebook in the front. Walmart in the back. (React, Hapijs, Node)","homepage":"http://www.mullet.io","updatedAt":"2017-05-04T13:11:17Z","createdAt":"2014-09-05T02:46:29Z","pushedAt":"2017-05-27T12:42:26Z","dependencies":["babel","babel-core","babel-jest","babel-loader","babel-preset-es2015","babel-preset-react","blipp","body-parser","bootstrap","h2o2","hapi","inert","jest","jquery","npm-watch","react","react-dom","react-scripts","vision","webpack","code","enzyme","eslint","eslint-config-eta","eslint-plugin-babel","eslint-plugin-react","jest-cli","lab","prettier","react-addons-test-utils","react-test-renderer"],"dependencyCount":31,"tags":["babel","es6","linter","tests","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/reactGo/reactGo","githubPath":"reactGo/reactGo","githubUserName":"reactGo","githubRepoName":"reactGo","description":"Your One-Stop solution for a full-stack universal Redux App!","homepage":"","updatedAt":"2017-05-27T16:16:26Z","createdAt":"2014-11-17T09:51:09Z","pushedAt":"2017-05-27T12:37:54Z","dependencies":["autoprefixer","axios","babel-cli","babel-core","babel-loader","babel-plugin-react-transform","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-remove-prop-types","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","bcrypt-nodejs","bluebird","body-parser","classnames","compression","connect-mongo","connect-pg-simple","cross-env","css-loader","es6-promise","express","express-flash","express-session","extract-text-webpack-plugin","file-loader","helmet","json-loader","lodash","method-override","mongoose","passport","passport-google-oauth","passport-local","pg","pg-hstore","postcss-cssnext","postcss-import","postcss-loader","postcss-reporter","prop-types","react","react-addons-test-utils","react-dom","react-helmet","react-redux","react-router","react-router-redux","react-transform-hmr","redux","redux-logger","redux-thunk","rimraf","sequelize","sequelize-cli","spark-md5","style-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware","webpack-manifest-plugin","babel-eslint","babel-register","enzyme","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","expect","jsdom","mocha","nodemon","react-test-renderer","react-transform-catch-errors","redux-mock-store","sinon"],"dependencyCount":80,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/irvinebroque/isomorphic-hot-loader","githubPath":"irvinebroque/isomorphic-hot-loader","githubUserName":"irvinebroque","githubRepoName":"isomorphic-hot-loader","description":"No longer maintained","homepage":"","updatedAt":"2017-05-19T11:13:00Z","createdAt":"2014-11-27T00:35:48Z","pushedAt":"2017-01-12T00:08:58Z","dependencies":["babel","babel-runtime","body-parser","chroma-js","compression","cors","express","flux","fuzzy","isomorphic-fetch","moment","node-jsx","object-assign","react","react-a11y","react-document-title","react-router","ua-parser-js","when","babel-core","babel-loader","eslint","jest-cli","json-loader","react-hot-loader","react-tools","supervisor","webpack","webpack-dev-server"],"dependencyCount":29,"tags":["babel","es6","Flux","hmr","linter","live reload","react-router","tests","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/wbkd/react-starterkit","githubPath":"wbkd/react-starterkit","githubUserName":"wbkd","githubRepoName":"react-starterkit","description":"Yet another react starterkit. Including react-router, reflux, jest, webpack, gulp and stylus.","homepage":"http://wbkd.github.io/react-starterkit","updatedAt":"2017-05-08T07:19:14Z","createdAt":"2014-12-06T13:30:50Z","pushedAt":"2016-08-01T09:34:44Z","dependencies":["history","react","react-dom","react-router","reflux","babel-core","babel-jest","babel-loader","babel-preset-es2015","babel-preset-react","del","gulp","gulp-autoprefixer","gulp-concat","gulp-connect","gulp-livereload","gulp-load-plugins","gulp-size","gulp-stylus","gulp-uglify","gulp-util","gulp-watch","gulp-webpack","jest-cli","object-assign","orchestrator","react-addons-test-utils","webpack"],"dependencyCount":28,"tags":["babel","es6","Flux","react-router","tests","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/iam4x/isomorphic-flux-boilerplate","githubPath":"iam4x/isomorphic-flux-boilerplate","githubUserName":"iam4x","githubRepoName":"isomorphic-flux-boilerplate","description":"ES7 Isomorphic Flux/ReactJS Boilerplate","homepage":"http://isomorphic.iam4x.fr","updatedAt":"2017-05-22T08:27:24Z","createdAt":"2015-01-28T14:45:54Z","pushedAt":"2017-05-10T09:06:22Z","dependencies":["alt","alt-container","alt-utils","autoprefixer","axios","babel","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-remove-prop-types","babel-plugin-typecheck","babel-polyfill","babel-preset-save","babel-register","babel-runtime","classnames","connect-alt","cookies-js","css-loader","debug","extract-text-webpack-plugin","file-loader","font-awesome","image-webpack-loader","intl","iso","json-loader","koa","koa-compress","koa-conditional-get","koa-convert","koa-etag","koa-favicon","koa-helmet","koa-logger","koa-mount","koa-response-time","koa-router","koa-static-cache","lodash","normalize.css","postcss-import","postcss-loader","postcss-url","precss","promise-loader","purifycss-webpack-plugin","react","react-dom","react-intl","react-router","scroll-behavior","style-loader","sw-precache-webpack-plugin","webpack","ava","babel-plugin-react-transform","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-pure-class-to-function","blocked","browser-sync","chai","chai-enzyme","coveralls","dev-ip","enzyme","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","faux-jax","jsdom","koa-proxy","koa-webpack-dev-middleware","koa-webpack-hot-middleware","node-watch","nyc","react-addons-test-utils","react-transform-catch-errors","react-transform-hmr","redbox-react","sinon","sinon-chai","url-loader","webpack-hot-middleware"],"dependencyCount":89,"tags":["babel","es6","Flux","hmr","linter","live reload","react-router","universal","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","transpiled","webpack2"]},{"githubUrl":"https://github.com/jcreamer898/expressiso","githubPath":"jcreamer898/expressiso","githubUserName":"jcreamer898","githubRepoName":"expressiso","description":"A quick starter for building an Isomorphic App with Express.js and React.js","homepage":"","updatedAt":"2017-05-18T05:48:46Z","createdAt":"2015-02-04T03:05:14Z","pushedAt":"2016-12-15T15:39:08Z","dependencies":["babel-preset-es2015","babel-preset-react","babel-register","body-parser","cookie-parser","debug","express","hjs","morgan","react","react-dom","serve-favicon","babel-loader","webpack"],"dependencyCount":14,"tags":["es6","minimal","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","simple","transpiled"]},{"githubUrl":"https://github.com/acdlite/flummox-isomorphic-demo","githubPath":"acdlite/flummox-isomorphic-demo","githubUserName":"acdlite","githubRepoName":"flummox-isomorphic-demo","description":"Demo of how to create isomorphic apps using Flummox and react-router","homepage":null,"updatedAt":"2017-03-17T23:46:12Z","createdAt":"2015-02-04T07:29:07Z","pushedAt":"2017-04-16T21:44:58Z","dependencies":["flummox","immutable","koa","koa-conditional-get","koa-etag","koa-fresh","koa-gzip","koa-router","koa-static","koa-views","react","react-document-title","react-router","superagent","then-jade","babel","babel-core","babel-loader","nodemon","react-hot-loader","source-map-support","webpack","webpack-dev-server"],"dependencyCount":23,"tags":["babel","es6","Flux","hmr","live reload","react-router","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","router","transpiled"]},{"githubUrl":"https://github.com/jedireza/aqua","githubPath":"jedireza/aqua","githubUserName":"jedireza","githubRepoName":"aqua","description":":bulb: A website and user system starter","homepage":"https://jedireza.github.io/aqua/","updatedAt":"2017-05-27T15:01:51Z","createdAt":"2015-02-17T08:42:06Z","pushedAt":"2017-05-27T19:09:30Z","dependencies":["async","bcrypt","boom","classnames","confidence","crumb","dotenv","escape-string-regexp","glue","handlebars","hapi","hapi-auth-cookie","hapi-mongo-models","hapi-react-views","hoek","inert","joi","mongo-models","mongodb","uuid","nodemailer","nodemailer-markdown","object-assign","react","redux","slug","vision","visionary","babel-core","babel-loader","babel-preset-es2015","babel-preset-react","bootstrap","code","cookie","del","eslint-config-hapi","eslint-plugin-react","flux","flux-constant","font-awesome","gulp","gulp-concat","gulp-less","gulp-newer","gulp-nodemon","gulp-rename","gulp-sourcemaps","gulp-util","jsdom","lab","lodash","merge-stream","moment","nodemon","promptly","prop-types","proxyquire","qs","react-dom","react-router-dom","require-dir","webpack","xhr"],"dependencyCount":64,"tags":["babel","es6","Flux","linter","redux","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","transpiled","webpack2"]},{"githubUrl":"https://github.com/react-boilerplate/react-boilerplate","githubPath":"react-boilerplate/react-boilerplate","githubUserName":"react-boilerplate","githubRepoName":"react-boilerplate","description":":fire: A highly scalable, offline-first foundation with the best developer experience and a focus on performance and best practices.","homepage":"https://www.reactboilerplate.com","updatedAt":"2017-05-27T17:49:23Z","createdAt":"2015-02-18T14:36:32Z","pushedAt":"2017-05-27T17:33:53Z","dependencies":["babel-polyfill","chalk","compression","cross-env","express","fontfaceobserver","immutable","intl","invariant","ip","lodash","minimist","react","react-dom","react-helmet","react-intl","react-redux","react-router","react-router-redux","react-router-scroll","redux","redux-immutable","redux-saga","reselect","sanitize.css","styled-components","warning","whatwg-fetch","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-dynamic-import-node","babel-plugin-react-intl","babel-plugin-react-transform","babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-remove-prop-types","babel-preset-latest","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","cheerio","circular-dependency-plugin","coveralls","css-loader","enzyme","eslint","eslint-config-airbnb","eslint-config-airbnb-base","eslint-import-resolver-webpack","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","eslint-plugin-redux-saga","eventsource-polyfill","exports-loader","file-loader","html-loader","html-webpack-plugin","image-webpack-loader","imports-loader","jest-cli","lint-staged","ngrok","node-plop","null-loader","offline-plugin","plop","pre-commit","react-addons-test-utils","rimraf","shelljs","sinon","style-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":80,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/RickWong/react-isomorphic-starterkit","githubPath":"RickWong/react-isomorphic-starterkit","githubUserName":"RickWong","githubRepoName":"react-isomorphic-starterkit","description":"Create an isomorphic React app in less than 5 minutes","homepage":"","updatedAt":"2017-05-26T18:17:59Z","createdAt":"2015-02-26T23:35:40Z","pushedAt":"2016-04-19T21:17:36Z","dependencies":["babel-polyfill","css-loader","fetch-plus","fetch-plus-bearerauth","fetch-plus-json","file-loader","isomorphic-fetch","isomorphic-style-loader","koa","koa-proxy","koa-static","node-sass","react","react-dom","react-inline-css","react-router","react-transmit","sass-loader","style-loader","babel","babel-core","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","concurrently","forever","json-loader","just-wait","webpack","webpack-dev-server","webpack-node-externals"],"dependencyCount":33,"tags":["babel","es6","inline style","react-router","universal","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","inline CSS","isomorphic","router","transpiled"]},{"githubUrl":"https://github.com/pheuter/essential-react","githubPath":"pheuter/essential-react","githubUserName":"pheuter","githubRepoName":"essential-react","description":"A minimal skeleton for building testable React apps using Babel","homepage":"","updatedAt":"2017-05-25T21:46:55Z","createdAt":"2015-03-08T19:10:15Z","pushedAt":"2016-12-15T17:31:27Z","dependencies":["babel-core","babel-polyfill","babel-runtime","express","react","react-dom","react-router","autoprefixer","ava","babel-loader","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","coveralls","css-loader","enzyme","extract-text-webpack-plugin","nyc","postcss-loader","postcss-nested","react-addons-test-utils","react-hot-loader","sinon","style-loader","webpack","webpack-dev-server"],"dependencyCount":28,"tags":["babel","es6","hmr","live reload","react-router","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","transpiled"]},{"githubUrl":"https://github.com/bradleyboy/yarsk","githubPath":"bradleyboy/yarsk","githubUserName":"bradleyboy","githubRepoName":"yarsk","description":"Yet Another React Starter Kit","homepage":"","updatedAt":"2017-05-22T10:00:27Z","createdAt":"2015-03-12T20:05:48Z","pushedAt":"2016-06-16T04:02:04Z","dependencies":["react","react-dom","autoprefixer","babel-core","babel-eslint","babel-loader","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-remove-prop-types","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","chai","cross-env","css-loader","enzyme","eslint","eslint-config-standard","eslint-config-standard-jsx","eslint-config-standard-react","eslint-loader","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","estraverse-fb","extract-text-webpack-plugin","file-loader","gh-pages","html-webpack-plugin","isparta","isparta-instrumenter-loader","karma","karma-chai","karma-coverage","karma-mocha","karma-mocha-reporter","karma-notify-reporter","karma-phantomjs-launcher","karma-webpack","less","less-loader","mocha","node-sass","phantomjs-prebuilt","postcss-loader","react-addons-test-utils","sass-loader","style-loader","url-loader","webpack","webpack-dev-server"],"dependencyCount":52,"tags":["babel","es6","hmr","linter","live reload","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/survivejs/react-component-boilerplate","githubPath":"survivejs/react-component-boilerplate","githubUserName":"survivejs","githubRepoName":"react-component-boilerplate","description":"Boilerplate for React.js components (MIT)","homepage":"https://survivejs.github.io/react-component-boilerplate/","updatedAt":"2017-05-24T12:39:44Z","createdAt":"2015-03-24T10:52:05Z","pushedAt":"2017-05-27T16:19:46Z","dependencies":["babel-cli","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-transform-react-remove-prop-types","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","catalog","chai","clean-webpack-plugin","css-loader","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","gh-pages","git-prepush-hook","html-webpack-plugin","html-webpack-template","jest","json-loader","purecss","raw-loader","react","react-addons-test-utils","react-dom","react-github-corner","rimraf","style-loader","sync-exec","system-bell-webpack-plugin","url-loader","webpack","webpack-dev-server","webpack-merge"],"dependencyCount":41,"tags":["babel","es6","linter","tests","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/zxbodya/reactive-widgets","githubPath":"zxbodya/reactive-widgets","githubUserName":"zxbodya","githubRepoName":"reactive-widgets","description":"Application starter template, for implementing isomorphic widgets, using RxJS and React","homepage":null,"updatedAt":"2017-05-22T07:32:18Z","createdAt":"2015-05-06T20:54:45Z","pushedAt":"2016-12-20T23:19:53Z","dependencies":["babel-runtime","body-parser","bootstrap-sass","classnames","debug","di1","dotenv","ejs","express","morgan","raf","react","react-dom","router1","router1-react","rx-react-container","rxjs","superagent","autoprefixer","babel-cli","babel-core","babel-loader","babel-plugin-transform-object-rest-spread","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","css-loader","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","html-loader","jest","node-sass","nodemon","null-loader","postcss-loader","react-hot-loader","react-proxy-loader","rimraf","rxjs","sass-loader","source-map-support","style-loader","url-loader","webpack","webpack-dev-server"],"dependencyCount":50,"tags":["babel","es6","hmr","linter","live reload","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/olebedev/go-starter-kit","githubPath":"olebedev/go-starter-kit","githubUserName":"olebedev","githubRepoName":"go-starter-kit","description":"Golang isomorphic react/hot reloadable/redux/css-modules starter kit","homepage":"","updatedAt":"2017-05-27T12:19:06Z","createdAt":"2015-06-13T14:43:53Z","pushedAt":"2017-05-22T05:32:47Z","dependencies":["autoprefixer","babel-core","babel-eslint","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","css-loader","eslint","eslint-plugin-react","expose-loader","express","extract-text-webpack-plugin","file-loader","normalize.css","postcss-functions","postcss-loader","precss","proxy-middleware","react","react-dom","react-helmet","react-redux","react-router","redux","redux-logger","style-loader","svgo-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware","whatwg-fetch","when"],"dependencyCount":36,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","webpack"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled"]},{"githubUrl":"https://github.com/alicoding/react-webpack-babel","githubPath":"alicoding/react-webpack-babel","githubUserName":"alicoding","githubRepoName":"react-webpack-babel","description":"Simple React Webpack Babel Starter Kit","homepage":null,"updatedAt":"2017-05-27T12:01:34Z","createdAt":"2015-06-15T13:21:19Z","pushedAt":"2017-04-05T11:21:46Z","dependencies":["node-sass","react","react-dom","sass-loader","babel-core","babel-loader","babel-plugin-transform-class-properties","babel-plugin-transform-decorators-legacy","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","babel-runtime","css-loader","extract-text-webpack-plugin","file-loader","html-webpack-plugin","postcss-loader","react-hot-loader","style-loader","url-loader","webpack","webpack-cleanup-plugin","webpack-dashboard","webpack-dev-server"],"dependencyCount":24,"tags":["babel","CSS Modules","es6","hmr","live reload","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","transpiled","webpack2"]},{"githubUrl":"https://github.com/kriasoft/react-static-boilerplate","githubPath":"kriasoft/react-static-boilerplate","githubUserName":"kriasoft","githubRepoName":"react-static-boilerplate","description":"Boilerplate and tooling for web application development based on React (ReactJS), Redux, Babel, Webpack, CSS Modules, PostCSS, Browsersync, React Hot Loader and optimized for CDN hosting in Firebase","homepage":"https://rsb.kriasoft.com","updatedAt":"2017-05-27T10:15:38Z","createdAt":"2015-06-17T19:33:23Z","pushedAt":"2017-05-25T06:46:32Z","dependencies":["babel-polyfill","classnames","fastclick","history","react","react-dom","react-mdl","react-redux","redux","whatwg-fetch","assets-webpack-plugin","autoprefixer","babel-core","babel-eslint","babel-loader","babel-plugin-transform-runtime","babel-preset-latest","babel-preset-react","babel-preset-stage-1","babel-register","babel-runtime","browser-sync","chai","connect-history-api-fallback","css-loader","ejs","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","file-loader","firebase-tools","front-matter","highlight.js","json-loader","markdown-it","mocha","path-to-regexp","pixrem","pleeease-filters","postcss","postcss-calc","postcss-color-function","postcss-custom-media","postcss-custom-properties","postcss-custom-selectors","postcss-flexbugs-fixes","postcss-import","postcss-loader","postcss-media-minmax","postcss-nesting","postcss-selector-matches","postcss-selector-not","react-hot-loader","rimraf","s3","style-loader","stylelint","stylelint-config-standard","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":64,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","redux","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/vesparny/react-kickstart","githubPath":"vesparny/react-kickstart","githubUserName":"vesparny","githubRepoName":"react-kickstart","description":"just another react + webpack boilerplate","homepage":"https://vesparny.github.io/react-kickstart/","updatedAt":"2017-05-24T12:11:31Z","createdAt":"2015-06-17T21:21:23Z","pushedAt":"2017-05-11T14:09:20Z","dependencies":["glamor","glamorous","prop-types","react","react-dom","react-router-dom","reflexbox","sanitize.css","babel-cli","babel-eslint","babel-loader","babel-plugin-transform-class-properties","babel-plugin-transform-object-rest-spread","babel-preset-latest","babel-preset-react","copy-webpack-plugin","cross-env","css-loader","enzyme","enzyme-to-json","express","extract-text-webpack-plugin","file-loader","gh-pages","html-webpack-plugin","husky","jest-cli","jest-glamor-react","json-loader","lint-staged","lodash","prettier","react-addons-test-utils","redbox-react","rimraf","standard","standard-version","style-loader","webpack","webpack-dev-server"],"dependencyCount":40,"tags":["es6","linter","tests","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/erikras/react-redux-universal-hot-example","githubPath":"erikras/react-redux-universal-hot-example","githubUserName":"erikras","githubRepoName":"react-redux-universal-hot-example","description":"A starter boilerplate for a universal webapp using express, react, redux, webpack, and react-transform","homepage":"","updatedAt":"2017-05-27T11:48:46Z","createdAt":"2015-06-23T16:39:21Z","pushedAt":"2017-05-26T20:33:33Z","dependencies":["babel-core","babel-loader","babel-plugin-add-module-exports","babel-plugin-transform-decorators-legacy","babel-plugin-transform-react-display-name","babel-plugin-transform-runtime","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","babel-runtime","body-parser","compression","express","express-session","file-loader","hoist-non-react-statics","http-proxy","immutable","invariant","less","less-loader","lru-memoize","map-props","multireducer","piping","pretty-error","react","react-bootstrap","react-dom","react-helmet","react-inline-css","react-redux","react-router","react-router-bootstrap","react-router-redux","redux","redux-async-connect","redux-form","redux-thunk","scroll-behavior","serialize-javascript","serve-favicon","socket.io","socket.io-client","superagent","url-loader","violet-paginator","warning","webpack-isomorphic-tools","autoprefixer-loader","babel-eslint","babel-plugin-react-transform","babel-plugin-typecheck","better-npm-run","bootstrap-sass","bootstrap-sass-loader","chai","clean-webpack-plugin","concurrently","css-loader","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-react","extract-text-webpack-plugin","font-awesome","font-awesome-webpack","json-loader","karma","karma-cli","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-sourcemap-loader","karma-webpack","mocha","node-sass","phantomjs","phantomjs-polyfill","react-a11y","react-addons-test-utils","react-transform-catch-errors","react-transform-hmr","redbox-react","redux-devtools","redux-devtools-dock-monitor","redux-devtools-log-monitor","sass-loader","sinon","strip-loader","style-loader","timekeeper","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":98,"tags":["babel","es6","hmr","inline style","linter","live reload","react-router","redux","tests","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","inline CSS","isomorphic","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/davezuko/react-redux-starter-kit","githubPath":"davezuko/react-redux-starter-kit","githubUserName":"davezuko","githubRepoName":"react-redux-starter-kit","description":"Get started with React, Redux, and React-Router.","homepage":"","updatedAt":"2017-05-27T18:18:12Z","createdAt":"2015-06-24T18:38:28Z","pushedAt":"2017-05-25T13:24:46Z","dependencies":["bootstrap","compression","express","object-assign","promise","prop-types","react","react-dom","react-redux","react-router","redbox-react","redux","redux-thunk","whatwg-fetch","babel-core","babel-eslint","babel-loader","babel-plugin-syntax-dynamic-import","babel-plugin-transform-class-properties","babel-plugin-transform-object-rest-spread","babel-plugin-transform-runtime","babel-preset-env","babel-preset-react","babel-runtime","chai","chai-as-promised","chai-enzyme","chalk","codecov","connect-history-api-fallback","cross-env","css-loader","dirty-chai","enzyme","eslint","eslint-config-standard","eslint-config-standard-react","eslint-plugin-babel","eslint-plugin-import","eslint-plugin-node","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","extract-text-webpack-plugin","figures","file-loader","fs-extra","html-webpack-plugin","karma","karma-coverage","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-webpack-with-fast-source-maps","mocha","node-sass","phantomjs-prebuilt","react-addons-test-utils","react-test-renderer","rimraf","sass-loader","sinon","sinon-chai","style-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware","yargs"],"dependencyCount":69,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/cdebotton/react-universal","githubPath":"cdebotton/react-universal","githubUserName":"cdebotton","githubRepoName":"react-universal","description":"React, redux, react-router, graphql, postgres, koa, universal starter-kit","homepage":null,"updatedAt":"2017-05-26T07:37:09Z","createdAt":"2015-07-07T06:47:35Z","pushedAt":"2015-11-13T12:57:34Z","dependencies":["babel","babel-plugin-react-transform","concurrently","deep-equal","express","express-graphql","font-awesome","forever","graphql","graphql-relay","history","immutable","isomorphic-fetch","koa","koa-compress","koa-favicon","koa-jade","koa-mount","koa-proxy","koa-session","koa-static","normalize.css","qs","react","react-css-modules","react-dom","react-redux","react-relay","react-router","redux","redux-devtools","redux-form","redux-router","redux-thunk","spawn-monitor","thenify","yargs","babel-core","babel-eslint","babel-loader","babel-runtime","chalk","clean-webpack-plugin","css-loader","cssnext-loader","debug","empty","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-babel","eslint-plugin-react","extract-text-webpack-plugin","file-loader","gaze","json-loader","pty.js","react-transform-catch-errors","react-transform-hmr","redbox-react","redux-devtools","style-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":66,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","transpiled"]},{"githubUrl":"https://github.com/vasanthk/react-universal-starter","githubPath":"vasanthk/react-universal-starter","githubUserName":"vasanthk","githubRepoName":"react-universal-starter","description":"Quick start an Universal (isomorphic) React App","homepage":null,"updatedAt":"2017-05-25T20:23:48Z","createdAt":"2015-07-20T20:51:11Z","pushedAt":"2016-05-08T21:11:37Z","dependencies":["babel","babel-plugin-typecheck","hapi","isomorphic-fetch","piping","react","react-inline-css","react-router","react-transmit","babel-core","babel-loader","babel-runtime","concurrently","json-loader","react-hot-loader","webpack","webpack-dev-server"],"dependencyCount":17,"tags":["babel","es6","hmr","inline style","live reload","minimal","react-router","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","inline CSS","isomorphic","router","simple","transpiled"]},{"githubUrl":"https://github.com/mobxjs/mobx-react-boilerplate","githubPath":"mobxjs/mobx-react-boilerplate","githubUserName":"mobxjs","githubRepoName":"mobx-react-boilerplate","description":"Small project to quickly start with React, MobX, JSX, ES6, Babel","homepage":"http://mobxjs.github.io/mobx","updatedAt":"2017-05-27T08:28:12Z","createdAt":"2015-07-27T05:29:53Z","pushedAt":"2017-01-10T06:42:42Z","dependencies":["mobx","mobx-react","mobx-react-devtools","react","react-dom","babel-core","babel-eslint","babel-loader","babel-plugin-transform-decorators-legacy","babel-preset-es2015","babel-preset-react","babel-preset-stage-1","eslint-plugin-react","eslint","react-hot-loader","webpack","webpack-dev-server"],"dependencyCount":17,"tags":["babel","es6","hmr","linter","live reload","minimal","MobX","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","simple","transpiled"]},{"githubUrl":"https://github.com/geowarin/boot-react","githubPath":"geowarin/boot-react","githubUserName":"geowarin","githubRepoName":"boot-react","description":"A starter application with spring boot and react","homepage":"","updatedAt":"2017-05-27T02:53:01Z","createdAt":"2015-08-05T15:55:14Z","pushedAt":"2017-05-22T12:17:19Z","dependencies":["axios","counterpart","deep-equal","react","react-dom","react-interpolate-component","react-redux","react-router","react-router-redux","react-translate-component","redux","babel","babel-core","babel-loader","babel-plugin-module-alias","babel-plugin-react-transform","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","connect-history-api-fallback","cross-env","css-loader","enzyme","expect","express","extract-text-webpack-plugin","html-webpack-plugin","http-proxy-middleware","jeet","jsdom","jsdom-global","json-loader","mocha","nib","purecss","react-addons-test-utils","redux-devtools","redux-devtools-dock-monitor","redux-devtools-log-monitor","stripcomment-loader","style-loader","stylus-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":46,"tags":["babel","es6","hmr","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/anorudes/redux-easy-boilerplate","githubPath":"anorudes/redux-easy-boilerplate","githubUserName":"anorudes","githubRepoName":"redux-easy-boilerplate","description":"React redux easy boilerplate","homepage":"","updatedAt":"2017-05-25T03:25:56Z","createdAt":"2015-08-10T13:59:23Z","pushedAt":"2017-02-05T16:17:38Z","dependencies":["babel-preset-react-hmre","react","react-redux","redux-batched-subscribe","asset-require-hook","autoprefixer","babel-core","babel-eslint","babel-loader","babel-plugin-react-transform","babel-plugin-transform-decorators-legacy","babel-plugin-transform-react-remove-prop-types","babel-plugin-transform-require-ignore","babel-plugin-webpack-alias","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","bluebird","body-parser","chai","chai-as-promised","chai-enzyme","classnames","compression","cookie-parser","cors","css-loader","css-modules-require-hook","enzyme","es6-promise","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","except","exports-loader","express","express-async-wrap","extract-text-webpack-plugin","file-loader","helmet","history","http-proxy","imports-loader","jsdom","mocha","morgan","node-sass","path-chunk-webpack-plugin","postcss-loader","postcss-nested","postcss-partial-import","postcss-short","ramda","react-addons-css-transition-group","react-addons-perf","react-addons-test-utils","react-dom","react-helmet","react-router","react-transform-hmr","redux","redux-connect","redux-logger","redux-thunk","sass","sass-loader","sinon","sinon-chai","style-loader","superagent","superagent-bluebird-promise","superagent-jsonp","throttle-function","url-loader","webpack","webpack-bundle-size-analyzer","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware","webpack-merge","whatwg-fetch"],"dependencyCount":85,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/xpepermint/isomorphic-react-relay-boilerplate","githubPath":"xpepermint/isomorphic-react-relay-boilerplate","githubUserName":"xpepermint","githubRepoName":"isomorphic-react-relay-boilerplate","description":"Starter template for React with focus on simplicity!","homepage":"","updatedAt":"2017-04-24T04:05:01Z","createdAt":"2015-08-30T15:53:55Z","pushedAt":"2016-01-20T20:38:17Z","dependencies":["babel","babel-runtime","express","express-graphql","graphql","graphql-sequelize","history","mysql","react","react-dom","react-helmet","react-router","sequelize","sequelize-cli","babel-loader","css-loader","extract-text-webpack-plugin","nib","nodemon","react-hot-loader","style-loader","stylus-loader","webpack","webpack-dev-server"],"dependencyCount":24,"tags":["babel","es6","hmr","live reload","react-router","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","router","transpiled"]},{"githubUrl":"https://github.com/jkup/react-app-starter","githubPath":"jkup/react-app-starter","githubUserName":"jkup","githubRepoName":"react-app-starter","description":":boom: A starter template for webpack and react","homepage":"","updatedAt":"2017-02-12T08:35:58Z","createdAt":"2015-09-12T06:02:21Z","pushedAt":"2016-08-29T03:55:12Z","dependencies":["react","webpack-dev-server","babel-core","babel-loader","webpack"],"dependencyCount":5,"tags":["babel","es6","minimal","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","simple","transpiled"]},{"githubUrl":"https://github.com/bvanreeven/react-typescript","githubPath":"bvanreeven/react-typescript","githubUserName":"bvanreeven","githubRepoName":"react-typescript","description":"Minimal boilerplate for a single-page app using React, TypeScript with JSX support (TSX), and Visual Studio Code.","homepage":"","updatedAt":"2017-05-26T15:08:29Z","createdAt":"2015-09-15T06:15:51Z","pushedAt":"2016-10-19T15:02:49Z","dependencies":["react","react-dom","@types/react","@types/react-dom","concurrently","mkdirp","source-map-loader","ts-loader","typescript","webpack"],"dependencyCount":10,"tags":["minimal","TypeScript","webpack"],"tagAlternateNames":["simple"]},{"githubUrl":"https://github.com/vutran/spa-starter-kit","githubPath":"vutran/spa-starter-kit","githubUserName":"vutran","githubRepoName":"spa-starter-kit","description":":package: Quick starter kit for booting up a NodeJS container with React, webpack, babel/ES2015, Redux, and more.","homepage":"","updatedAt":"2017-05-19T08:39:29Z","createdAt":"2015-09-16T05:58:15Z","pushedAt":"2016-01-07T19:45:43Z","dependencies":["dotenv","express","react","react-dom","react-redux","redux","autoprefixer","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","css-loader","eslint","eslint-loader","file-loader","hot-reload-server","html-loader","json-loader","node-sass","postcss-loader","react-hot-loader","react-todo","redux-devtools","redux-devtools-dock-monitor","redux-devtools-log-monitor","sass-loader","style-loader","svgo","svgo-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":34,"tags":["babel","es6","hmr","linter","live reload","redux","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","transpiled"]},{"githubUrl":"https://github.com/adampash/react-native-hot-redux-starter","githubPath":"adampash/react-native-hot-redux-starter","githubUserName":"adampash","githubRepoName":"react-native-hot-redux-starter","description":null,"homepage":null,"updatedAt":"2017-05-23T15:18:10Z","createdAt":"2015-09-19T15:53:00Z","pushedAt":"2016-05-06T20:59:30Z","dependencies":["react-native","react-redux","redux","redux-thunk","babel","babel-core","babel-loader","babel-plugin-react-transform","react-native-webpack-server","react-transform-hmr","webpack","webpack-dev-server"],"dependencyCount":12,"tags":["babel","es6","hmr","live reload","minimal","react native","redux","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","simple","transpiled"]},{"githubUrl":"https://github.com/krasimir/react-webpack-starter","githubPath":"krasimir/react-webpack-starter","githubUserName":"krasimir","githubRepoName":"react-webpack-starter","description":"A template for writing React based ES6 app using webpack","homepage":null,"updatedAt":"2017-05-23T11:28:12Z","createdAt":"2015-09-20T07:57:07Z","pushedAt":"2017-04-01T14:26:37Z","dependencies":["babel","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","chai","core-js","eslint","eslint-loader","eslint-plugin-react","karma","karma-chai","karma-chai-plugins","karma-chai-sinon","karma-chrome-launcher","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-sinon","karma-sinon-chai","karma-sourcemap-loader","karma-webpack","mocha","phantomjs","react","react-addons-test-utils","react-dom","watch","webpack","webpack-dev-server"],"dependencyCount":31,"tags":["babel","es6","linter","tests","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/vodkabears/another-one-fucking-boilerplate","githubPath":"vodkabears/another-one-fucking-boilerplate","githubUserName":"vodkabears","githubRepoName":"another-one-fucking-boilerplate","description":"Yes, another one JS boilerplate.","homepage":"","updatedAt":"2017-05-27T17:51:33Z","createdAt":"2015-10-02T23:36:01Z","pushedAt":"2016-03-25T23:54:24Z","dependencies":["assets-webpack-plugin","babel-core","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-2","babel-register","body-parser","chai","connect-redis","cookie-parser","coveralls","css-loader","csscomb","eslint","eslint-plugin-react","express","express-session","extract-text-webpack-plugin","file-loader","form-data","image-webpack-loader","istanbul","json-loader","mocha","mongodb","nock","node-fetch","node-loader","node-polyglot","node-uuid","nodemon","npm-run-all","null-loader","postcss-cssnext","postcss-loader","pre-commit","react","react-dom","react-router","shipit-cli","shipit-deploy","sinon","style-loader","url-loader","webpack","whatwg-fetch"],"dependencyCount":48,"tags":["babel","CSS Modules","es6","linter","react-router","tests","webpack"],"tagAlternateNames":["CSS Modules","css-modules","es2015","es2016","es6+","es7","esnext","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/PBRT/reactogo","githubPath":"PBRT/reactogo","githubUserName":"PBRT","githubRepoName":"reactogo","description":"Redux immutable architecture boilerplate with Webpack and React","homepage":"https://reactogo.herokuapp.com","updatedAt":"2017-04-23T09:07:00Z","createdAt":"2015-10-06T16:44:39Z","pushedAt":"2016-10-24T16:47:05Z","dependencies":["babel-core","babel-loader","babel-plugin-add-module-exports","babel-polyfill","babel-preset-es2015","babel-preset-react","body-parser","colors","compression","css-loader","del","ejs","es6-promise","eslint","eslint-loader","eslint-plugin-react","expect","exports-loader","express","fastclick","file-loader","firebase","history","immutable","imports-loader","isomorphic-fetch","jquery","json-loader","karma","karma-mocha","karma-phantomjs-launcher","karma-spec-reporter","karma-webpack","mocha","phantomjs-polyfill-object-assign","react","react-dom","react-modal","react-motion","react-redux","react-router","react-router-redux","redux","redux-devtools","redux-immutable","redux-logger","redux-promise","redux-thunk","serve-favicon","slideout","style-loader","stylus","stylus-loader","underscore","url-loader","velocity-animate","webpack","whatwg-fetch","react-hot-loader","webpack-dev-server"],"dependencyCount":60,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/wwsun/starter-node-react","githubPath":"wwsun/starter-node-react","githubUserName":"wwsun","githubRepoName":"starter-node-react","description":"A starter project for React.js app","homepage":"","updatedAt":"2017-05-27T03:50:57Z","createdAt":"2015-10-09T08:28:51Z","pushedAt":"2016-02-02T07:56:01Z","dependencies":["babel-cli","babel-preset-es2015-node5","co-views","history","koa","koa-logger","koa-route","koa-static","react","react-dom","react-router","swig","babel-core","babel-loader","babel-preset-es2015","babel-preset-react","webpack","webpack-dev-server"],"dependencyCount":18,"tags":["babel","es6","minimal","react-router","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","router","simple","transpiled"]},{"githubUrl":"https://github.com/ericelliott/react-pure-component-starter","githubPath":"ericelliott/react-pure-component-starter","githubUserName":"ericelliott","githubRepoName":"react-pure-component-starter","description":"A pure component dev starter kit for React.","homepage":null,"updatedAt":"2017-05-27T12:55:32Z","createdAt":"2015-10-10T01:26:47Z","pushedAt":"2017-05-27T05:33:58Z","dependencies":["react","redux","react-dom","express","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-react-transform","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","cheerio","clear-cli","cross-env","deep-freeze","eslint","eslint-plugin-react","react-addons-test-utils","redbox-react","rimraf","tape","updtr","watch","webpack","webpack-dev-middleware"],"dependencyCount":27,"tags":["babel","es6","linter","redux","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","transpiled"]},{"githubUrl":"https://github.com/FredericHeem/starhackit","githubPath":"FredericHeem/starhackit","githubUserName":"FredericHeem","githubRepoName":"starhackit","description":"StarHackIt: React/Redux + Node full-stack starter kit with authentication and authorization, data backed by SQL.","homepage":"http://starhack.it/","updatedAt":"2017-05-26T04:34:23Z","createdAt":"2015-10-13T12:43:22Z","pushedAt":"2017-05-27T11:50:18Z","dependencies":["axios","checkit","debug","glamor","glamorous","i18next","i18next-browser-languagedetector","i18next-localstorage-cache","i18next-xhr-backend","intl","lodash","mdlean","mobx","mobx-react","prop-types","qs","react","react-dom","react-ga","react-helmet","react-pagify","react-redux","react-router","react-router-redux","react-s-alert","react-tap-event-plugin","reactabular-table","redux","redux-act-async","redux-logger","redux-thunk","segmentize","babel","babel-core","babel-eslint","babel-loader","babel-root-import","babel-runtime","bcryptjs","bignumber.js","bluebird","chance","config","ejs","eslint","eslint-plugin-mocha","gulp","gulp-babel","gulp-debug","gulp-mocha","gulp-rimraf","gulp-util","jsonschema","jsonwebtoken","kcors","koa","koa-66","koa-bodyparser","koa-convert","koa-generic-session","koa-passport","koa-redis","koa-static","logfilename","moment","nodemailer","oauth","passport-facebook","passport-jwt","passport-local","passport-oauth2","pg","pg-hstore","pm2","rabbitmq-pubsub","redis","run-sequence","sequelize","socket.io","sqlite3","urijs","validator","webpack","winston","babel-core","babel-eslint","babel-loader","babel-plugin-lodash","babel-plugin-transform-react-remove-prop-types","babel-plugin-transform-runtime","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","babel-runtime","bluebird","chai","chalk","chance","clean-webpack-plugin","compression-webpack-plugin","copy-webpack-plugin","css-loader","enzyme","eslint","eslint-config-airbnb","eslint-config-standard-react","eslint-loader","eslint-plugin-babel","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-jsx-extras","eslint-plugin-mocha","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","file-loader","html-webpack-plugin","http-server","imports-loader","istanbul-instrumenter-loader","jscpd","json-loader","karma","karma-chai","karma-chrome-launcher","karma-coverage","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-sinon","karma-sourcemap-loader","karma-webpack","lodash-webpack-plugin","mocha","nightwatch","open-browser-webpack-plugin","phantomjs-prebuilt","protractor","react-addons-test-utils","react-hot-loader","react-test-renderer","sinon","style-loader","stylus","stylus-loader","url-loader","webpack","webpack-bundle-analyzer","webpack-bundle-size-analyzer","webpack-dashboard","webpack-dev-server","webpack-hud","abao","async","codeclimate-test-reporter","codecov.io","coveralls","devlab","isparta","istanbul","jsdom","raml-mocker-server","raml2html","restauth","sequelize-cli","shelljs","should","sinon-as-promised"],"dependencyCount":170,"tags":["babel","es6","hmr","linter","live reload","MobX","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/osxi/react-pouch-redux-starter-kit","githubPath":"osxi/react-pouch-redux-starter-kit","githubUserName":"osxi","githubRepoName":"react-pouch-redux-starter-kit","description":"Quickly get started with React + PouchDB + Redux","homepage":"","updatedAt":"2017-05-04T20:12:51Z","createdAt":"2015-10-15T05:13:10Z","pushedAt":"2017-04-30T05:02:45Z","dependencies":["babel-core","babel-loader","babel-plugin-transform-object-rest-spread","babel-preset-es2015","babel-preset-react","css-loader","eslint","eslint-loader","eslint-plugin-react","fbjs","history","jest-cli","material-ui","pouchdb","react","react-addons-create-fragment","react-addons-pure-render-mixin","react-addons-transition-group","react-addons-update","react-dom","react-hot-loader","react-redux","react-router","react-tap-event-plugin","redux","redux-devtools","redux-logger","redux-promise","redux-thunk","style-loader","webpack","webpack-dev-server"],"dependencyCount":32,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/mobxjs/mobx-react-typescript-boilerplate","githubPath":"mobxjs/mobx-react-typescript-boilerplate","githubUserName":"mobxjs","githubRepoName":"mobx-react-typescript-boilerplate","description":"Minimal boilerplate for a single-page app using React, TypeScript, TSX, Webpack","homepage":"","updatedAt":"2017-05-26T01:08:46Z","createdAt":"2015-10-15T07:49:40Z","pushedAt":"2016-12-10T16:27:06Z","dependencies":["mobx","mobx-react","mobx-react-devtools","react","react-dom","@types/react","@types/react-dom","awesome-typescript-loader","typescript","webpack","webpack-dev-server"],"dependencyCount":11,"tags":["minimal","MobX","TypeScript","webpack"],"tagAlternateNames":["simple"]},{"githubUrl":"https://github.com/unicorn-standard/starter-kit","githubPath":"unicorn-standard/starter-kit","githubUserName":"unicorn-standard","githubRepoName":"starter-kit","description":"Project boilerplate using React, Redux and Uniloc","homepage":"http://unicornstandard.com/packages/boilerplate.html","updatedAt":"2017-05-19T06:31:17Z","createdAt":"2015-10-19T09:18:35Z","pushedAt":"2016-02-25T11:44:03Z","dependencies":["babel-polyfill","babel-runtime","invariant","object-pick","react","react-dom","react-pacomo","redux","redux-batched-subscribe","redux-multi","redux-thunk","uniloc","autoprefixer-loader","babel-core","babel-loader","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","css-loader","del","extract-text-webpack-plugin","file-loader","fill-range","gulp","gulp-changed","gulp-inject","gulp-inject-string","gulp-load-plugins","gulp-size","gulp-util","json-loader","less","less-loader","node-libs-browser","open","redux-devtools","run-sequence","style-loader","url-loader","webpack","webpack-dev-server"],"dependencyCount":43,"tags":["babel","es6","redux","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","transpiled"]},{"githubUrl":"https://github.com/tpai/r2-starter-kit","githubPath":"tpai/r2-starter-kit","githubUserName":"tpai","githubRepoName":"r2-starter-kit","description":"R^2 Starter Kit is a boilerplate for web development built on top of React, Redux and Webpack.","homepage":"http://r2-starter-kit.herokuapp.com/","updatedAt":"2017-03-19T13:55:34Z","createdAt":"2015-10-21T08:33:23Z","pushedAt":"2017-05-25T21:05:26Z","dependencies":["autoprefixer","babel-core","babel-jest","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","classnames","cross-env","css-loader","es6-promise","express","express-history-api-fallback","husky","isomorphic-fetch","jest","lodash","node-sass","postcss-import","postcss-loader","react","react-dom","react-redux","react-router-dom","react-test-renderer","redux","redux-thunk","sass-loader","style-loader","webpack","babel-cli","babel-eslint","babel-plugin-rewire","commitizen","cz-conventional-changelog","eslint","eslint-loader","eslint-plugin-react","expect","react-hot-loader","redux-logger","validate-commit-msg","webpack-dev-server"],"dependencyCount":44,"tags":["babel","es6","hmr","linter","live reload","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/DominicTobias/universal-react","githubPath":"DominicTobias/universal-react","githubUserName":"DominicTobias","githubRepoName":"universal-react","description":"A universal react starter, with routing, meta, title, and data features","homepage":"","updatedAt":"2017-05-25T03:28:30Z","createdAt":"2015-10-21T10:51:17Z","pushedAt":"2017-04-19T08:19:19Z","dependencies":["babel-core","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","cross-env","express","history","isomorphic-fetch","react","react-dom","react-helmet","react-redux","react-router","redux","redux-thunk","webpack","webpack-dev-middleware","webpack-hot-middleware","babel-loader","babel-plugin-react-transform","babel-plugin-transform-object-assign","del","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","react-transform-hmr"],"dependencyCount":28,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","universal","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","transpiled","webpack2"]},{"githubUrl":"https://github.com/ahfarmer/minimal-react-starter","githubPath":"ahfarmer/minimal-react-starter","githubUserName":"ahfarmer","githubRepoName":"minimal-react-starter","description":"As minimal a react starter as you can get... while also using ES6/Babel and Webpack.","homepage":null,"updatedAt":"2017-05-22T15:42:04Z","createdAt":"2015-10-31T17:18:26Z","pushedAt":"2017-04-14T21:13:31Z","dependencies":["babel-core","babel-loader","babel-preset-env","babel-preset-react","express","react","react-dom","webpack","webpack-dev-middleware"],"dependencyCount":9,"tags":["babel","es6","minimal","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","simple","transpiled","webpack2"]},{"githubUrl":"https://github.com/aspnet/JavaScriptServices","githubPath":"aspnet/JavaScriptServices","githubUserName":"aspnet","githubRepoName":"JavaScriptServices","description":"Microsoft ASP.NET Core JavaScript Services","homepage":"","updatedAt":"2017-05-26T20:01:08Z","createdAt":"2015-11-02T01:24:11Z","pushedAt":"2017-05-26T20:44:26Z","dependencies":["babel-core","react","react-dom","react-router","aspnet-webpack","aspnet-webpack-react","babel-loader","babel-preset-es2015","babel-preset-react","bootstrap","css-loader","extendify","extract-text-webpack-plugin","file-loader","jquery","style-loader","ts-loader","typescript","url-loader","webpack","webpack-hot-middleware"],"dependencyCount":21,"tags":["babel","es6","hmr","live reload","react-router","TypeScript","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","transpiled"]},{"githubUrl":"https://github.com/weblancaster/seed-react-project","githubPath":"weblancaster/seed-react-project","githubUserName":"weblancaster","githubRepoName":"seed-react-project","description":"[DEPRECATED] Yet another React boilerplate to rapidly and easily start a React stack component focused project from scratch without the tedious configuration work.","homepage":"","updatedAt":"2017-05-25T22:38:26Z","createdAt":"2015-11-06T17:31:41Z","pushedAt":"2017-05-25T22:34:26Z","dependencies":["lodash","normalize.css","react","react-dom","react-redux","react-router","redux","redux-thunk","whatwg-fetch","autoprefixer","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-react-css-modules","babel-plugin-transform-runtime","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-runtime","bower-webpack-plugin","chai","copyfiles","core-js","css-loader","eslint","eslint-loader","eslint-plugin-react","extract-text-webpack-plugin","fetch-mock","file-loader","glob","isparta-instrumenter-loader","jest","minimist","mocha","node-sass","null-loader","open","phantomjs-prebuilt","postcss-loader","postcss-partial-import","postcss-simple-vars","react-addons-test-utils","react-hot-loader","redux-logger","redux-mock-store","rimraf","sass-loader","sinon","style-loader","url-loader","webpack","webpack-dashboard","webpack-dev-server"],"dependencyCount":56,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/rangle/react-redux-example","githubPath":"rangle/react-redux-example","githubUserName":"rangle","githubRepoName":"react-redux-example","description":"Rangle.io official React + Redux starter","homepage":"","updatedAt":"2017-05-22T23:58:16Z","createdAt":"2015-11-06T22:02:28Z","pushedAt":"2017-04-21T20:56:45Z","dependencies":["express","helmet","http-proxy","winston","autoprefixer","babel","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","basscss","basscss-addons","basscss-basic","body-parser","classnames","concurrently","copy-webpack-plugin","cross-env","css-loader","cssnano","denodeify","enzyme","es5-shim","es6-promise","es6-shim","eslint","eslint-loader","eslint-plugin-react","file-loader","html-webpack-plugin","immutable","istanbul","istanbul-instrumenter-loader","jasmine-core","json-loader","karma","karma-chrome-launcher","karma-coverage","karma-jasmine","karma-remap-istanbul","karma-sinon","karma-source-map-support","karma-sourcemap-loader","karma-spec-reporter","karma-webpack","nodemon","passport","passport-local","postcss-cssnext","postcss-import","postcss-loader","postcss-modules-local-by-default","react","react-addons-test-utils","react-dom","react-hot-loader","react-redux","react-router","react-router-redux","redux","redux-form","redux-localstorage","redux-logger","redux-thunk","require-hacker","rimraf","sinon","style-loader","stylelint","stylelint-webpack-plugin","url-loader","webpack","webpack-dev-server","webpack-hot-middleware","webpack-split-by-path","whatwg-fetch"],"dependencyCount":82,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/eanplatter/react-starter","githubPath":"eanplatter/react-starter","githubUserName":"eanplatter","githubRepoName":"react-starter","description":":fallen_leaf: Starter template for React with webpack. Does focus on simplicity! FOR BEGINNERS!","homepage":"","updatedAt":"2017-05-24T17:44:18Z","createdAt":"2015-11-14T22:34:43Z","pushedAt":"2016-10-25T01:51:25Z","dependencies":["react","react-dom","babel-core","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","history","html-webpack-plugin","react-hot-loader","webpack","webpack-dev-server"],"dependencyCount":12,"tags":["babel","es6","hmr","live reload","minimal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","simple","transpiled"]},{"githubUrl":"https://github.com/rauschma/react-starter-project","githubPath":"rauschma/react-starter-project","githubUserName":"rauschma","githubRepoName":"react-starter-project","description":"Minimal starter project for React: webpack + hot module reloading + ES6 and JSX via Babel","homepage":null,"updatedAt":"2017-05-10T03:08:45Z","createdAt":"2015-11-28T14:33:39Z","pushedAt":"2016-05-02T09:24:00Z","dependencies":["react","react-dom","babel-core","babel-preset-es2015","babel-preset-react","babel-loader","webpack","copy-webpack-plugin","webpack-dev-server","react-hot-loader"],"dependencyCount":10,"tags":["babel","es6","hmr","live reload","minimal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","simple","transpiled"]},{"githubUrl":"https://github.com/skolmer/react-hot-boilerplate-vscode","githubPath":"skolmer/react-hot-boilerplate-vscode","githubUserName":"skolmer","githubRepoName":"react-hot-boilerplate-vscode","description":"React Hot Loader 3.0 Boilerplate for Visual Studio Code","homepage":"","updatedAt":"2017-05-27T05:44:40Z","createdAt":"2015-12-09T16:19:08Z","pushedAt":"2017-05-14T13:31:13Z","dependencies":["lodash","react","react-dom","babel-core","babel-eslint","babel-loader","babel-plugin-transform-react-jsx-source","babel-preset-es2015","babel-preset-react","babel-preset-react-optimize","babel-preset-stage-0","cross-env","eslint","eslint-import-resolver-webpack","eslint-plugin-babel","eslint-plugin-import","eslint-plugin-lodash","eslint-plugin-react","ghooks","html-webpack-plugin","react-hot-loader","rimraf","webpack","webpack-dev-server"],"dependencyCount":24,"tags":["babel","es6","hmr","linter","live reload","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","transpiled","webpack2"]},{"githubUrl":"https://github.com/ngduc/react-setup","githubPath":"ngduc/react-setup","githubUserName":"ngduc","githubRepoName":"react-setup","description":"A Universal React Setup with i18n: Babel 6, Koa 2, React, React Router, React Transmit, React Bootstrap, React-intl, Mocha, Isparta, Webpack 2, Storybook, InlineCSS/PostCSS, ESLint, HTTPS & HTTP2.","homepage":"","updatedAt":"2017-05-25T21:46:50Z","createdAt":"2015-12-19T01:32:16Z","pushedAt":"2017-02-11T08:43:06Z","dependencies":["autoprefixer","babel","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-react-intl","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","bootstrap","bunyan","classnames","concurrently","copy-webpack-plugin","css-loader","extract-text-webpack-plugin","fetch-plus","fetch-plus-bearerauth","fetch-plus-json","forever","glob","html-webpack-plugin","intl","intl-locales-supported","intl-messageformat-parser","isomorphic-fetch","json-loader","just-wait","koa","koa-better-body","koa-bodyparser","koa-compose","koa-compress","koa-convert","koa-passport","koa-router","koa-session","koa-static-cache","mkdirp","mousetrap","mustache","postcss-cssnext","postcss-import","postcss-loader","postcss-mixins","postcss-nested","postcss-simple-vars","react","react-addons-css-transition-group","react-addons-test-utils","react-addons-update","react-bootstrap","react-dom","react-inline-css","react-intl","react-jsonschema-form","react-motion","react-router","react-router-transition","react-transmit","serialize-javascript","spdy","style-loader","webpack","webpack-build-notifier","webpack-dev-server","webpack-node-externals","@kadira/storybook","chai","eslint","eslint-plugin-jsdoc","eslint-plugin-react","isparta","jsdom","mocha","pre-git","react-proxy","sinon","sinon-chai","teaspoon"],"dependencyCount":83,"tags":["babel","es6","inline style","linter","react-router","tests","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","inline CSS","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/rbartoli/react-boilerplate","githubPath":"rbartoli/react-boilerplate","githubUserName":"rbartoli","githubRepoName":"react-boilerplate","description":"A boilerplate to start a client-side project using React.","homepage":null,"updatedAt":"2017-03-09T06:15:56Z","createdAt":"2015-12-26T17:58:08Z","pushedAt":"2016-09-25T13:17:32Z","dependencies":["react","react-dom","react-router","babel-core","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","cross-env","css-loader","eslint","eslint-loader","eslint-plugin-react","file-loader","postcss-loader","rimraf","style-loader","url-loader","webpack","webpack-dev-server","webpack-notifier"],"dependencyCount":21,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","webpack"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled"]},{"githubUrl":"https://github.com/coryhouse/react-slingshot","githubPath":"coryhouse/react-slingshot","githubUserName":"coryhouse","githubRepoName":"react-slingshot","description":"React + Redux starter kit / boilerplate with Babel, hot reloading, testing, linting and a working example app, all built in","homepage":"","updatedAt":"2017-05-27T17:20:29Z","createdAt":"2015-12-31T22:04:53Z","pushedAt":"2017-05-19T14:36:42Z","dependencies":["object-assign","react","react-dom","react-redux","react-router","react-router-redux","redux","redux-thunk","autoprefixer","babel-cli","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-remove-prop-types","babel-polyfill","babel-preset-env","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-1","browser-sync","chalk","connect-history-api-fallback","coveralls","css-loader","enzyme","eslint","eslint-plugin-import","eslint-plugin-react","eslint-watch","extract-text-webpack-plugin","file-loader","html-webpack-plugin","identity-obj-proxy","jest","json-loader","mockdate","node-sass","npm-run-all","opn-cli","postcss-loader","prompt","prop-types","react-hot-loader","react-test-renderer","redux-immutable-state-invariant","replace","rimraf","sass-loader","style-loader","url-loader","webpack","webpack-bundle-analyzer","webpack-dev-middleware","webpack-hot-middleware","webpack-md5-hash"],"dependencyCount":57,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/a-tarasyuk/rr-boilerplate","githubPath":"a-tarasyuk/rr-boilerplate","githubUserName":"a-tarasyuk","githubRepoName":"rr-boilerplate","description":"Lightweight React&Redux boilerplate","homepage":"","updatedAt":"2017-05-17T11:24:35Z","createdAt":"2016-01-27T12:00:49Z","pushedAt":"2017-04-09T14:16:20Z","dependencies":["babel-eslint","babel-loader","classnames","history","normalize.css","prop-types","react","react-dom","react-redux","react-router-dom","react-router-redux","redux","redux-logger","redux-thunk","stylelint","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","compression-webpack-plugin","css-loader","eslint","eslint-config-airbnb","eslint-import-resolver-webpack","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","html-webpack-plugin","http-server","postcss-cssnext","postcss-import","postcss-loader","rimraf","style-loader","stylelint","stylelint-config-standard","stylelint-webpack-plugin","webpack","webpack-dev-server","webpack-merge"],"dependencyCount":45,"tags":["babel","CSS Modules","es6","linter","redux","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","css-modules","es2015","es2016","es6+","es7","esnext","lint","transpiled","webpack2"]},{"githubUrl":"https://github.com/pauldotknopf/react-aspnet-boilerplate","githubPath":"pauldotknopf/react-aspnet-boilerplate","githubUserName":"pauldotknopf","githubRepoName":"react-aspnet-boilerplate","description":"A starting point for building isomorphic React applications with ASP.NET Core 1, leveraging existing techniques.","homepage":"","updatedAt":"2017-05-27T00:37:03Z","createdAt":"2016-02-20T18:15:35Z","pushedAt":"2017-02-21T20:02:59Z","dependencies":["babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","bootstrap-loader","bootstrap-sass","bootstrap-social","classnames","css-loader","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","font-awesome","gulp","gulp-util","lodash","node-sass","promise-window","react","react-bootstrap","react-dom","react-helmet","react-redux","react-router","react-router-bootstrap","react-router-redux","redux","redux-form","redux-thunk","resolve-url-loader","sass-loader","serialize-javascript","style-loader","superagent","url-loader","webpack"],"dependencyCount":43,"tags":["babel","es6","linter","react-router","redux","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","router","transpiled"]},{"githubUrl":"https://github.com/wdjungst/react-project","githubPath":"wdjungst/react-project","githubUserName":"wdjungst","githubRepoName":"react-project","description":"State of the art web development with React.js.","homepage":"","updatedAt":"2017-05-27T15:10:22Z","createdAt":"2016-02-24T03:13:35Z","pushedAt":"2016-11-01T03:41:16Z","dependencies":["cli-color","dotenv","express","prompt","shelljs","source-map-support","webpack","webpack-dev-server","assert","babel-cli","babel-eslint","babel-preset-es2015","babel-preset-react","babel-preset-stage-1","babel-register","eslint","eslint-config-rackt","eslint-plugin-react","expect","mocha","nodemon"],"dependencyCount":21,"tags":["CSS Modules","es6","linter","tests","webpack"],"tagAlternateNames":["CSS Modules","css-modules","es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/mikechabot/react-boilerplate","githubPath":"mikechabot/react-boilerplate","githubUserName":"mikechabot","githubRepoName":"react-boilerplate","description":"A slightly opinionated yet dead simple boilerplate for ReactJS and Webpack 2","homepage":"http://mikechabot.github.io/react-boilerplate/","updatedAt":"2017-05-13T20:01:45Z","createdAt":"2016-03-07T17:57:59Z","pushedAt":"2017-05-07T04:45:00Z","dependencies":["autoprefixer","axios","babel-core","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","chai","coveralls","cross-env","css-loader","del","eslint","eslint-config-standard","eslint-loader","eslint-plugin-import","eslint-plugin-node","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","express","extract-text-webpack-plugin","file-loader","html-webpack-plugin","istanbul","jsdom","json-loader","lodash","mocha","moment","node-sass","postcss-loader","prop-types","react","react-addons-test-utils","react-dom","react-hot-loader","react-redux","react-router","redux","redux-entity","redux-logger","redux-mock-store","redux-thunk","sass-loader","sinon","style-loader","svg-react-loader","url-loader","webpack","webpack-dev-server"],"dependencyCount":52,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/bharani91/react-express-starter","githubPath":"bharani91/react-express-starter","githubUserName":"bharani91","githubRepoName":"react-express-starter","description":"Yet another starting point for creating React apps. Uses React Router, Webpack, HMR, PostCSS & Express.","homepage":"https://react-express-starter.herokuapp.com","updatedAt":"2017-05-25T15:42:54Z","createdAt":"2016-03-19T09:29:00Z","pushedAt":"2017-03-21T05:59:36Z","dependencies":["lodash","babel-core","babel-polyfill","babel-runtime","express","react","react-dom","react-router","react-bootstrap","resolve-url-loader","rimraf","sass-loader","style-loader","url-loader","webpack","autoprefixer","babel-loader","babel-plugin-react-transform","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","bootstrap-loader","bootstrap-sass","css-loader","extract-text-webpack-plugin","file-loader","html-webpack-plugin","node-sass","postcss-loader","postcss-nested","better-npm-run","react-hot-loader","react-transform-catch-errors","react-transform-hmr","redbox-react","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware"],"dependencyCount":40,"tags":["babel","es6","hmr","live reload","react-router","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","transpiled"]},{"githubUrl":"https://github.com/balupton/minimal-react","githubPath":"balupton/minimal-react","githubUserName":"balupton","githubRepoName":"minimal-react","description":"React starter kit that is more minimal than essential","homepage":"","updatedAt":"2016-07-10T18:24:25Z","createdAt":"2016-03-21T04:57:39Z","pushedAt":"2016-04-22T11:34:56Z","dependencies":["babel-core","babel-polyfill","babel-runtime","express","react","react-dom","react-router","autoprefixer","ava","babel-eslint","babel-loader","babel-plugin-syntax-decorators","babel-plugin-transform-decorators-legacy","babel-plugin-transform-runtime","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","coveralls","css-loader","enzyme","eslint","eslint-plugin-babel","eslint-plugin-flow-vars","eslint-plugin-react","extract-text-webpack-plugin","hostenv","nyc","postcss-loader","postcss-nested","projectz","radium","react-addons-test-utils","react-hot-loader","sinon","style-loader","webpack","webpack-dev-server"],"dependencyCount":38,"tags":["babel","es6","hmr","linter","live reload","react-router","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled"]},{"githubUrl":"https://github.com/foxhound87/rfx-stack","githubPath":"foxhound87/rfx-stack","githubUserName":"foxhound87","githubRepoName":"rfx-stack","description":"RFX Stack - Universal App featuring: React + Feathers + MobX","homepage":"","updatedAt":"2017-05-23T08:53:03Z","createdAt":"2016-03-24T13:30:04Z","pushedAt":"2017-04-14T11:40:19Z","dependencies":["animate.css","autoprefixer","babel-register","body-parser","classnames","compression","cookie-parser","cors","cross-env","css-modules-require-hook","dotenv","ejs","faker","feathers","feathers-authentication","feathers-authentication-client","feathers-authentication-jwt","feathers-authentication-local","feathers-authentication-oauth2","feathers-configuration","feathers-errors","feathers-hooks","feathers-hooks-common","feathers-mongoose","feathers-permissions","feathers-rest","feathers-socketio","font-awesome","getenv","globule","isdev","isomorphic-fetch","js-cookie","jwt-decode","lodash","material-ui","mobx","mobx-react","mobx-react-devtools","mobx-react-form","mobx-react-form-devtools","mobx-react-matchmedia","moment","mongoose","morgan","normalize.css","react","react-dom","react-helmet","react-hot-loader","react-modal","react-pagify","react-parallax","react-router","react-tap-event-plugin","react-timeago","rfx-core","serve-static","socket.io-client","tachyons","uuid","validatorjs","winston","babel-core","babel-eslint","babel-loader","babel-plugin-system-import-transformer","babel-plugin-transform-class-properties","babel-plugin-transform-decorators-legacy","babel-plugin-transform-runtime","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-root-import","bluebird","browser-sync","browser-sync-webpack-plugin","css-loader","cssnano","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","friendly-errors-webpack-plugin","imports-loader","isomorphic-style-loader","json-loader","nodemon","postcss","postcss-extend","postcss-focus","postcss-import","postcss-loader","postcss-url","precss","progress-bar-webpack-plugin","start-server-webpack-plugin","style-loader","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware","webpack-merge","webpack-node-externals","whatwg-fetch"],"dependencyCount":110,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","MobX","react-router","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled","webpack2"]},{"githubUrl":"https://github.com/birkir/react-typescript-iso-kit","githubPath":"birkir/react-typescript-iso-kit","githubUserName":"birkir","githubRepoName":"react-typescript-iso-kit","description":"Another starter kit with typescript, jest, isomorphic, webpack etc.","homepage":null,"updatedAt":"2017-02-10T02:57:50Z","createdAt":"2016-04-03T22:36:29Z","pushedAt":"2016-05-19T11:19:04Z","dependencies":["babel-core","babel-jest","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","css-loader","ejs","express","extract-text-webpack-plugin","http-proxy-middleware","jest-cli","jest-css-modules","less","less-loader","react","react-addons-test-utils","react-dom","react-hot-loader","react-router","style-loader","ts-loader","typescript","typings","webpack","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware","source-map-support","browser-sync"],"dependencyCount":32,"tags":["babel","es6","hmr","live reload","react-router","tests","TypeScript","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/tosFa/react-cross-platform-boardgame-example","githubPath":"tosFa/react-cross-platform-boardgame-example","githubUserName":"tosFa","githubRepoName":"react-cross-platform-boardgame-example","description":"This is an example app that shows off a web, ios and android app with the same codebase using ReactJS, react-native, redux, webpack, babel, express and socket.io","homepage":null,"updatedAt":"2017-05-06T22:10:05Z","createdAt":"2016-04-06T12:54:22Z","pushedAt":"2016-10-05T19:58:16Z","dependencies":["babel-polyfill","express","extract-text-webpack-plugin","foundation-sites","history","html-webpack-plugin","immutable","isomorphic-fetch","keymirror","react","react-addons-pure-render-mixin","react-dom","react-native","react-redux","react-router","react-router-redux","redux","redux-logger","redux-promise","redux-thunk","socket.io","socket.io-client","style-loader","autoprefixer-loader","babel-cli","babel-core","babel-loader","babel-plugin-react-transform","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","babel-register","bootstrap-sass","chai","chai-immutable","css-loader","file-loader","jsdom","mocha","node-sass","react-hot-loader","react-transform-hmr","remote-redux-devtools","sass-loader","style-loader","url-loader","webpack","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware"],"dependencyCount":51,"tags":["babel","es6","hmr","live reload","react native","react-router","redux","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/atSistemas/react-base","githubPath":"atSistemas/react-base","githubUserName":"atSistemas","githubRepoName":"react-base","description":"atSistemas React/Redux Isomorphic Platform","homepage":"","updatedAt":"2017-04-25T11:54:47Z","createdAt":"2016-04-11T14:55:41Z","pushedAt":"2017-05-24T15:21:17Z","dependencies":["babel-core","compression","css-modules-require-hook","express","react","react-dom","react-redux","react-router","redux","assets-webpack-plugin","babel-cli","babel-eslint","babel-loader","babel-plugin-transform-class-properties","babel-plugin-transform-object-rest-spread","babel-plugin-webpack-alias","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-0","babel-register","chai","classnames","copy-webpack-plugin","coveralls","cross-env","css-loader","css-modules-require-hook","enzyme","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","generator-webapp","google-map-react","ignore-styles","immutable","isomorphic-fetch","istanbul","jsdom","mocha","nyc","postcss-browser-reporter","postcss-cssnext","postcss-import","postcss-loader","postcss-modules-extract-imports","postcss-nested","postcss-url","progress-bar-webpack-plugin","react-addons-linked-state-mixin","react-addons-test-utils","react-controllables","react-ink","react-pure-render","redux-logger","rimraf","sinon","style-loader","stylelint","supports-color","webpack","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware","yeoman-option-or-prompt","yo"],"dependencyCount":70,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/codefoundries/UniversalRelayBoilerplate","githubPath":"codefoundries/UniversalRelayBoilerplate","githubUserName":"codefoundries","githubRepoName":"UniversalRelayBoilerplate","description":"Boilerplate + examples for React Native (iOS, Android), React (isomorphic, Material-UI), Relay, GraphQL, JWT, Node.js, Apache Cassandra, DynamoDB, waterline","homepage":"http://codefoundries.com/products/UniversalRelayBoilerplate.html","updatedAt":"2017-05-27T10:32:16Z","createdAt":"2016-04-20T07:33:28Z","pushedAt":"2017-05-09T07:37:25Z","dependencies":["babel-polyfill","bcrypt","body-parser","cassandra-driver","classnames","compression","cookie-parser","dataloader","deepmerge","dotenv","ejs","express","express-cassandra","express-graphql","graphql","graphql-relay","isomorphic-relay","isomorphic-relay-router","joi","jwt-simple","material-ui","material-ui-country-flags","material-ui-credit-card-icons","mobile-detect","multer","node-fetch","node-uuid","react","react-dom","react-event-listener","react-helmet","react-native","react-native-device-info","react-native-keychain","react-relay","react-relay-network-layer","react-router","react-router-relay","react-tap-event-plugin","relay-local-schema","vogels","winston","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-react-transform","babel-plugin-transform-runtime","babel-preset-react","babel-preset-react-native-stage-0","babel-preset-stage-3","babel-relay-plugin","babel-relay-plugin-loader","babel-runtime","better-npm-run","concurrently","css-loader","eslint","eslint-loader","eslint-plugin-react","extract-text-webpack-plugin","nodemon","react-hot-loader","react-native-drawer","react-native-elements","react-native-listitem","react-native-modalbox","react-native-router-flux","react-native-vector-icons","react-tween-state","recursive-readdir-sync","replace","style-loader","webpack","webpack-dev-server","whatwg-fetch"],"dependencyCount":76,"tags":["babel","es6","hmr","linter","live reload","react native","react-router","universal","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","transpiled","webpack2"]},{"githubUrl":"https://github.com/barbar/vortigern","githubPath":"barbar/vortigern","githubUserName":"barbar","githubRepoName":"vortigern","description":"A universal boilerplate for building web applications w/ TypeScript, React, Redux, Server Side Rendering and more.","homepage":"https://barbar.github.io/vortigern","updatedAt":"2017-05-27T04:15:36Z","createdAt":"2016-04-25T08:28:28Z","pushedAt":"2017-05-10T03:53:41Z","dependencies":["chalk","compression","es6-promise","express","history","isomorphic-fetch","react","react-css-modules","react-dom","react-helmet","react-redux","react-router","react-router-redux","redux","redux-connect","redux-logger","redux-thunk","serve-favicon","@types/base16","@types/chai","@types/classnames","@types/enzyme","@types/history","@types/isomorphic-fetch","@types/mocha","@types/node","@types/react","@types/react-addons-test-utils","@types/react-dom","@types/react-helmet","@types/react-redux","@types/react-router","@types/react-router-redux","@types/redux","@types/redux-devtools","@types/redux-devtools-dock-monitor","@types/redux-devtools-log-monitor","@types/redux-mock-store","@types/redux-thunk","@types/sinon","@types/source-map","@types/uglify-js","@types/webpack","awesome-typescript-loader","babel-core","babel-loader","babel-preset-es2015","chai","classnames","cross-env","css-loader","enzyme","extract-text-webpack-plugin","fetch-mock","file-loader","isomorphic-style-loader","istanbul-instrumenter-loader","json-loader","karma","karma-chai","karma-chrome-launcher","karma-coverage","karma-es6-shim","karma-firefox-launcher","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-sourcemap-loader","karma-webpack","mocha","phantomjs-prebuilt","postcss-assets","postcss-cssnext","postcss-loader","react-addons-test-utils","react-hot-loader","redux-mock-store","rimraf","source-map-loader","style-loader","stylelint","tslint","tslint-loader","tslint-react","typescript","url-loader","webpack","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware","webpack-manifest-plugin"],"dependencyCount":91,"tags":["babel","es6","hmr","live reload","react-router","redux","tests","TypeScript","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/lubien/koa-react-redux-universal-boilerplate","githubPath":"lubien/koa-react-redux-universal-boilerplate","githubUserName":"lubien","githubRepoName":"koa-react-redux-universal-boilerplate","description":"[Unmaintained] A fullstack Koa + React + Redux Universal Boilerplate to speed up your development process.","homepage":"https://koa-react-boilerplate.herokuapp.com/","updatedAt":"2017-04-10T03:06:31Z","createdAt":"2016-05-17T18:51:00Z","pushedAt":"2016-06-03T12:56:48Z","dependencies":["assets-webpack-plugin","babel-cli","babel-core","babel-loader","babel-plugin-module-alias","babel-plugin-resolver","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-2","cross-env","dotenv","isomorphic-fetch","json-loader","koa","koa-bodyparser","koa-compress","koa-conditional-get","koa-convert","koa-etag","koa-generic-session","koa-generic-session-mongo","koa-mount","koa-passport","koa-router","koa-static","koa-views","mongoose","passport-github","pug","react","react-dom","react-helmet","react-loader","react-redux","react-redux-loading-bar","react-router","react-router-redux","redux","redux-promise-middleware","redux-thunk","trash-cli","webpack","webpack-externals-plugin","babel-eslint","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","nodemon","react-hot-loader","webpack-dev-server"],"dependencyCount":53,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","transpiled"]},{"githubUrl":"https://github.com/NYTimes/kyt","githubPath":"NYTimes/kyt","githubUserName":"NYTimes","githubRepoName":"kyt","description":"Starting a new JS app? Build, test and run advanced apps with kyt 🔥","homepage":"http://open.blogs.nytimes.com/2016/09/13/introducing-kyt-our-web-app-configuration-toolkit/","updatedAt":"2017-05-26T18:47:50Z","createdAt":"2016-06-03T19:16:26Z","pushedAt":"2017-05-25T18:34:06Z","dependencies":["babel-plugin-syntax-dynamic-import","babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-runtime","babel-preset-latest","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-jsx-source","babel-plugin-transform-react-remove-prop-types","babel-preset-kyt-core","babel-preset-react","commander","inquirer","kyt-utils","lodash.uniq","semver","shelljs","simple-git","assets-webpack-plugin","autoprefixer","babel-cli","babel-core","babel-eslint","babel-jest","babel-loader","babel-polyfill","chokidar","connect-history-api-fallback","css-loader","detect-port","eslint","eslint-config-airbnb","eslint-config-kyt","eslint-plugin-import","eslint-plugin-json","eslint-plugin-jsx-a11y","eslint-plugin-react","express","extract-text-webpack-plugin","file-loader","filesize","glob","gzip-size","identity-obj-proxy","install","jest","lodash.clonedeep","lodash.merge","lodash.once","node-sass","nodemon","postcss-loader","ps-tree","react-hot-loader","sass-loader","source-map-support","strip-ansi","style-loader","stylelint","stylelint-config-kyt","stylelint-config-standard","temp","url-loader","webpack","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware","webpack-merge","webpack-node-externals"],"dependencyCount":68,"tags":["babel","es6","hmr","linter","live reload","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/peter-mouland/react-lego","githubPath":"peter-mouland/react-lego","githubUserName":"peter-mouland","githubRepoName":"react-lego","description":"React-lego : incrementally add more cool stuff to your react app","homepage":"http://react-lego.herokuapp.com/","updatedAt":"2017-05-26T17:28:03Z","createdAt":"2016-06-08T07:18:36Z","pushedAt":"2017-03-30T10:59:44Z","dependencies":["assets-webpack-plugin","axios","babel-core","babel-loader","babel-preset-react","css-loader","cssnano","debug","es6-promise","extract-text-webpack-plugin","http-server","node-sass","postcss-loader","progress-bar-webpack-plugin","react","react-bem-helper","react-document-meta","react-dom","react-router-dom","sass-loader","style-loader","webpack","webpack-visualizer-plugin","babel-cli","babel-eslint","babel-plugin-add-module-exports","babel-plugin-transform-class-properties","babel-plugin-transform-object-rest-spread","babel-preset-env","chai","chai-enzyme","chance","enzyme","eslint","eslint-config-airbnb","eslint-plugin-babel","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","express","http-proxy","jsdom","mocha","nightwatch","nightwatch-html-reporter","pre-commit","pre-push","proxyquire","react-addons-test-utils","sass-lint","selenium-standalone","sinon","sinon-chai","supertest","webpack-dev-server","yargs"],"dependencyCount":56,"tags":["babel","CSS Modules","es6","linter","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","css-modules","es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/ctrlplusb/react-universally","githubPath":"ctrlplusb/react-universally","githubUserName":"ctrlplusb","githubRepoName":"react-universally","description":"A starter kit for universal react applications.","homepage":"","updatedAt":"2017-05-27T04:24:34Z","createdAt":"2016-06-14T21:05:38Z","pushedAt":"2017-05-25T23:24:43Z","dependencies":["app-root-dir","colors","compression","cross-env","dotenv","express","helmet","hpp","modernizr","normalize.css","offline-plugin","prop-types","react","react-async-bootstrapper","react-async-component","react-dom","react-helmet","react-router-dom","serialize-javascript","uuid","assets-webpack-plugin","babel-cli","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-jsx-self","babel-plugin-transform-react-jsx-source","babel-polyfill","babel-preset-env","babel-preset-react","babel-preset-stage-3","babel-template","chokidar","css-loader","enzyme","enzyme-to-json","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","glob","happypack","html-webpack-plugin","husky","jest","lint-staged","md5","modernizr-loader","node-notifier","prettier","prettier-eslint","prettier-eslint-cli","react-addons-test-utils","react-hot-loader","react-test-renderer","regenerator-runtime","rimraf","semver","source-map-support","style-loader","webpack","webpack-bundle-analyzer","webpack-dev-middleware","webpack-hot-middleware","webpack-md5-hash","webpack-node-externals"],"dependencyCount":72,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","tests","universal","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/agrcrobles/react-native-web-boilerplate","githubPath":"agrcrobles/react-native-web-boilerplate","githubUserName":"agrcrobles","githubRepoName":"react-native-web-boilerplate","description":"react-native-web - stateless hmr boilerplate","homepage":"","updatedAt":"2017-05-16T00:10:40Z","createdAt":"2016-07-02T11:50:20Z","pushedAt":"2017-04-24T14:31:05Z","dependencies":["react","react-dom","react-native","react-native-vector-icons","react-native-web","react-navigation","babel-register","babel-core","babel-eslint","babel-loader","babel-preset-react-native","file-loader","flow-bin","react-hot-loader","react-native-cli","url-loader","webpack","webpack-dev-server","electron"],"dependencyCount":19,"tags":["babel","es6","hmr","linter","live reload","minimal","react native","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","simple","transpiled","webpack2"]},{"githubUrl":"https://github.com/xkawi/react-universal-saga","githubPath":"xkawi/react-universal-saga","githubUserName":"xkawi","githubRepoName":"react-universal-saga","description":"Universal React Starter Kit ft. Redux Saga","homepage":"https://react-universal-saga.herokuapp.com","updatedAt":"2017-05-19T17:58:31Z","createdAt":"2016-07-04T02:43:54Z","pushedAt":"2017-05-06T02:58:18Z","dependencies":["compression","express","express-http-proxy","file-loader","hoist-non-react-statics","humps","invariant","isomorphic-fetch","less","less-loader","lodash","normalizr","react","react-dom","react-ga","react-helmet","react-redux","react-router","redux","redux-logger","redux-saga","scroll-behavior","serialize-javascript","serve-favicon","url-loader","warning","webpack-isomorphic-tools","autoprefixer","babel-core","babel-eslint","babel-loader","babel-plugin-add-module-exports","babel-plugin-react-transform","babel-plugin-transform-decorators-legacy","babel-plugin-transform-react-display-name","babel-plugin-transform-runtime","babel-plugin-typecheck","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","babel-runtime","better-npm-run","bootstrap-loader","bootstrap-sass","clean-webpack-plugin","concurrently","eslint","eslint-config-airbnb","css-loader","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","font-awesome","font-awesome-webpack","jest","json-loader","node-sass","postcss-loader","precss","react-a11y","react-addons-test-utils","react-transform-catch-errors","react-transform-hmr","redbox-react","redux-devtools","redux-devtools-dock-monitor","redux-devtools-log-monitor","resolve-url-loader","sass-loader","strip-loader","style-loader","timekeeper","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":78,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","universal","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/djizco/boilerplate-react","githubPath":"djizco/boilerplate-react","githubUserName":"djizco","githubRepoName":"boilerplate-react","description":"A Simple React Boilerplate","homepage":"","updatedAt":"2017-05-26T17:03:38Z","createdAt":"2016-07-04T05:56:22Z","pushedAt":"2017-05-27T05:21:42Z","dependencies":["babel-eslint","body-parser","code","css-loader","enzyme","express","immutability-helper","lab","lab-babel","moment","prop-types","ramda","react","react-dom","react-redux","react-router","react-router-redux","react-tap-event-plugin","redux","redux-devtools","redux-devtools-dock-monitor","redux-devtools-log-monitor","redux-logger","redux-thunk","webpack","webpack-dev-server","babel-core","babel-loader","babel-plugin-webpack-loaders","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","bulma","classnames","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","font-awesome","font-awesome-webpack","html-webpack-plugin","image-webpack-loader","less","less-loader","material-ui","node-sass","nodemon","react-addons-test-utils","sass-loader","style-loader","supertest","url-loader"],"dependencyCount":55,"tags":["babel","es6","linter","react-router","redux","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","router","transpiled","webpack2"]},{"githubUrl":"https://github.com/saikat/react-apollo-starter-kit","githubPath":"saikat/react-apollo-starter-kit","githubUserName":"saikat","githubRepoName":"react-apollo-starter-kit","description":"A production-ready starter kit for making a React/Apollo application.","homepage":"","updatedAt":"2017-05-19T10:48:04Z","createdAt":"2016-07-12T16:01:34Z","pushedAt":"2017-02-03T08:11:56Z","dependencies":["aphrodite","apollo-client","babel-cli","babel-core","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-latest","babel-register","body-parser","eslint-plugin-import","express","graphql","graphql-server-express","graphql-server-express ","graphql-tag","graphql-tools","json-loader","minilog","nodemon","react","react-apollo","react-dom","react-redux","react-router","react-router-redux","redux-thunk","rollbar","webpack","webpack-dev-server","webpack-manifest-plugin","babel-cli","babel-core","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-eslint","babel-register","eslint","eslint-config-airbnb","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","foreman","nodemon","webpack-dev-server"],"dependencyCount":48,"tags":["babel","es6","linter","react-router","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","router","transpiled","webpack2"]},{"githubUrl":"https://github.com/jeffschwartz/react-quickstart","githubPath":"jeffschwartz/react-quickstart","githubUserName":"jeffschwartz","githubRepoName":"react-quickstart","description":"Includes webpack and babel","homepage":null,"updatedAt":"2017-02-10T04:12:09Z","createdAt":"2016-07-15T16:19:10Z","pushedAt":"2016-09-11T16:09:19Z","dependencies":["axios","babel-polyfill","react","react-addons-css-transition-group","react-bootstrap","react-dom","react-redux","react-router","redux","redux-form","redux-thunk","babel-core","babel-eslint","babel-loader","babel-plugin-transform-object-rest-spread","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","eslint","eslint-config-standard","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","redux-devtools","webpack","webpack-dev-server"],"dependencyCount":26,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled"]},{"githubUrl":"https://github.com/goshakkk/no-bs-react-webpack-starter","githubPath":"goshakkk/no-bs-react-webpack-starter","githubUserName":"goshakkk","githubRepoName":"no-bs-react-webpack-starter","description":":no_good::shit: No bullshit React Webpack boilerplate.","homepage":null,"updatedAt":"2017-05-16T19:01:41Z","createdAt":"2016-07-17T12:51:53Z","pushedAt":"2016-07-18T11:51:42Z","dependencies":["babel-polyfill","react","react-dom","autoprefixer","babel-core","babel-loader","babel-plugin-syntax-object-rest-spread","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","css-loader","file-loader","html-webpack-plugin","node-sass","postcss-loader","sass-loader","style-loader","webpack","webpack-dev-server","webpack-validator"],"dependencyCount":20,"tags":["babel","es6","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","transpiled"]},{"githubUrl":"https://github.com/janoist1/universal-react-redux-starter-kit","githubPath":"janoist1/universal-react-redux-starter-kit","githubUserName":"janoist1","githubRepoName":"universal-react-redux-starter-kit","description":"Get started with React, Redux, and React-Router! - With universal rendering!","homepage":"","updatedAt":"2017-05-25T23:27:21Z","createdAt":"2016-07-25T00:06:53Z","pushedAt":"2017-02-03T20:06:16Z","dependencies":["babel-cli","babel-core","babel-loader","babel-plugin-transform-runtime","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","babel-runtime","better-npm-run","clone","css-loader","cssnano","debug","extract-text-webpack-plugin","file-loader","fs-extra","helmet-webpack-plugin","history","html-webpack-plugin","imports-loader","ip","isomorphic-fetch","json-loader","koa","koa-convert","koa-proxy","koa-static","node-sass","normalize.css","postcss-loader","pretty-error","react","react-dom","react-helmet","react-redux","react-resolver","react-router","react-router-redux","react-styling","redux","redux-thunk","rimraf","sass-loader","simple-universal-style-loader","url-loader","webpack","yargs","babel-eslint","babel-plugin-transform-decorators-legacy","chai","chai-as-promised","chai-enzyme","cheerio","codecov","enzyme","eslint","eslint-config-standard","eslint-config-standard-react","eslint-plugin-babel","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","isparta-loader","karma","karma-coverage","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-webpack-with-fast-source-maps","mocha","nodemon","phantomjs-prebuilt","react-addons-test-utils","redbox-react","sinon","sinon-chai","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":80,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","tests","universal","webpack"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/scalable-react/scalable-react-boilerplate","githubPath":"scalable-react/scalable-react-boilerplate","githubUserName":"scalable-react","githubRepoName":"scalable-react-boilerplate","description":":star: Scalable feature-first React micro-framework made for Udacity Alumni collaborative projects","homepage":"https://scalable-react-boilerplate.herokuapp.com/","updatedAt":"2017-05-24T19:59:34Z","createdAt":"2016-07-30T16:33:09Z","pushedAt":"2017-04-09T04:04:37Z","dependencies":["apollo-client","babel-plugin-flow-react-proptypes","babel-plugin-transform-flow-strip-types","cross-env","enzyme","enzyme-to-json","eslint-plugin-flowtype","eslint-plugin-flowtype-errors","expect","express","flow-bin","functional-components","graphql-tag","grommet","history","immutable","isomorphic-fetch","jest","jest-cli","json-loader","markdown-loader","minimist","morgan","node-env-file","offline-plugin","react","react-addons-css-transition-group","react-addons-test-utils","react-addons-update","react-apollo","react-css-modules","react-dom","react-hot-loader","react-intl","react-redux","react-router","react-router-redux","redux","redux-auth-wrapper","redux-form","redux-logger","redux-mock-store","redux-thunk","reselect","serialize-javascript","sinon","styled-components","svg-react-loader","autoprefixer","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-webpack-alias","babel-plugin-webpack-loaders","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-register","babel-runtime","css-loader","eslint","eslint-config-airbnb","eslint-import-resolver-webpack","eslint-loader","eslint-plugin-graphql","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","expect-jsx","extract-text-webpack-plugin","file-loader","html-loader","html-webpack-plugin","node-sass","npm-install-webpack-plugin","null-loader","plop","postcss-loader","precss","redux-devtools","resolve-url-loader","rimraf","sass-loader","style-loader","webpack","webpack-dev-server","webpack-hot-middleware","webpack-manifest-plugin"],"dependencyCount":90,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/BackSpaceTech/react-bootstrap-boilerplate","githubPath":"BackSpaceTech/react-bootstrap-boilerplate","githubUserName":"BackSpaceTech","githubRepoName":"react-bootstrap-boilerplate","description":"Webpack Boilerplate for React-Bootstrap","homepage":"https://backspace.academy/","updatedAt":"2017-04-10T23:04:36Z","createdAt":"2016-08-25T18:38:38Z","pushedAt":"2016-08-27T17:15:09Z","dependencies":["file-loader","react","react-bootstrap","react-dom","url-loader","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-survivejs-kanban","clean-webpack-plugin","css-loader","eslint","eslint-loader","eslint-plugin-react","expose-loader","extract-text-webpack-plugin","gh-pages","html-webpack-plugin","html-webpack-template","isparta-loader","karma","karma-coverage","karma-mocha","karma-phantomjs-launcher","karma-sourcemap-loader","karma-spec-reporter","karma-webpack","mocha","npm-install-webpack-plugin","phantomjs-polyfill","phantomjs-prebuilt","react-addons-perf","react-addons-test-utils","style-loader","webpack","webpack-dev-server","webpack-merge","webpack-validator"],"dependencyCount":41,"tags":["babel","es6","linter","tests","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/Rulox/react-atomic-structure","githubPath":"Rulox/react-atomic-structure","githubUserName":"Rulox","githubRepoName":"react-atomic-structure","description":"Basic Structure for React app following Atomic Design","homepage":null,"updatedAt":"2017-05-22T11:19:01Z","createdAt":"2016-08-26T00:47:59Z","pushedAt":"2017-04-16T00:04:39Z","dependencies":["react","react-dom","react-router","extract-text-webpack-plugin","webpack-uglify-js-plugin","stylelint-webpack-plugin","html-webpack-plugin","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","css-loader","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","node-sass","react-hot-loader","sass-loader","style-loader","webpack","webpack-dev-server"],"dependencyCount":26,"tags":["babel","es6","hmr","linter","live reload","react-router","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","transpiled"]},{"githubUrl":"https://github.com/wellyshen/react-cool-starter","githubPath":"wellyshen/react-cool-starter","githubUserName":"wellyshen","githubRepoName":"react-cool-starter","description":"😎 A starter boilerplate for an universal web app with the best development experience and a focus on performance and best practices.","homepage":"https://github.com/wellyshen/react-cool-starter","updatedAt":"2017-05-27T03:33:15Z","createdAt":"2016-08-29T10:26:56Z","pushedAt":"2017-05-20T15:54:14Z","dependencies":["axios","babel-polyfill","chalk","compression","express","helmet","history","hpp","lodash","morgan","opn","prop-types","react","react-dom","react-helmet","react-hot-loader","react-redux","react-router-config","react-router-dom","react-router-redux","redbox-react","redux","redux-thunk","serialize-javascript","serve-favicon","webpack-isomorphic-tools","autoprefixer","babel-cli","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-istanbul","babel-preset-latest","babel-preset-react","babel-preset-stage-0","better-npm-run","coveralls","css-loader","enzyme","eslint","eslint-config-airbnb","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","flow-bin","image-webpack-loader","imports-loader","jest","nock","node-sass","nodemon","postcss","postcss-loader","react-addons-test-utils","react-test-renderer","redux-mock-store","rimraf","sass-loader","style-loader","stylelint","stylelint-config-standard","stylelint-webpack-plugin","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware","webpack-node-externals"],"dependencyCount":71,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","redux","tests","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/catalin-luntraru/redux-minimal","githubPath":"catalin-luntraru/redux-minimal","githubUserName":"catalin-luntraru","githubRepoName":"redux-minimal","description":"Start building complex react-redux apps today, with this minimalist easy to understand starter kit (boilerplate)","homepage":"http://redux-minimal.js.org/","updatedAt":"2017-05-26T19:58:11Z","createdAt":"2016-09-15T12:13:13Z","pushedAt":"2017-04-28T09:50:00Z","dependencies":["react","react-bootstrap","react-dom","react-redux","react-router","react-router-bootstrap","react-router-redux","redux","redux-form","redux-saga","babel-core","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-3","babel-runtime","clean-webpack-plugin","css-loader","enzyme","extract-text-webpack-plugin","ignore-styles","mocha","node-sass","react-addons-test-utils","react-hot-loader","redux-freeze","sass-loader","style-loader","webpack","webpack-dev-server","whatwg-fetch"],"dependencyCount":32,"tags":["babel","es6","hmr","live reload","react-router","redux","tests","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/jahe/jahe-react-starter","githubPath":"jahe/jahe-react-starter","githubUserName":"jahe","githubRepoName":"jahe-react-starter","description":"A starter project for React, Redux, Webpack 2, SASS, i18n, autoprefixer, ESLint, React Storybook","homepage":"","updatedAt":"2017-03-17T18:41:39Z","createdAt":"2016-09-21T22:54:26Z","pushedAt":"2017-03-13T08:51:01Z","dependencies":["intl","json-loader","moment","react","react-dom","react-intl","react-redux","redux","redux-thunk","@kadira/react-storybook-addon-info","@kadira/storybook","@kadira/storybook-addon-knobs","@kadira/storybook-addons","autoprefixer","babel-cli","babel-core","babel-jest","babel-loader","babel-plugin-react-intl","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","cross-env","css-loader","eslint","eslint-plugin-react","extract-text-webpack-plugin","jest-cli","node-sass","postcss-loader","react-hot-loader","react-intl-translations-manager","rimraf","sass-loader","style-loader","webpack","webpack-dev-server","webpack-validator"],"dependencyCount":38,"tags":["babel","es6","hmr","linter","live reload","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/granmoe/react-redux-saga-boilerplate","githubPath":"granmoe/react-redux-saga-boilerplate","githubUserName":"granmoe","githubRepoName":"react-redux-saga-boilerplate","description":"React, Redux, Redux Saga, Immutable, ES7, Webpack, Babel frontend boilerplate. Using the \"ducks\" pattern for redux and saga code. Jest for testing.","homepage":"","updatedAt":"2017-05-11T20:35:04Z","createdAt":"2016-10-04T04:40:55Z","pushedAt":"2017-05-09T02:26:34Z","dependencies":["autoprefixer","babel-eslint","babel-loader","babel-plugin-transform-es2015-destructuring","babel-plugin-transform-es2015-parameters","babel-polyfill","babel-preset-env","babel-preset-es2015","babel-preset-react","babel-preset-react-hmre","babel-preset-stage-1","babel-preset-stage-2","better-npm-run","css-loader","eslint","eslint-config-standard","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","extract-text-webpack-plugin","imagemin-webpack-plugin","immutable","jest","less","less-loader","react","react-dom","react-json-tree","react-redux","react-router","redux","redux-immutable","redux-logger","redux-saga","style-loader","webpack","webpack-dashboard","webpack-dev-server","whatwg-fetch"],"dependencyCount":39,"tags":["es6","linter","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/zeit/next.js","githubPath":"zeit/next.js","githubUserName":"zeit","githubRepoName":"next.js","description":"Framework for server-rendered React apps","homepage":"https://zeit.co/blog/next2","updatedAt":"2017-05-27T18:50:10Z","createdAt":"2016-10-05T23:32:51Z","pushedAt":"2017-05-27T17:46:59Z","dependencies":["ansi-html","babel-core","babel-generator","babel-loader","babel-plugin-module-resolver","babel-plugin-react-require","babel-plugin-transform-class-properties","babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-object-rest-spread","babel-plugin-transform-react-jsx-source","babel-plugin-transform-react-remove-prop-types","babel-plugin-transform-runtime","babel-preset-env","babel-preset-react","babel-runtime","case-sensitive-paths-webpack-plugin","cross-spawn","del","etag","fresh","friendly-errors-webpack-plugin","glob","glob-promise","htmlescape","http-status","is-windows-bash","json-loader","loader-utils","md5-file","minimist","mitt","mkdirp-then","mv","mz","path-match","pkg-up","prop-types","react-hot-loader","send","source-map-support","strip-ansi","styled-jsx","touch","unfetch","url","uuid","webpack","webpack-dev-middleware","webpack-hot-middleware","write-file-webpack-plugin","babel-eslint","babel-jest","babel-plugin-istanbul","babel-plugin-transform-remove-strict-mode","babel-preset-es2015","benchmark","cheerio","chromedriver","coveralls","cross-env","fly","fly-babel","fly-clear","fly-esnext","fly-watch","husky","jest-cli","lint-staged","node-fetch","node-notifier","nyc","react","react-dom","standard","wd"],"dependencyCount":75,"tags":["babel","es6","hmr","linter","live reload","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/WeLikeGraphQL/universal-react-apollo-example","githubPath":"WeLikeGraphQL/universal-react-apollo-example","githubUserName":"WeLikeGraphQL","githubRepoName":"universal-react-apollo-example","description":"Universal React Apollo App (GraphQL) consuming: https://github.com/WeLikeGraphQL/wordpress-graphql-api-example!","homepage":"","updatedAt":"2017-05-23T15:37:36Z","createdAt":"2016-10-07T13:37:53Z","pushedAt":"2017-02-19T17:12:58Z","dependencies":["apollo-client","babel-polyfill","dotenv","flag-icon-css","graphql","graphql-tag","isomorphic-fetch","react","react-apollo","react-bootstrap","react-css-modules","react-dom","react-redux","react-scroll","recompose","redux","wow.js","babel-cli","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-transform-decorators-legacy","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-display-name","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-remove-prop-types","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","chai","copy-webpack-plugin","cross-env","css-loader","enzyme","eslint","eslint-config-airbnb","eslint-plugin-graphql","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","express","extract-text-webpack-plugin","helmet","imports-loader","jest","json-loader","nodemon","null-loader","postcss-cssnext","postcss-import","postcss-loader","postcss-sassy-mixins","react-addons-test-utils","react-hot-loader","react-test-renderer","redbox-react","rimraf","sinon","style-loader","stylelint-webpack-plugin","sync-request","url-loader","webpack","webpack-dev-middleware","webpack-hot-middleware"],"dependencyCount":66,"tags":["babel","CSS Modules","es6","hmr","linter","live reload","redux","tests","universal","webpack"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","isomorphic","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/diegohaz/arc","githubPath":"diegohaz/arc","githubUserName":"diegohaz","githubRepoName":"arc","description":"A progressive React starter kit based on the Atomic Design methodology","homepage":"https://arc.js.org","updatedAt":"2017-05-27T17:55:52Z","createdAt":"2016-10-09T06:34:28Z","pushedAt":"2017-05-27T18:17:59Z","dependencies":["history","lodash","prop-types","react","react-dom","react-hot-loader","react-modal","react-router-dom","styled-components","styled-theme","styled-tools","@kadira/storybook","@webpack-blocks/dev-server2","@webpack-blocks/webpack2","babel-core","babel-eslint","babel-jest","babel-loader","babel-plugin-styled-components","babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-react-remove-prop-types","babel-preset-env","babel-preset-react","babel-preset-stage-1","copyfiles","cross-env","enzyme","eslint","eslint-config-airbnb","eslint-import-resolver-webpack","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-no-unused-vars-rest","eslint-plugin-react","file-loader","html-webpack-plugin","jest-cli","opn-cli","raw-loader","react-test-renderer","rimraf","url-loader","webpack","webpack-blocks-happypack","webpack-blocks-split-vendor","webpack-dev-server"],"dependencyCount":46,"tags":["babel","es6","hmr","linter","live reload","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/jquintozamora/react-es6-webpack-minimal-starter-template","githubPath":"jquintozamora/react-es6-webpack-minimal-starter-template","githubUserName":"jquintozamora","githubRepoName":"react-es6-webpack-minimal-starter-template","description":"Simple Starter Template for React, ES6, SCSS, Webpack and Live Reloading (React Hot Loader 3)","homepage":"","updatedAt":"2017-05-26T21:47:08Z","createdAt":"2016-11-03T21:54:46Z","pushedAt":"2017-02-25T20:52:23Z","dependencies":["react","react-dom","babel-core","babel-loader","babel-plugin-transform-class-properties","babel-preset-es2015","babel-preset-react","css-loader","extract-text-webpack-plugin","node-sass","react-hot-loader","sass-loader","style-loader","webpack","webpack-dev-server","webpack-visualizer-plugin"],"dependencyCount":16,"tags":["babel","es6","hmr","live reload","minimal","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","simple","transpiled","webpack2"]},{"githubUrl":"https://github.com/LEINWAND/react-redux-app","githubPath":"LEINWAND/react-redux-app","githubUserName":"LEINWAND","githubRepoName":"react-redux-app","description":"An opinionated development-ready React-Redux boilerplate that will instantly get you going.","homepage":"","updatedAt":"2017-05-12T05:21:02Z","createdAt":"2016-11-11T16:43:07Z","pushedAt":"2017-04-05T18:58:39Z","dependencies":["axios","classnames","express","lodash","react","react-dom","react-redux","react-router","react-router-redux","redux","redux-logger","redux-promise","redux-thunk","babel-core","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-2","clean-webpack-plugin","concurrently","css-loader","flow-bin","node-sass","react-hot-loader","sass-loader","style-loader","webpack","webpack-dev-server"],"dependencyCount":28,"tags":["babel","es6","hmr","live reload","react-router","redux","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","router","transpiled"]},{"githubUrl":"https://github.com/andy9775/YARSP","githubPath":"andy9775/YARSP","githubUserName":"andy9775","githubRepoName":"YARSP","description":"Yet Another React Starter Pack: A starter pack for ReactJS containing code splitting, testing and an api endpoint.","homepage":null,"updatedAt":"2017-05-13T00:14:38Z","createdAt":"2016-11-14T02:24:19Z","pushedAt":"2016-12-09T23:38:34Z","dependencies":["axios","babel-cli","babel-loader","babel-plugin-react-transform","babel-plugin-transform-class-properties","babel-plugin-transform-react-constant-elements","babel-plugin-transform-react-inline-elements","babel-plugin-transform-react-pure-class-to-function","babel-plugin-transform-react-remove-prop-types","babel-plugin-transform-runtime","babel-plugin-webpack-alias","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","babel-runtime","bluebird","body-parser","chalk","codecov","compression","cookie-parser","css-loader","detect-node","esformatter-jsx","eslint","express","express-handlebars","extract-text-webpack-plugin","file-loader","helmet","html-webpack-plugin","immutable","lodash","method-override","morgan","node-sass","react","react-dom","react-redux","react-router","redux","sass-loader","serve-favicon","style-loader","webpack","babel-core","babel-eslint","babel-plugin-transform-runtime","babel-polyfill","babel-preset-react-hmre","chai","chai-as-promised","codeclimate-test-reporter","coveralls","enzyme","esformatter","esformatter-add-trailing-commas","esformatter-braces","esformatter-collapse-objects","esformatter-jquery-chain","esformatter-jsx","esformatter-literal-notation","esformatter-parseint","esformatter-quote-props","esformatter-spaced-lined-comment","esformatter-var-each","eslint","eslint-config-airbnb","eslint-import-resolver-webpack","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","handlebars","istanbul","mocha","mocha-clean","mockery","mute","react-addons-test-utils","react-tools","react-transform-hmr","redbox-react","require-reload","rewire","sinon","sinon-chai","sinon-express-mock","supertest","webpack-dev-middleware","webpack-dev-server","webpack-hot-middleware"],"dependencyCount":91,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/madnight/react-webpack-babel-karma-boilerplate","githubPath":"madnight/react-webpack-babel-karma-boilerplate","githubUserName":"madnight","githubRepoName":"react-webpack-babel-karma-boilerplate","description":"https://madnight.github.io/react-webpack-babel-karma-boilerplate","homepage":"","updatedAt":"2017-01-24T07:50:41Z","createdAt":"2016-12-23T22:46:19Z","pushedAt":"2017-05-20T10:48:18Z","dependencies":["axios","babel-runtime","bootstrap","lodash","react-helmet","babel-cli","babel-core","babel-jest","babel-loader","babel-plugin-add-module-exports","babel-plugin-react-html-attrs","babel-plugin-transform-class-properties","babel-plugin-transform-decorators-legacy","babel-plugin-transform-runtime","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","css-loader","enzyme","eslint","eslint-config-standard","eslint-plugin-import","eslint-plugin-mocha","eslint-plugin-promise","eslint-plugin-react","eslint-plugin-standard","expect.js","extract-text-webpack-plugin","file-loader","gulp","gulp-gh-pages","gulp-htmlmin","html-loader","html-minifier","html-webpack-plugin","ignore-loader","inquirer-confirm","istanbul-instrumenter-loader","jest","jsdom","json-loader","karma","karma-babel-preprocessor","karma-chrome-launcher","karma-coverage","karma-firefox-launcher","karma-mocha","karma-mocha-reporter","karma-phantomjs-launcher","karma-phantomjs2-launcher","karma-sinon-chai","karma-sourcemap-loader","karma-webpack","markdown-loader","mocha","react","react-addons-test-utils","react-bootstrap","react-bootstrap-table","react-data-components","react-dom","react-test-renderer","sinon","style-loader","stylus","stylus-loader","webpack","webpack-browser-plugin","webpack-cleanup-plugin","webpack-dev-server"],"dependencyCount":71,"tags":["babel","es6","linter","tests","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","lint","test","transpiled","unit test"]},{"githubUrl":"https://github.com/jquintozamora/react-typescript-webpack2-cssModules-postCSS","githubPath":"jquintozamora/react-typescript-webpack2-cssModules-postCSS","githubUserName":"jquintozamora","githubRepoName":"react-typescript-webpack2-cssModules-postCSS","description":"Simple Starter Template for React, TypeScript, postCSS, ITCSS, CSS-Modules, Webpack 2 and Live Reloading (React Hot Loader 3)","homepage":"","updatedAt":"2017-05-25T14:56:33Z","createdAt":"2017-02-02T18:25:20Z","pushedAt":"2017-05-26T08:57:12Z","dependencies":["@types/react","@types/react-dom","moment","react","react-dom","@types/node","autoprefixer","css-loader","extract-text-webpack-plugin","path","postcss-custom-properties","postcss-import","postcss-loader","postcss-nesting","react-hot-loader","source-map-loader","style-loader","stylelint","ts-loader","tslint","tslint-react","typescript","webpack","webpack-dev-server","webpack-visualizer-plugin"],"dependencyCount":25,"tags":["CSS Modules","hmr","live reload","TypeScript","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","auto reload","browser reload","css-modules","hot","hot module reloading","webpack2"]},{"githubUrl":"https://github.com/brybrophy/brophy-react-starter","githubPath":"brybrophy/brophy-react-starter","githubUserName":"brybrophy","githubRepoName":"brophy-react-starter","description":"A React and Express Boilerplate With Fully Built Front and Back Ends","homepage":"","updatedAt":"2017-05-09T18:28:07Z","createdAt":"2017-02-05T04:11:42Z","pushedAt":"2017-04-01T06:55:37Z","dependencies":["axios","body-parser","bookshelf","bookshelf-camelcase","compression","cookie-parser","dotenv","express","faker","http-server","humps","include-media","joi","knex","lazy-route","mobx","mobx-react","mobx-react-devtools","moment","morgan","package","pg","react","react-dom","react-router-dom","whatwg-fetch","autoprefixer","babel-core","babel-loader","babel-plugin-transform-async-to-generator","babel-plugin-transform-decorators-legacy","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","chai","css-loader","extract-text-webpack-plugin","html-webpack-plugin","image-webpack-loader","mocha","node-sass","postcss-loader","precss","react-hot-loader","resolve-url-loader","rimraf","sass-loader","style-loader","supertest","url-loader","webpack","webpack-dev-server"],"dependencyCount":53,"tags":["babel","es6","hmr","live reload","MobX","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/developer239/ReactReduxApolloGraphQLHotBoilerplate","githubPath":"developer239/ReactReduxApolloGraphQLHotBoilerplate","githubUserName":"developer239","githubRepoName":"ReactReduxApolloGraphQLHotBoilerplate","description":"It was kind of impossible to find React Redux Apollo Hot boilerplate so I created my own. I hope it will make learning GraphQL easier for you.","homepage":"","updatedAt":"2017-05-23T18:41:18Z","createdAt":"2017-03-08T19:32:19Z","pushedAt":"2017-04-10T21:01:17Z","dependencies":["apollo-client","babel","babel-core","babel-eslint","babel-loader","babel-preset-es2015","babel-preset-react","babel-preset-stage-2","css-loader","file-loader","graphql-tag","immutability-helper","path","postcss-loader","react","react-apollo","react-bootstrap","react-dom","react-hot-loader","react-nl2br","react-redux","react-router","react-router-bootstrap","react-router-redux","redux","redux-form","redux-logger","redux-thunk","style-loader","webpack","webpack-dev-server","babel","babel-core","babel-jest","babel-loader","babel-plugin-module-resolver","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-2","css-loader","enzyme","enzyme-to-json","eslint","eslint-config-airbnb","eslint-import-resolver-webpack","eslint-loader","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","image-webpack-loader","jest","node-sass","path","postcss-loader","react-addons-test-utils","react-hot-loader","react-test-renderer","sass-loader","sinon","style-loader","webpack","webpack-dev-server"],"dependencyCount":63,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/red-gate/redgate-react-starter-kit","githubPath":"red-gate/redgate-react-starter-kit","githubUserName":"red-gate","githubRepoName":"redgate-react-starter-kit","description":":nut_and_bolt: React based SPA (Single-Page Application) starter kit which came out from experiences of a few product teams at Redgate","homepage":"","updatedAt":"2017-05-23T06:20:08Z","createdAt":"2017-03-16T09:35:02Z","pushedAt":"2017-03-17T16:56:17Z","dependencies":["honeycomb","jquery","react","react-dom","react-redux","react-router","react-router-redux","redux","redux-form","redux-logger","redux-thunk","underscore","whatwg-fetch","@types/chai","@types/core-js","@types/deep-freeze","@types/mocha","@types/node","@types/react","@types/react-dom","@types/react-redux","@types/react-router","@types/react-router-redux","@types/redux-form","@types/redux-immutable-state-invariant","@types/redux-logger","@types/underscore","babel-core","babel-loader","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-0","case-sensitive-paths-webpack-plugin","chai","clean-webpack-plugin","colors","concurrently","copy-webpack-plugin","css-loader","deep-freeze","eslint","eslint-plugin-react","eslint-teamcity","expose-loader","file-loader","html-webpack-plugin","json-loader","mocha","mocha-teamcity-reporter","mocha-webpack","node-sass","npm-watch","null-loader","react-addons-test-utils","react-hot-loader","redux-immutable-state-invariant","sass-loader","style-loader","ts-loader","tslint","tslint-eslint-rules","tslint-teamcity-reporter","typescript","url-loader","webpack","webpack-dev-server","webpack-node-externals"],"dependencyCount":68,"tags":["babel","es6","hmr","linter","live reload","react-router","redux","tests","TypeScript","webpack"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","router","test","transpiled","unit test"]},{"githubUrl":"https://github.com/gilamran/fullstack-typescript","githubPath":"gilamran/fullstack-typescript","githubUserName":"gilamran","githubRepoName":"fullstack-typescript","description":"FAST FullStack React with TypeScript starter kit.","homepage":"","updatedAt":"2017-05-23T18:46:32Z","createdAt":"2017-03-28T19:55:36Z","pushedAt":"2017-04-22T12:30:46Z","dependencies":["axios","body-parser","bootstrap","concurrently","express","file-loader","http-proxy-middleware","react","react-bootstrap","react-dom","react-router-bootstrap","react-router-dom","tslib","url-loader","@types/express","@types/node","@types/react-router-dom","awesome-typescript-loader","babel-polyfill","concurrently","cross-env","css-loader","file-loader","html-webpack-plugin","open-browser-webpack-plugin","pre-commit","rimraf","style-loader","tsc-watch","tslint","typescript","url-loader","webpack","webpack-dev-server"],"dependencyCount":34,"tags":["CSS Modules","TypeScript","webpack","webpack 2"],"tagAlternateNames":["CSS Modules","css-modules","webpack2"]},{"githubUrl":"https://github.com/obetomuniz/reeakt","githubPath":"obetomuniz/reeakt","githubUserName":"obetomuniz","githubRepoName":"reeakt","description":"A modern React boilerplate to awesome web applications","homepage":"","updatedAt":"2017-05-25T00:30:33Z","createdAt":"2017-04-16T22:18:59Z","pushedAt":"2017-05-18T18:08:50Z","dependencies":["axios","express","immutable","prop-types","react","react-dom","react-helmet","react-hot-loader","react-redux","react-router-config","react-router-dom","react-router-redux","redux","redux-immutable","redux-saga","serialize-javascript","styled-components","axios-mock-adapter","babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-module-alias","babel-plugin-styled-components","babel-plugin-transform-decorators-legacy","babel-polyfill","babel-preset-es2015","babel-preset-react","babel-preset-stage-2","coveralls","cross-env","css-loader","detect-port","enzyme","eslint","eslint-loader","eslint-plugin-jsx-a11y","eslint-plugin-react","eslint-plugin-redux-saga","extract-text-webpack-plugin","file-loader","html-webpack-plugin","img-loader","jest","react-addons-test-utils","react-test-renderer","redux-saga-testing","style-loader","uglifyjs-webpack-plugin","url-loader","webpack","webpack-bundle-analyzer","webpack-dashboard","webpack-dev-middleware","webpack-hot-middleware","webpack-isomorphic-tools"],"dependencyCount":56,"tags":["babel","es6","hmr","linter","live reload","redux","tests","webpack","webpack 2"],"tagAlternateNames":["auto reload","browser reload","es2015","es2016","es6+","es7","esnext","hot","hot module reloading","lint","test","transpiled","unit test","webpack2"]},{"githubUrl":"https://github.com/vitalybe/ReactNativeUniversal","githubPath":"vitalybe/ReactNativeUniversal","githubUserName":"vitalybe","githubRepoName":"ReactNativeUniversal","description":"A demonstration of sharing javascript react-native code between mobile, desktop and web environments","homepage":"","updatedAt":"2017-05-19T13:16:40Z","createdAt":"2017-04-25T11:08:48Z","pushedAt":"2017-05-02T18:12:14Z","dependencies":["autoprefixer","babel-loader","babel-preset-es2015","babel-preset-react","detect-port","dotenv","electron","react","react-dev-utils","react-dom","react-native","react-native-web","webpack","babel-core","babel-eslint","babel-jest","babel-preset-react-app","babel-preset-react-native","babel-runtime","case-sensitive-paths-webpack-plugin","chalk","concurrently","connect-history-api-fallback","cross-spawn","css-loader","electron-packager","eslint","eslint-config-react-app","eslint-loader","eslint-plugin-flowtype","eslint-plugin-import","eslint-plugin-jsx-a11y","eslint-plugin-react","extract-text-webpack-plugin","file-loader","fs-extra","html-webpack-plugin","http-proxy-middleware","jest","json-loader","object-assign","postcss-loader","promise","react-test-renderer","style-loader","url-loader","wait-on","webpack-dev-server","webpack-manifest-plugin","whatwg-fetch"],"dependencyCount":50,"tags":["babel","es6","linter","react native","tests","universal","webpack"],"tagAlternateNames":["es2015","es2016","es6+","es7","esnext","isomorphic","lint","test","transpiled","unit test"]}] \ No newline at end of file diff --git a/components/support/support.jsx b/src/components/Support/Support.jsx similarity index 99% rename from components/support/support.jsx rename to src/components/Support/Support.jsx index 5657868b9120..e43777d2b3dd 100644 --- a/components/support/support.jsx +++ b/src/components/Support/Support.jsx @@ -1,6 +1,6 @@ import React from 'react'; import Additional from './support-additional.json'; -import './support-style'; +import './Support.scss'; const ranks = { bronze: { diff --git a/components/support/support-style.scss b/src/components/Support/Support.scss similarity index 100% rename from components/support/support-style.scss rename to src/components/Support/Support.scss diff --git a/components/support/support-additional.json b/src/components/Support/support-additional.json similarity index 100% rename from components/support/support-additional.json rename to src/components/Support/support-additional.json diff --git a/src/components/Support/support-backers.json b/src/components/Support/support-backers.json new file mode 100644 index 000000000000..4cefbcd82e86 --- /dev/null +++ b/src/components/Support/support-backers.json @@ -0,0 +1 @@ +[{"id":2711,"createdAt":"2017-01-24T16:38:32.862Z","name":"Angular","firstName":"Angular","lastName":null,"username":"angular","role":"BACKER","avatar":"https://res.cloudinary.com/opencollective/image/upload/v1485288529/angular_uxllte.png","website":"https://angular.io","twitterHandle":"angularjs","totalDonations":null,"firstDonation":null,"lastDonation":null,"tier":"backer"},{"id":2454,"createdAt":"2017-01-18T14:56:37.337Z","name":"Sasha Koss","firstName":"Sasha","lastName":"Koss","username":"kossnocorp","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8138c16a48b248289b392acd7f606f91_b1525eb0-d426-11e6-b711-1589373fcf88.jpeg","website":"https://koss.nocorp.me/","twitterHandle":"kossnocorp","totalDonations":17500,"firstDonation":"2017-01-18T14:56:49.886Z","lastDonation":"2017-07-18T15:57:10.492Z","tier":"backer"},{"id":1589,"createdAt":"2016-10-23T17:50:48.258Z","name":"Matteo ","firstName":"Matteo","lastName":"","username":"matteocng","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/880eea40-9949-11e6-8499-47c396fa434e.jpeg","website":null,"twitterHandle":null,"totalDonations":15400,"firstDonation":"2016-10-23T17:50:55.897Z","lastDonation":"2017-04-23T18:51:37.053Z","tier":"backer"},{"id":1495,"createdAt":"2016-10-15T17:49:11.894Z","name":"Eric Clemmons","firstName":"Eric","lastName":"Clemmons","username":"ericclemmons","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/80ba4bbb7e754ab88f527ce915b6e00d_b81553a0-92ff-11e6-8f79-45c34ba50b74.png","website":"https://github.com/ericclemmons/","twitterHandle":"ericclemmons","totalDonations":15000,"firstDonation":"2016-10-15T17:49:17.448Z","lastDonation":"2017-03-15T18:50:12.101Z","tier":"backer"},{"id":5611,"createdAt":"2017-06-26T08:47:42.652Z","name":"Wonmin ","firstName":"Wonmin","lastName":"","username":"jjwonmin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/35ec4360-5a4c-11e7-9ac7-2d92e6dfa92a.jpg","website":null,"twitterHandle":"https://twitter.com/jjwonmin","totalDonations":15000,"firstDonation":"2017-06-26T08:47:41.541Z","lastDonation":"2017-08-01T09:47:56.334Z","tier":"backer"},{"id":1972,"createdAt":"2016-11-30T21:43:17.910Z","name":"Botika ","firstName":"Botika","lastName":"","username":"mhpoin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/84ac5b10-c38a-11e6-8b53-e1f43226ccdb.jpeg","website":null,"twitterHandle":null,"totalDonations":12500,"firstDonation":"2016-11-30T21:43:22.198Z","lastDonation":"2017-03-30T22:44:37.260Z","tier":"backer"},{"id":2980,"createdAt":"2017-02-04T20:21:39.341Z","name":"Steve Ricciardelli","firstName":"Steve","lastName":"Ricciardelli","username":"sjricc","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a5da9680-eb17-11e6-b96e-159edf58ea97.jpg","website":null,"twitterHandle":null,"totalDonations":12500,"firstDonation":"2017-02-04T20:21:37.744Z","lastDonation":"2017-06-01T21:22:25.880Z","tier":"backer"},{"id":1498,"createdAt":"2016-10-15T19:35:51.162Z","name":"Evan Scott","firstName":"Evan","lastName":"Scott","username":"esjacobs","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6585dd60-6088-11e7-9f4e-6f8999022d4b.jpg","website":"http://yaycmyk.com","twitterHandle":"probablyup","totalDonations":11000,"firstDonation":"2016-10-15T19:35:59.677Z","lastDonation":"2017-08-15T20:36:43.156Z","tier":"backer"},{"id":1517,"createdAt":"2016-10-16T19:26:05.173Z","name":"Kevin James","firstName":"Kevin","lastName":"James","username":"kevinjames","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2b66746774bbd3059b608efde0e0050d_7d9d8b20-93d6-11e6-959d-07ed50026d25.jpeg","website":null,"twitterHandle":null,"totalDonations":11000,"firstDonation":"2016-10-16T19:26:13.841Z","lastDonation":"2017-08-16T20:27:08.801Z","tier":"backer"},{"id":1523,"createdAt":"2016-10-17T06:22:43.346Z","name":"Darko Kukovec","firstName":"Darko","lastName":"Kukovec","username":"darkokukovec","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/c2806126458d43d69b55b74ea35f3190_26077f40-9432-11e6-8e17-c5fbc70a6943.jpeg","website":"http://about.me/darko","twitterHandle":"DarkoKukovec","totalDonations":11000,"firstDonation":"2016-10-17T06:22:50.329Z","lastDonation":"2017-08-17T07:23:29.952Z","tier":"backer"},{"id":1560,"createdAt":"2016-10-20T16:37:04.364Z","name":"Cory House","firstName":"Cory","lastName":"House","username":"housecor","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/19aae881c80d400a828406bb9a42a527_78b68930-96e3-11e6-baa3-69f47ab52eed.jpeg","website":"http://www.bitnative.com","twitterHandle":"housecor","totalDonations":11000,"firstDonation":"2016-10-20T16:37:10.924Z","lastDonation":"2017-08-20T17:37:58.163Z","tier":"backer"},{"id":2326,"createdAt":"2016-12-27T20:54:08.874Z","name":"Open Listings","firstName":"Open","lastName":"Listings","username":"openlistings","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/fef1de50-cc76-11e6-a033-c553d2fe46df.png","website":"https://www.openlistings.com/","twitterHandle":"Open_Listings","totalDonations":10100,"firstDonation":"2016-12-27T20:54:08.491Z","lastDonation":"2016-12-27T20:54:08.491Z","tier":"backer"},{"id":1493,"createdAt":"2016-10-15T17:06:06.404Z","name":"Sean Clayton","firstName":"Sean","lastName":"Clayton","username":"_seanclayton","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ab4ecad0-aae1-11e6-aa69-a5954496a38c.jpg","website":"https://twitter.com/seanybingbong","twitterHandle":"seanybingbong","totalDonations":10000,"firstDonation":"2016-10-15T17:06:12.738Z","lastDonation":"2017-07-15T18:09:01.487Z","tier":"backer"},{"id":3099,"createdAt":"2017-02-13T14:44:56.534Z","name":"Albert Chang","firstName":"Albert","lastName":"Chang","username":"albertwchang","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/820c0b4bb9214c4aa6baa06e9fce77f9_985293a0-f1fc-11e6-bfee-a50bdd128e09.png","website":"https://www.linkedin.com/in/albert-chang-480ba89","twitterHandle":null,"totalDonations":10000,"firstDonation":"2017-02-13T14:44:55.043Z","lastDonation":"2017-02-13T14:44:55.043Z","tier":"backer"},{"id":4102,"createdAt":"2017-04-08T10:07:31.528Z","name":"MicroPyramid ","firstName":"MicroPyramid","lastName":"","username":"micropyramid","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/30ae9070-1ce3-11e7-9f99-ff851881ef04.jpg","website":"https://micropyramid.com","twitterHandle":"micropyramid","totalDonations":10000,"firstDonation":"2017-04-08T10:07:30.452Z","lastDonation":"2017-04-08T10:07:30.452Z","tier":"backer"},{"id":4530,"createdAt":"2017-04-30T23:11:35.728Z","name":"Jon Seidel","firstName":"Jon","lastName":"Seidel","username":"jseidel","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/b2d02aa6-240e-47dc-aa2f-ca879df0f008","website":"http://www.nubyrubyrailstales.com","twitterHandle":null,"totalDonations":10000,"firstDonation":"2017-04-30T23:11:35.682Z","lastDonation":"2017-04-30T23:11:35.682Z","tier":"backer"},{"id":4715,"createdAt":"2017-05-09T14:08:07.313Z","name":"Greg Sadetsky","firstName":"Greg","lastName":"Sadetsky","username":"gs","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/4573049e-1cd3-4a2c-8c0f-f7e0809a2019","website":"https://www.idealist.org","twitterHandle":null,"totalDonations":10000,"firstDonation":"2017-05-09T14:08:07.257Z","lastDonation":"2017-05-09T14:08:07.257Z","tier":"backer"},{"id":4934,"createdAt":"2017-05-21T08:40:35.897Z","name":"Nicolas Roos","firstName":"Nicolas","lastName":"Roos","username":"nicolaskroos","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5efbfe7ee0af42c49a80154ec3b2ff72_72c14e50-3e01-11e7-8997-67425351d24d.png","website":null,"twitterHandle":"roosnic1","totalDonations":10000,"firstDonation":"2017-05-21T08:40:34.350Z","lastDonation":"2017-08-16T09:41:16.532Z","tier":"backer"},{"id":5091,"createdAt":"2017-05-29T18:29:53.491Z","name":"Vlad Magdalin","firstName":"Vlad","lastName":"Magdalin","username":"vlad","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/2165a5d4-a5a2-413e-a013-0e5fe63c6683","website":"https://twitter.com/webflowapp","twitterHandle":"webflowapp","totalDonations":10000,"firstDonation":"2017-05-29T18:29:53.448Z","lastDonation":"2017-05-29T18:29:53.448Z","tier":"backer"},{"id":5506,"createdAt":"2017-06-20T19:10:14.307Z","name":"Oliver Zeigermann","firstName":"Oliver","lastName":"Zeigermann","username":"oliverzeigermann","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/e962f584-3587-4489-b06f-70a1c720cc0f","website":null,"twitterHandle":null,"totalDonations":10000,"firstDonation":"2017-06-20T19:10:13.346Z","lastDonation":"2017-06-20T19:10:13.346Z","tier":"backer"},{"id":4504,"createdAt":"2017-07-20T22:54:17.292Z","name":"Yong Su","firstName":"Yong","lastName":"Su","username":"jeantimex","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/e52b9bcb-8ec5-41af-b164-94f9ae4df6c8","website":"https://discuss.leetcode.com/user/jeantimex","twitterHandle":null,"totalDonations":10000,"firstDonation":"2017-07-20T22:54:16.012Z","lastDonation":"2017-07-20T22:54:16.012Z","tier":"backer"},{"id":1535,"createdAt":"2016-10-19T02:28:12.769Z","name":"","firstName":null,"lastName":null,"username":"email","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/spalgercom_96fd0760-9586-11e6-9023-d5601712d022.png","website":null,"twitterHandle":"spalger","totalDonations":9000,"firstDonation":"2016-10-19T02:28:19.684Z","lastDonation":"2017-06-19T03:28:42.204Z","tier":"backer"},{"id":1393,"createdAt":"2016-10-15T21:31:18.066Z","name":"Sean Larkin","firstName":"Sean","lastName":"Larkin","username":"seanlarkin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/TheLarkInn_be2d7190-931e-11e6-8f79-45c34ba50b74.jpeg","website":"http://github.com/thelarkinn","twitterHandle":null,"totalDonations":8000,"firstDonation":"2016-10-15T21:31:26.713Z","lastDonation":"2017-05-15T22:32:33.369Z","tier":"backer"},{"id":2372,"createdAt":"2017-01-01T01:36:40.262Z","name":"Alex Liang","firstName":"Alex","lastName":"Liang","username":"alexliang","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/46634b9fdd6446f584d1dc7f5c7fd6ba_cb5ec6d0-cfc2-11e6-b0f9-b9c224065b43.png","website":null,"twitterHandle":"fobbyal","totalDonations":8000,"firstDonation":"2017-01-01T01:49:57.939Z","lastDonation":"2017-08-01T04:39:31.233Z","tier":"backer"},{"id":2579,"createdAt":"2017-01-18T03:03:27.398Z","name":"Alex Leung","firstName":"Alex","lastName":"Leung","username":"alexleung","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f06d4215528d4d48aff62310234ea0e8_b605b0d0-dd2a-11e6-bf52-5b99c6274a65.png","website":null,"twitterHandle":null,"totalDonations":8000,"firstDonation":"2017-01-18T03:03:37.225Z","lastDonation":"2017-08-18T04:03:53.156Z","tier":"backer"},{"id":2757,"createdAt":"2017-01-27T01:58:57.741Z","name":"Adam Recvlohe","firstName":"Adam","lastName":"Recvlohe","username":"adamrecvlohe","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/cdaa3d6c-10ca-4c0d-b9a1-dd51d8511de2","website":"http://arecvlohe.github.io/MyPortfolioSite/","twitterHandle":null,"totalDonations":8000,"firstDonation":"2017-01-27T01:58:55.189Z","lastDonation":"2017-08-01T04:46:11.152Z","tier":"backer"},{"id":1797,"createdAt":"2016-11-16T21:14:47.164Z","name":"Rey Bango","firstName":"Rey","lastName":"Bango","username":"reybango","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ifXiB_qPjpg_c73d64c0-ac41-11e6-8678-8bcfcb423214.jpeg","website":"http://blog.reybango.com","twitterHandle":"reybango","totalDonations":7500,"firstDonation":"2016-11-16T21:14:55.655Z","lastDonation":"2017-01-16T22:16:20.569Z","tier":"backer"},{"id":5303,"createdAt":"2017-06-09T16:41:28.018Z","name":"Stephen R","firstName":"Stephen","lastName":"R","username":"sprjr","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/895f57c0-4d32-11e7-b433-492f765178c7.jpg","website":null,"twitterHandle":"sprjrx","totalDonations":7500,"firstDonation":"2017-06-09T16:41:27.964Z","lastDonation":"2017-06-09T16:41:27.964Z","tier":"backer"},{"id":2650,"createdAt":"2017-01-20T16:44:23.490Z","name":"Jorge Antunes","firstName":"Jorge","lastName":"Antunes","username":"jorgeantunes","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/68136840-df32-11e6-9342-6da0a3e42d81.jpeg","website":"http://twitter.com/stoikerty","twitterHandle":"stoikerty","totalDonations":7200,"firstDonation":"2017-01-20T16:44:29.371Z","lastDonation":"2017-08-19T08:54:39.170Z","tier":"backer"},{"id":2955,"createdAt":"2017-02-03T19:06:46.563Z","name":"Shane Eckel","firstName":"Shane","lastName":"Eckel","username":"shaneckel","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/06081ed0-ea44-11e6-8826-993f28f9471e.jpg","website":"http://shaneckel.com","twitterHandle":"shaneckel","totalDonations":7000,"firstDonation":"2017-02-03T19:06:44.717Z","lastDonation":"2017-08-01T20:08:44.330Z","tier":"backer"},{"id":3204,"createdAt":"2017-02-21T15:42:52.618Z","name":"Ragunath Ramaswamy","firstName":"Ragunath","lastName":"Ramaswamy","username":"ragunathramaswamy","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/6c9e781c-3e70-4d8b-9cfb-dc8d4b2f27a7","website":null,"twitterHandle":null,"totalDonations":7000,"firstDonation":"2017-02-21T15:42:50.932Z","lastDonation":"2017-08-01T16:51:05.239Z","tier":"backer"},{"id":3295,"createdAt":"2017-02-27T19:17:01.521Z","name":"OMT Technologies, Inc.","firstName":"OMT","lastName":"Technologies, Inc.","username":"omt-tech","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/61831e60-76c4-11e7-b53b-2531e63eb442.png","website":"http://omt.tech","twitterHandle":null,"totalDonations":6600,"firstDonation":"2017-02-27T19:17:00.528Z","lastDonation":"2017-08-01T10:27:22.741Z","tier":"backer"},{"id":2133,"createdAt":"2016-12-11T13:11:05.951Z","name":"Yevgen Safronov","firstName":"Yevgen","lastName":"Safronov","username":"evgenijsafronov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f2de5454f1404d68bd64822dfc85fe21_50cdae10-bfa3-11e6-b835-93e652709f00.png","website":null,"twitterHandle":"sejoker","totalDonations":6500,"firstDonation":"2016-12-11T13:11:10.724Z","lastDonation":"2017-08-01T22:34:37.569Z","tier":"backer"},{"id":1572,"createdAt":"2016-10-22T15:00:56.650Z","name":"Alexander Wunschik","firstName":"Alexander","lastName":"Wunschik","username":"alex11","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8e028790-9868-11e6-82f8-0d657542e2d8.jpg","website":"http://www.wunschik.it","twitterHandle":"wunschik","totalDonations":6000,"firstDonation":"2016-10-22T15:00:56.386Z","lastDonation":"2016-10-22T15:00:56.386Z","tier":"backer"},{"id":2169,"createdAt":"2016-12-14T03:30:36.625Z","name":"Arjun Sarode","firstName":"Arjun","lastName":"Sarode","username":"rjun07a","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4860899v3_d6bea4a0-c1ad-11e6-9dd4-1329ed290bb3.jpeg","website":"http://arjunsarode.com","twitterHandle":"rjun07a","totalDonations":6000,"firstDonation":"2016-12-14T03:30:43.880Z","lastDonation":"2017-08-01T21:51:12.010Z","tier":"backer"},{"id":3551,"createdAt":"2017-03-15T22:08:20.967Z","name":"Derk-Jan Karrenbeld @SleeplessByte","firstName":"Derk-Jan","lastName":"Karrenbeld @SleeplessByte","username":"derk-jan","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/c60acbd3e7c1498db517ceef9a36f379_58569540-6d75-11e7-93f5-83f1d22565b0.png","website":"https://derk-jan.com","twitterHandle":"SleeplessByte","totalDonations":6000,"firstDonation":"2017-03-15T22:08:19.627Z","lastDonation":"2017-08-01T23:09:54.428Z","tier":"backer"},{"id":1509,"createdAt":"2016-10-16T10:15:08.634Z","name":"Matt lewis","firstName":"Matt","lastName":"lewis","username":"hello2","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/mattlewisme_92cbef20-9389-11e6-959d-07ed50026d25.png","website":"https://mattlewis.me","twitterHandle":"mattlewis92_","totalDonations":5500,"firstDonation":"2016-10-16T10:15:17.204Z","lastDonation":"2017-08-16T11:15:44.899Z","tier":"backer"},{"id":1515,"createdAt":"2016-10-16T18:07:29.605Z","name":"Umut Sirin","firstName":"Umut","lastName":"Sirin","username":"usirin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/cabdfa845fe24ba9ac09b04dcb405047_7c02a0d0-93cb-11e6-959d-07ed50026d25.jpeg","website":"http://umut.co","twitterHandle":"usirin","totalDonations":5500,"firstDonation":"2016-10-16T18:07:37.219Z","lastDonation":"2017-08-16T19:07:54.161Z","tier":"backer"},{"id":1537,"createdAt":"2016-10-19T13:20:14.820Z","name":"Rafał Filipek","firstName":"Rafał","lastName":"Filipek","username":"rafalfilipek","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4c6ecae6d6fbe75d5bf61c4f394eb182_060abff0-d324-11e6-822d-a7c6342d2b2b.jpeg","website":"http://twitter.com/rafalfilipek","twitterHandle":"rafalfilipek","totalDonations":5500,"firstDonation":"2016-10-19T13:20:28.355Z","lastDonation":"2017-08-19T14:21:02.201Z","tier":"backer"},{"id":1561,"createdAt":"2016-10-20T16:50:25.758Z","name":"Joel Chen","firstName":"Joel","lastName":"Chen","username":"joelchen","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/eab4f8f71613476b9f3d16429d68615b_5873f390-96e5-11e6-baa3-69f47ab52eed.png","website":"https://www.linkedin.com/in/joelchen","twitterHandle":"joelchen19","totalDonations":5500,"firstDonation":"2016-10-20T16:50:34.886Z","lastDonation":"2017-08-20T17:51:42.811Z","tier":"backer"},{"id":3217,"createdAt":"2017-02-21T23:03:25.234Z","name":"Wellington Soares","firstName":"Wellington","lastName":"Soares","username":"wellcco","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4145d630-7906-11e7-ae4e-650f790a2423.jpg","website":"li","twitterHandle":"wellcco","totalDonations":5300,"firstDonation":"2017-02-21T23:03:23.908Z","lastDonation":"2017-08-04T09:56:44.608Z","tier":"backer"},{"id":5536,"createdAt":"2017-06-22T00:49:05.734Z","name":"Samir Damle","firstName":"Samir","lastName":"Damle","username":"damlemail","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/1a3dd6ca-04da-4ccf-a0b2-2a1ada0d75c5","website":"https://twitter.com/samirdamle","twitterHandle":"samirdamle","totalDonations":5200,"firstDonation":"2017-06-22T00:49:04.720Z","lastDonation":"2017-06-23T01:46:07.996Z","tier":"backer"},{"id":1573,"createdAt":"2016-10-22T16:30:48.082Z","name":"Gil Barbara","firstName":"Gil","lastName":"Barbara","username":"gilbarbara","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/233f2c6ea0f84e0ebcbbb89ca707053e_f12ac880-9874-11e6-82f8-0d657542e2d8.jpeg","website":"https://github.com/gilbarbara","twitterHandle":"gilbarbara","totalDonations":5000,"firstDonation":"2016-10-22T16:31:08.484Z","lastDonation":"2017-07-22T17:33:04.287Z","tier":"backer"},{"id":1601,"createdAt":"2016-10-24T11:12:11.075Z","name":"Felipe Amorim","firstName":"Felipe","lastName":"Amorim","username":"felipedeamorim","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/52aeb2e99e254e8891958d78a0ae40a9_c3c16310-99da-11e6-8650-f92e594d5de8.png","website":null,"twitterHandle":"whymclovin","totalDonations":5000,"firstDonation":"2016-10-24T11:12:15.224Z","lastDonation":"2017-07-27T12:13:52.348Z","tier":"backer"},{"id":1603,"createdAt":"2016-10-24T11:27:13.149Z","name":"Simen Brekken","firstName":"Simen","lastName":"Brekken","username":"simenbrekken","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e41c4f11e8ef4527be8013b21d77e183_e0035b30-99dc-11e6-8650-f92e594d5de8.png","website":"http://unfold.no","twitterHandle":"simenbrekken","totalDonations":5000,"firstDonation":"2016-10-24T11:27:23.276Z","lastDonation":"2017-07-24T12:27:43.001Z","tier":"backer"},{"id":1622,"createdAt":"2016-10-24T18:26:53.264Z","name":"Jeremy Schlatter","firstName":"Jeremy","lastName":"Schlatter","username":"jeremyschlatter","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/3657dfb8f3a845799f3e9d8aedc40304_9278bb90-9a17-11e6-8650-f92e594d5de8.png","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2016-10-24T18:27:05.927Z","lastDonation":"2017-07-24T19:27:35.789Z","tier":"backer"},{"id":1663,"createdAt":"2016-11-01T12:08:35.894Z","name":"Conor Hastings","firstName":"Conor","lastName":"Hastings","username":"stillconor","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4f052f7ff53c4d9b91288c15c1df71bc_0646b080-a02c-11e6-9a04-33babd8d876b.jpeg","website":"http://github.com/conorhastings","twitterHandle":"stillconor","totalDonations":5000,"firstDonation":"2016-11-01T12:08:41.059Z","lastDonation":"2017-08-01T13:13:03.354Z","tier":"backer"},{"id":1664,"createdAt":"2016-11-01T12:17:00.608Z","name":"Grgur Grisogono","firstName":"Grgur","lastName":"Grisogono","username":"ggrgur","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b604213ebe3442e0bd06aa2fe39c4daa_40843f00-a02d-11e6-9a04-33babd8d876b.jpeg","website":"https://grgur.com","twitterHandle":"ggrgur","totalDonations":5000,"firstDonation":"2016-11-01T12:17:04.792Z","lastDonation":"2017-03-01T13:21:36.740Z","tier":"backer"},{"id":1759,"createdAt":"2016-11-08T12:59:54.717Z","name":"Josh Dzielak","firstName":"Josh","lastName":"Dzielak","username":"dzello","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1f067af0-a5b9-11e6-b4fe-6966ef500b6b.jpg","website":"https://community.algolia.com","twitterHandle":"algolia","totalDonations":5000,"firstDonation":"2016-11-08T13:00:05.507Z","lastDonation":"2016-11-08T13:00:05.507Z","tier":"backer"},{"id":1793,"createdAt":"2016-11-16T13:20:03.557Z","name":"Mark van den Brink","firstName":"Mark","lastName":"van den Brink","username":"mark4","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/029d0080-ac00-11e6-8678-8bcfcb423214.jpg","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2016-11-16T13:20:13.364Z","lastDonation":"2017-08-16T14:20:09.362Z","tier":"backer"},{"id":1798,"createdAt":"2016-11-16T21:21:42.203Z","name":"Tyler McGinnis","firstName":"Tyler","lastName":"McGinnis","username":"tylermcginnis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/da45ee92d99e46ba86b0c42e910297b4_b7bc5190-ac42-11e6-8678-8bcfcb423214.jpeg","website":"https://tylermcginnis.com","twitterHandle":"tylermcginnis33","totalDonations":5000,"firstDonation":"2016-11-16T21:21:55.598Z","lastDonation":"2017-08-16T22:22:38.098Z","tier":"backer"},{"id":1804,"createdAt":"2016-11-17T13:07:49.610Z","name":"Michael Van Diest","firstName":"Michael","lastName":"Van Diest","username":"michaelvandiest","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/3d8ea7f53108df22030730cb12331997_e39c1d20-acc6-11e6-b911-057a8af5240e.jpeg","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2016-11-17T13:07:59.782Z","lastDonation":"2017-08-17T14:08:51.423Z","tier":"backer"},{"id":1820,"createdAt":"2016-11-18T17:32:34.033Z","name":"Ching-Ting Wu","firstName":"Ching-Ting","lastName":"Wu","username":"ching-tingwu","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/f3b9a52e-d1a8-449b-bf98-e31c53898955","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2016-11-18T17:32:43.744Z","lastDonation":"2017-08-18T18:32:56.025Z","tier":"backer"},{"id":2174,"createdAt":"2016-12-14T18:39:13.433Z","name":"Vladimir Starkov","firstName":"Vladimir","lastName":"Starkov","username":"iamstarkov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d41a973eff7447f0adea54670303be75_91997720-4a37-11e7-af45-45551d552411.png","website":"http://iamstarkov.com","twitterHandle":"iamstarkov","totalDonations":5000,"firstDonation":"2016-12-14T18:39:17.627Z","lastDonation":"2017-08-01T12:12:57.965Z","tier":"backer"},{"id":2302,"createdAt":"2016-12-26T13:58:02.058Z","name":"Alejandro Brozzo","firstName":"Alejandro","lastName":"Brozzo","username":"alejandrob","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6856ccf0-cb75-11e6-a9ab-95613a0a0a4e.png","website":"https://github.com/alebrozzo","twitterHandle":"alebrozzo","totalDonations":5000,"firstDonation":"2016-12-26T13:58:16.481Z","lastDonation":"2017-04-26T14:58:29.935Z","tier":"backer"},{"id":2413,"createdAt":"2017-01-03T20:27:23.117Z","name":"Jonathan Kim","firstName":"Jonathan","lastName":"Kim","username":"jkimbo","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d4d0452c70ce4a84baa786f9ac7abb6f_3c6f6410-d1f3-11e6-b76a-f54c319c1811.jpeg","website":"http://jkimbo.com","twitterHandle":"jonnykim","totalDonations":5000,"firstDonation":"2017-01-03T20:27:31.761Z","lastDonation":"2017-08-03T21:31:16.122Z","tier":"backer"},{"id":3890,"createdAt":"2017-04-01T22:57:38.373Z","name":"Adam","firstName":"Adam","lastName":null,"username":"adamrackis","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/ca566a1e-26e5-4168-8121-0411c06e9b53","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2017-04-01T22:57:37.335Z","lastDonation":"2017-08-01T23:59:07.627Z","tier":"backer"},{"id":4149,"createdAt":"2017-04-24T19:22:19.925Z","name":"Say Yup","firstName":"Say","lastName":"Yup","username":"sayyupnl","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/379270e0-1e15-11e7-be1e-a32c54219e24.png","website":"https://www.sayyup.nl","twitterHandle":"sayyupnl","totalDonations":5000,"firstDonation":"2017-04-24T19:22:18.696Z","lastDonation":"2017-08-01T20:24:09.151Z","tier":"backer"},{"id":5751,"createdAt":"2017-06-30T18:19:53.537Z","name":"Guillermo Sanchez","firstName":"Guillermo","lastName":"Sanchez","username":"memosanchez","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/520f57a6-0153-4052-8653-a73c27a4e899","website":"https://twitter.com/memo_sanchez","twitterHandle":"memo_sanchez","totalDonations":5000,"firstDonation":"2017-06-30T18:19:52.534Z","lastDonation":"2017-07-01T19:22:24.573Z","tier":"backer"},{"id":6015,"createdAt":"2017-07-12T14:30:52.254Z","name":"Davin Hills","firstName":"Davin","lastName":"Hills","username":"dshills","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a7331405-a89d-47f5-8160-6ecbbc0fe65e","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2017-07-12T14:30:50.957Z","lastDonation":"2017-08-01T15:32:32.979Z","tier":"backer"},{"id":6154,"createdAt":"2017-07-19T17:14:27.349Z","name":"Sunil Pai","firstName":"Sunil","lastName":"Pai","username":"threepointone","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/22fe73ba-c1e3-47c0-8586-9d063834a36e","website":null,"twitterHandle":null,"totalDonations":5000,"firstDonation":"2017-07-19T17:14:27.254Z","lastDonation":"2017-07-19T17:14:27.254Z","tier":"backer"},{"id":6339,"createdAt":"2017-07-31T19:19:15.952Z","name":"James Cham","firstName":"James","lastName":"Cham","username":"james3","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/88424cf5-15ad-4366-8f9b-38247a1e3c93","website":"https://twitter.com/jamescham","twitterHandle":"jamescham","totalDonations":5000,"firstDonation":"2017-07-31T19:19:14.383Z","lastDonation":"2017-07-31T19:19:14.383Z","tier":"backer"},{"id":1525,"createdAt":"2016-10-17T10:41:03.547Z","name":"Simon Kjellberg","firstName":"Simon","lastName":"Kjellberg","username":"simonkjellberg","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/209028d48491002275fdec48a813766f_4f1a22b0-9456-11e6-8e17-c5fbc70a6943.png","website":"https://simonkjellberg.com","twitterHandle":"simonkberg","totalDonations":4500,"firstDonation":"2016-10-17T10:41:07.322Z","lastDonation":"2017-06-17T11:41:46.171Z","tier":"backer"},{"id":1282,"createdAt":"2016-11-17T08:29:26.241Z","name":"Bruno Mota","firstName":"Bruno","lastName":"Mota","username":"bruno12mota","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/bruno12mota_13949bf0-aca0-11e6-b911-057a8af5240e.jpeg","website":"https://twitter.com/bruno12mota","twitterHandle":"bruno12mota","totalDonations":4500,"firstDonation":"2016-11-17T08:29:38.846Z","lastDonation":"2017-07-17T09:29:55.187Z","tier":"backer"},{"id":1939,"createdAt":"2016-12-01T01:46:51.987Z","name":"Travis Arnold","firstName":"Travis","lastName":"Arnold","username":"travisarnold","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2762082v3_c26645e0-b6e4-11e6-8f29-915c263c0347.jpeg","website":"http://travisrayarnold.com","twitterHandle":"souporserious","totalDonations":4500,"firstDonation":"2016-12-01T01:47:22.608Z","lastDonation":"2017-08-01T04:39:21.817Z","tier":"backer"},{"id":2160,"createdAt":"2016-12-13T17:45:05.990Z","name":"Suhas Deshpande","firstName":"Suhas","lastName":"Deshpande","username":"suhasdeshpande","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f14341e2ef714f8dacb3c67cb7cb845e_ea3d4f10-c15b-11e6-8db6-7b1babac25cc.png","website":"http://twitter.com/suhas_rd","twitterHandle":"suhas_rd","totalDonations":4500,"firstDonation":"2016-12-13T17:45:16.024Z","lastDonation":"2017-08-13T18:45:29.958Z","tier":"backer"},{"id":2242,"createdAt":"2016-12-20T23:38:19.882Z","name":"Sijie Tian","firstName":"Sijie","lastName":"Tian","username":"danieltian","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/13f08af6b500ef9de371067a65a2f0c2_6f55b910-c70d-11e6-973f-31eca31cf144.jpeg","website":"http://sijietian.com","twitterHandle":null,"totalDonations":4500,"firstDonation":"2016-12-20T23:38:26.776Z","lastDonation":"2017-08-21T00:38:52.876Z","tier":"backer"},{"id":2678,"createdAt":"2017-01-22T02:29:16.761Z","name":"Lochlan Bunn","firstName":"Lochlan","lastName":"Bunn","username":"loklaan","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a9532282e7464eceab7e693b697c16ef_d93e3360-1d9e-11e7-9da7-97bd710af21c.png","website":"https://twitter.com/loklaan","twitterHandle":"loklaan","totalDonations":4500,"firstDonation":"2017-01-22T02:29:24.443Z","lastDonation":"2017-06-01T09:22:35.885Z","tier":"backer"},{"id":1611,"createdAt":"2016-10-24T14:00:36.457Z","name":"Artur Stolear","firstName":"Artur","lastName":"Stolear","username":"arthurstolyar","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1189265v3_7afb6550-99f2-11e6-8650-f92e594d5de8.jpeg","website":"httpm/nekrtemplar","twitterHandle":"nekrtemplar","totalDonations":4000,"firstDonation":"2016-10-24T14:01:06.039Z","lastDonation":"2017-01-24T15:01:10.552Z","tier":"backer"},{"id":1613,"createdAt":"2016-10-24T14:13:47.572Z","name":"Jason Laster","firstName":"Jason","lastName":"Laster","username":"jasonlaster11","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/dce3fcd617834929b7e174a4ad4a5838_17f6a990-99f4-11e6-8650-f92e594d5de8.jpeg","website":"http://jasonlaster.github.io","twitterHandle":"jasonlaster11","totalDonations":4000,"firstDonation":"2016-10-24T14:13:55.480Z","lastDonation":"2017-07-24T15:14:27.865Z","tier":"backer"},{"id":1634,"createdAt":"2016-10-25T16:39:44.063Z","name":"Karolis Astrauka","firstName":"Karolis","lastName":"Astrauka","username":"karolisastrauka","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/97af77efbc384df2b836e78484f4abc1_b5cd45b0-9ad1-11e6-a7b8-e9c9765a46ab.png","website":null,"twitterHandle":"astrauka","totalDonations":4000,"firstDonation":"2016-10-25T16:39:43.737Z","lastDonation":"2017-08-01T07:12:23.313Z","tier":"backer"},{"id":1674,"createdAt":"2016-11-01T17:06:39.505Z","name":"Dean Pogni","firstName":"Dean","lastName":"Pogni","username":"deanpogni","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7e0b63c0-ac22-11e6-8678-8bcfcb423214.jpg","website":"http://deanpogni.com","twitterHandle":null,"totalDonations":4000,"firstDonation":"2016-11-01T17:06:39.182Z","lastDonation":"2017-06-30T18:26:31.477Z","tier":"backer"},{"id":1796,"createdAt":"2016-11-16T19:46:31.877Z","name":"Marcus Nielsen","firstName":"Marcus","lastName":"Nielsen","username":"marcusnielsen","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8803c85b9dac48c591dfa4bbc18d96c7_68e4d450-ac35-11e6-8678-8bcfcb423214.png","website":"http://marcusnielsen.org","twitterHandle":"marcusnielsen","totalDonations":4000,"firstDonation":"2016-11-16T19:46:40.951Z","lastDonation":"2017-06-16T20:47:30.656Z","tier":"backer"},{"id":2301,"createdAt":"2016-12-26T05:00:46.669Z","name":"Ajit Singh","firstName":"Ajit","lastName":"Singh","username":"ajitsonlion","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5099dadf59424520a5c81dd6495d281c_6529fe00-cb28-11e6-a9ab-95613a0a0a4e.jpeg","website":"http://www.blog.ajitsonlion.com","twitterHandle":"ajitsonlion","totalDonations":4000,"firstDonation":"2016-12-26T05:01:42.527Z","lastDonation":"2017-07-26T06:04:19.165Z","tier":"backer"},{"id":2406,"createdAt":"2017-01-03T15:19:51.626Z","name":"Ben Cao","firstName":"Ben","lastName":"Cao","username":"webpack1","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9ade40a0-d1c8-11e6-a8c4-978cf1ad9c7b.png","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-01-03T15:19:58.089Z","lastDonation":"2017-08-03T16:21:15.341Z","tier":"backer"},{"id":2472,"createdAt":"2017-01-08T07:15:21.600Z","name":"Jacob Peddicord","firstName":"Jacob","lastName":"Peddicord","username":"jacobpeddicord","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6d3840d0-d572-11e6-ad5b-0fd114c0a22d.jpg","website":"http://jacob.peddicord.net/","twitterHandle":"jpeddicord","totalDonations":4000,"firstDonation":"2017-01-08T07:15:28.451Z","lastDonation":"2017-08-08T08:16:28.895Z","tier":"backer"},{"id":2477,"createdAt":"2017-01-08T20:58:19.547Z","name":"snoflake ","firstName":"snoflake","lastName":"","username":"snolflake","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4c97b7d0-d5e4-11e6-ad5b-0fd114c0a22d.png","website":"https://github.com/snolflake","twitterHandle":"snolflake","totalDonations":4000,"firstDonation":"2017-01-08T20:58:26.671Z","lastDonation":"2017-08-11T21:58:45.550Z","tier":"backer"},{"id":2084,"createdAt":"2017-01-17T16:18:18.345Z","name":"Aaron Trostle","firstName":"Aaron","lastName":"Trostle","username":"aarontrostle","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/643280v3_a1849db0-dcd0-11e6-bf52-5b99c6274a65.jpeg","website":"http://aarontrostle.com","twitterHandle":"aarontrostle","totalDonations":4000,"firstDonation":"2017-01-17T16:18:30.201Z","lastDonation":"2017-08-17T17:19:51.534Z","tier":"backer"},{"id":2570,"createdAt":"2017-01-17T23:48:53.375Z","name":"Neven Rodić","firstName":"Neven","lastName":"Rodić","username":"nevenrodic","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/01a50f8bee92471b96e7d0ac00fccf01_ca4fbc90-dd0f-11e6-bf52-5b99c6274a65.png","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-01-17T23:48:59.508Z","lastDonation":"2017-08-18T00:49:37.590Z","tier":"backer"},{"id":2576,"createdAt":"2017-01-18T01:22:13.219Z","name":"Eddy Hernandez","firstName":"Eddy","lastName":"Hernandez","username":"eddyhernandez","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/399776v3_9a17c290-dd1c-11e6-bf52-5b99c6274a65.jpeg","website":"http://eddywashere.com","twitterHandle":"eddywashere","totalDonations":4000,"firstDonation":"2017-01-18T01:22:17.414Z","lastDonation":"2017-08-18T02:22:42.579Z","tier":"backer"},{"id":2613,"createdAt":"2017-01-19T02:21:05.132Z","name":"Adam Egesa","firstName":"Adam","lastName":"Egesa","username":"adamegesa","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/34314fda66e94ac991ecf1a868cec38e_f7b85820-dded-11e6-aabd-af731cff2f24.png","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-01-19T02:21:14.162Z","lastDonation":"2017-08-19T03:22:12.052Z","tier":"backer"},{"id":2669,"createdAt":"2017-01-21T00:25:41.290Z","name":"Alexander Shakun","firstName":"Alexander","lastName":"Shakun","username":"_sashashakun","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/c59c5152-e470-481e-8934-ac12524e5af4","website":"http://github.com/sashashakun","twitterHandle":"_sashashakun","totalDonations":4000,"firstDonation":"2017-01-21T00:25:45.240Z","lastDonation":"2017-08-21T01:26:49.506Z","tier":"backer"},{"id":2709,"createdAt":"2017-01-24T16:38:32.862Z","name":"Francisco Olmedo","firstName":"Francisco","lastName":"Olmedo","username":"franciscobueno","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ac150c825e3f4a24b0c84b5793ddf0ba_ab0ca940-e27a-11e6-96ad-4fa0cb304f32.png","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-01-24T16:38:31.251Z","lastDonation":"2017-08-01T18:15:33.634Z","tier":"backer"},{"id":2854,"createdAt":"2017-01-30T22:11:54.635Z","name":"Jacob Mischka","firstName":"Jacob","lastName":"Mischka","username":"jacobmischka","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/3a6738d3-7ea5-4a41-81cf-0508a4982257","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-01-30T22:11:53.101Z","lastDonation":"2017-08-01T23:13:55.755Z","tier":"backer"},{"id":2855,"createdAt":"2017-01-30T23:16:33.932Z","name":"JD ","firstName":"JD","lastName":"","username":"me1","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/958a5420-e741-11e6-816e-351d237da873.jpg","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-01-30T23:16:32.292Z","lastDonation":"2017-08-02T00:18:05.848Z","tier":"backer"},{"id":886,"createdAt":"2017-02-21T11:54:45.865Z","name":"Josh Lavely","firstName":"Josh","lastName":"Lavely","username":"_azayzel","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/65ddf1a0-589e-11e6-9092-d19848b5b2b6.jpg","website":null,"twitterHandle":"_Azayzel","totalDonations":4000,"firstDonation":"2017-02-21T11:54:44.129Z","lastDonation":"2017-05-01T12:55:07.158Z","tier":"backer"},{"id":3317,"createdAt":"2017-05-10T04:03:06.443Z","name":"Eliseu Monar","firstName":"Eliseu","lastName":"Monar","username":"eliseumds1","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/81c7fec5-8c5d-4be4-83a2-e1043cce1b14","website":"https://twitter.com/eliseumds","twitterHandle":"eliseumds","totalDonations":4000,"firstDonation":"2017-05-10T04:03:05.226Z","lastDonation":"2017-08-01T05:34:51.041Z","tier":"backer"},{"id":5057,"createdAt":"2017-05-27T19:15:51.632Z","name":"Eduard Kyvenko","firstName":"Eduard","lastName":"Kyvenko","username":"eduardkyvenko","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/078bd233-666d-4cb3-8a2a-79c8be887d30","website":null,"twitterHandle":null,"totalDonations":4000,"firstDonation":"2017-05-27T19:15:50.577Z","lastDonation":"2017-08-01T20:17:32.153Z","tier":"backer"},{"id":5069,"createdAt":"2017-05-28T17:04:53.138Z","name":"Mike Murry","firstName":"Mike","lastName":"Murry","username":"me17","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/e6d109e5-a2df-4801-bc18-9740f677c416","website":"https://twitter.com/mikemurry","twitterHandle":"mikemurry","totalDonations":4000,"firstDonation":"2017-05-28T17:04:52.194Z","lastDonation":"2017-08-01T19:01:39.701Z","tier":"backer"},{"id":1605,"createdAt":"2016-10-24T12:32:54.839Z","name":"Matija Marohnić","firstName":"Matija","lastName":"Marohnić","username":"silvenon","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/cb17a00033b74a439ab5600031c2eefd_19d9c9d0-99e6-11e6-8650-f92e594d5de8.jpeg","website":"https://medium.com/silvenon","twitterHandle":"silvenon","totalDonations":3700,"firstDonation":"2016-10-24T12:33:00.760Z","lastDonation":"2017-08-01T10:54:43.198Z","tier":"backer"},{"id":2118,"createdAt":"2016-12-08T14:31:55.394Z","name":"Jurica Železnjak","firstName":"Jurica","lastName":"Železnjak","username":"jzelez","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/386099v3_19b50dd0-bd53-11e6-9ca1-bb6c7a9a84e0.jpeg","website":"http://kumulus.hr","twitterHandle":"jzelez","totalDonations":3500,"firstDonation":"2016-12-08T14:31:55.083Z","lastDonation":"2017-08-01T07:09:42.560Z","tier":"backer"},{"id":2179,"createdAt":"2016-12-14T22:25:45.628Z","name":"Gaël Marziou","firstName":"Gaël","lastName":"Marziou","username":"gaelmarziou","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8aec80d83a4b423682633bed24f8085a_4a550e10-c24c-11e6-9dd4-1329ed290bb3.png","website":null,"twitterHandle":"gmarziou","totalDonations":3500,"firstDonation":"2016-12-14T22:25:53.727Z","lastDonation":"2017-06-14T23:27:45.083Z","tier":"backer"},{"id":2606,"createdAt":"2017-01-24T04:03:02.700Z","name":"Sheka Dzianis","firstName":"Sheka","lastName":"Dzianis","username":"shekadzianis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e8d6775eb1d243ea8614a6f4f78ad4c6_d7318270-3563-11e7-8caa-3b6f8e012814.png","website":null,"twitterHandle":"https://davojta","totalDonations":3500,"firstDonation":"2017-01-24T04:03:09.657Z","lastDonation":"2017-08-01T10:40:13.808Z","tier":"backer"},{"id":2932,"createdAt":"2017-02-02T14:06:30.493Z","name":"Leonard Souza","firstName":"Leonard","lastName":"Souza","username":"jslauthor","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/9648ec81-ab41-445e-a1a9-eaced55f1e01","website":"http://leonardsouza.com","twitterHandle":"jslauthor","totalDonations":3500,"firstDonation":"2017-02-02T14:06:28.835Z","lastDonation":"2017-08-01T15:07:41.355Z","tier":"backer"},{"id":2939,"createdAt":"2017-02-02T19:23:25.300Z","name":"Kewei Ma","firstName":"Kewei","lastName":"Ma","username":"marknv1991","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/c0dcc850-e97c-11e6-8d21-89d2dfadb64f.jpg","website":null,"twitterHandle":null,"totalDonations":3500,"firstDonation":"2017-02-02T19:23:22.819Z","lastDonation":"2017-08-01T20:25:33.669Z","tier":"backer"},{"id":2949,"createdAt":"2017-02-03T14:05:11.087Z","name":"Nicolai Pascal Großer","firstName":"Nicolai","lastName":"Pascal Großer","username":"nicolaigrosser","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f4c545f0-ea19-11e6-8d21-89d2dfadb64f","website":"https://github.com/npgrosser","twitterHandle":null,"totalDonations":3500,"firstDonation":"2017-02-03T14:05:09.415Z","lastDonation":"2017-08-01T15:07:44.646Z","tier":"backer"},{"id":2978,"createdAt":"2017-02-04T13:06:10.878Z","name":"Tirell ","firstName":"Tirell","lastName":"","username":"tdmckinn","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/3663ace1b0e149b787ce6a53222adc99_c5373ac0-eada-11e6-8826-993f28f9471e.jpeg","website":"http://tirellmckinnon","twitterHandle":"tirellmckinnon","totalDonations":3500,"firstDonation":"2017-02-04T13:06:09.334Z","lastDonation":"2017-08-01T14:07:30.218Z","tier":"backer"},{"id":3015,"createdAt":"2017-02-07T06:31:40.103Z","name":"александр староверов","firstName":"александр","lastName":"староверов","username":"hellbeast92","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/1fd48f1f-95c1-49e8-be80-d3ee4e41a77b","website":null,"twitterHandle":null,"totalDonations":3500,"firstDonation":"2017-02-07T06:31:34.972Z","lastDonation":"2017-08-01T07:31:55.198Z","tier":"backer"},{"id":3216,"createdAt":"2017-02-21T22:12:52.288Z","name":"Dont Know","firstName":"Dont","lastName":"Know","username":"tluenborg","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/238b1bf9-6277-4c8e-b781-5b7259b333b0","website":null,"twitterHandle":null,"totalDonations":3500,"firstDonation":"2017-02-21T22:12:50.964Z","lastDonation":"2017-08-01T23:14:11.766Z","tier":"backer"},{"id":1226,"createdAt":"2017-02-22T13:39:24.911Z","name":"Eric Lanehart","firstName":"Eric","lastName":"Lanehart","username":"pushred","role":"BACKER","avatar":"https://logo.clearbit.com/pushred.co","website":"http://pushred.co","twitterHandle":"pushred","totalDonations":3500,"firstDonation":"2017-02-22T13:39:23.822Z","lastDonation":"2017-08-01T14:41:30.728Z","tier":"backer"},{"id":3273,"createdAt":"2017-02-25T16:11:48.826Z","name":"Jonas Strømsodd","firstName":"Jonas","lastName":"Strømsodd","username":"jonasstromsodd","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/806298f1-a0f0-48e0-a20b-f92d93d67e8c","website":"https://jonasws.github.io","twitterHandle":null,"totalDonations":3500,"firstDonation":"2017-02-25T16:11:47.738Z","lastDonation":"2017-08-01T17:28:14.610Z","tier":"backer"},{"id":1496,"createdAt":"2016-10-15T17:49:51.529Z","name":"Andrey Popp","firstName":"Andrey","lastName":"Popp","username":"andreypopp","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/98a6901466c84d90a4e513fe3d0ce60d_cde017b0-92ff-11e6-8f79-45c34ba50b74.png","website":"http://andreypopp.com","twitterHandle":"andreypopp","totalDonations":3000,"firstDonation":"2016-10-15T17:49:59.995Z","lastDonation":"2017-03-15T18:51:16.276Z","tier":"backer"},{"id":666,"createdAt":"2016-10-15T17:50:15.219Z","name":"Michael Mullins","firstName":"Michael","lastName":"Mullins","username":"webdesserts","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/MnVnHySWjpeg_5242ada0-55b2-11e6-9c43-07f2ad068cf4.jpeg","website":"http://webdesserts.com","twitterHandle":"webdesserts","totalDonations":3000,"firstDonation":"2016-10-15T17:50:19.103Z","lastDonation":"2016-12-15T18:51:22.452Z","tier":"backer"},{"id":3104,"createdAt":"2017-02-13T22:32:33.812Z","name":"Pavel Kornev","firstName":"Pavel","lastName":"Kornev","username":"pavelkornev","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2d538e475051485da9724a9731f93563_cbc79180-1791-11e7-a2ff-df948e4c489f.jpeg","website":null,"twitterHandle":null,"totalDonations":3000,"firstDonation":"2017-02-13T22:32:32.236Z","lastDonation":"2017-04-01T23:33:06.090Z","tier":"backer"},{"id":3456,"createdAt":"2017-03-10T14:40:06.903Z","name":"Rohit Kumar","firstName":"Rohit","lastName":"Kumar","username":"aerohitk","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/926d41a9-f0a4-4478-9ae7-870af6d902fc","website":"https://twitter.com/aerohitk","twitterHandle":"aerohitk","totalDonations":3000,"firstDonation":"2017-03-10T14:40:05.814Z","lastDonation":"2017-08-01T15:42:28.074Z","tier":"backer"},{"id":3465,"createdAt":"2017-03-10T20:13:24.221Z","name":"Kurtis Kemple","firstName":"Kurtis","lastName":"Kemple","username":"kurtiskemple","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/72698a71-3317-449d-a6d2-3ce6ce551ce5","website":"https://twitter.com/kurtiskemple","twitterHandle":null,"totalDonations":3000,"firstDonation":"2017-03-10T20:13:22.977Z","lastDonation":"2017-08-01T21:16:00.785Z","tier":"backer"},{"id":3493,"createdAt":"2017-03-13T13:47:24.400Z","name":"French Toasters LLC","firstName":"French","lastName":"Toasters LLC","username":"frenchtoastrllc","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/af505640-07f1-11e7-a17c-5f1ce1df6df6.png","website":null,"twitterHandle":"FrenchToastrLLC","totalDonations":3000,"firstDonation":"2017-03-13T13:47:22.726Z","lastDonation":"2017-08-01T14:49:26.583Z","tier":"backer"},{"id":3559,"createdAt":"2017-03-16T09:58:55.993Z","name":"Eugene Baranov","firstName":"Eugene","lastName":"Baranov","username":"ebaranovdev","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/1c65e91a-c4b5-4cbf-b995-e1da42d30ecf","website":"https://www.linkedin.com/pub/eugene-baranov/44/19/870","twitterHandle":null,"totalDonations":3000,"firstDonation":"2017-03-16T09:58:54.745Z","lastDonation":"2017-08-01T10:59:19.025Z","tier":"backer"},{"id":2701,"createdAt":"2017-04-02T08:46:25.872Z","name":"Maris Zemgalis","firstName":"Maris","lastName":"Zemgalis","username":"zemgalis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/616699b8b13f41e7894682b2cd1c383a_973544a0-e215-11e6-aaa1-35c95811b294.jpeg","website":"http://zemgalis.com","twitterHandle":"zemgalis","totalDonations":3000,"firstDonation":"2017-04-02T08:46:24.849Z","lastDonation":"2017-06-01T09:46:49.901Z","tier":"backer"},{"id":5143,"createdAt":"2017-06-01T11:02:33.155Z","name":"Two Bucks","firstName":"Two","lastName":"Bucks","username":"twobucks","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/twobucksco_f57a0c40-46b9-11e7-9ccb-6f9652cd8a95.png","website":"https://twobucks.co","twitterHandle":"twobucksco","totalDonations":3000,"firstDonation":"2017-06-01T11:02:32.123Z","lastDonation":"2017-08-01T12:04:37.122Z","tier":"backer"},{"id":2566,"createdAt":"2017-06-11T17:05:00.014Z","name":"TaopaiC Tao","firstName":"TaopaiC","lastName":"Tao","username":"taopaic","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/c3ed2ebc-362c-45bf-94f9-d20fd4bf245e","website":"http://pctao.org","twitterHandle":"TaopaiC","totalDonations":3000,"firstDonation":"2017-06-11T17:04:58.865Z","lastDonation":"2017-08-01T19:02:04.793Z","tier":"backer"},{"id":5456,"createdAt":"2017-06-17T19:19:45.934Z","name":"Chris Villanueva","firstName":"Chris","lastName":"Villanueva","username":"nickadeemus2002","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/caa0f1ca-53a1-4ab9-af4d-5f5edc089348","website":null,"twitterHandle":null,"totalDonations":3000,"firstDonation":"2017-06-17T19:19:44.839Z","lastDonation":"2017-08-01T20:21:26.871Z","tier":"backer"},{"id":5466,"createdAt":"2017-06-18T09:37:36.273Z","name":"Anatoliy Yastreb","firstName":"Anatoliy","lastName":"Yastreb","username":"ayastreb","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/86ebadffc990401fbac600628a89007b_74cb5be0-540a-11e7-ab06-0ff31c71ce99.png","website":"https://ayastreb.me","twitterHandle":"mrHabicht","totalDonations":3000,"firstDonation":"2017-06-18T09:37:35.193Z","lastDonation":"2017-08-01T10:37:57.458Z","tier":"backer"},{"id":5484,"createdAt":"2017-06-19T20:45:05.222Z","name":"Claudio Rodriguez","firstName":"Claudio","lastName":"Rodriguez","username":"claudiordgz","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/b3e8c385-84be-4d02-b75a-9ea09982c41e","website":"https://twitter.com/claudiordgz","twitterHandle":"claudiordgz","totalDonations":3000,"firstDonation":"2017-06-19T20:45:04.218Z","lastDonation":"2017-08-01T21:46:23.123Z","tier":"backer"},{"id":5623,"createdAt":"2017-06-26T16:21:39.048Z","name":"Shiva Nandan","firstName":"Shiva","lastName":"Nandan","username":"iam","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/1e043f25-6a5a-4a67-b225-8b3c5765be28","website":"https://twitter.com/seekshiva","twitterHandle":"seekshiva","totalDonations":3000,"firstDonation":"2017-06-26T16:21:35.731Z","lastDonation":"2017-08-01T17:39:25.394Z","tier":"backer"},{"id":5656,"createdAt":"2017-06-27T04:32:23.134Z","name":"Emilio Martinez-Cordero","firstName":"Emilio","lastName":"Martinez-Cordero","username":"emarticor","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/74fae3f5-2908-490d-adc1-943a6902f1f6","website":"https://twitter.com/popcornpool","twitterHandle":"popcornpool","totalDonations":3000,"firstDonation":"2017-06-27T04:32:21.931Z","lastDonation":"2017-08-01T05:43:18.594Z","tier":"backer"},{"id":5707,"createdAt":"2017-06-29T07:12:01.153Z","name":"Johannes Weber","firstName":"Johannes","lastName":"Weber","username":"jwebe0pe","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/9c4fd88a-50bb-4f7b-83bf-71fcb7002d1c","website":"https://twitter.com/jowe","twitterHandle":"jowe","totalDonations":3000,"firstDonation":"2017-06-29T07:11:59.744Z","lastDonation":"2017-08-01T08:13:16.778Z","tier":"backer"},{"id":5727,"createdAt":"2017-06-29T18:23:13.082Z","name":"Chris Freeman","firstName":"Chris","lastName":"Freeman","username":"cfreemancode","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/53fa6df7-d07f-439d-8b7c-dbfd549d677b","website":null,"twitterHandle":null,"totalDonations":3000,"firstDonation":"2017-06-29T18:23:11.681Z","lastDonation":"2017-08-01T19:41:24.570Z","tier":"backer"},{"id":2062,"createdAt":"2016-12-04T13:17:38.274Z","name":"Ari Palo","firstName":"Ari","lastName":"Palo","username":"aripalo","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/bc296530-ba23-11e6-b2c3-0ddcb6c14414.jpg","website":"http://aripalo.fi","twitterHandle":null,"totalDonations":2600,"firstDonation":"2016-12-04T13:17:45.474Z","lastDonation":"2017-06-01T15:09:15.343Z","tier":"backer"},{"id":3028,"createdAt":"2017-02-07T21:20:21.814Z","name":"Keith Ito","firstName":"Keith","lastName":"Ito","username":"keithito","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5fc672f430b94b109ff6291ed33730ee_c5d08930-ed7a-11e6-8dc2-491cf8c258a9.png","website":"https://keithito.com","twitterHandle":"keeeto","totalDonations":2600,"firstDonation":"2017-02-07T21:20:19.558Z","lastDonation":"2017-03-22T02:50:57.268Z","tier":"backer"},{"id":1497,"createdAt":"2016-10-15T19:06:33.869Z","name":"Joel Kemp","firstName":"Joel","lastName":"Kemp","username":"mrjoelkemp","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7905fdb2711a4cf3845802efe09a4fb3_8403b3d0-930a-11e6-8f79-45c34ba50b74.jpeg","website":"http://www.mrjoelkemp.com","twitterHandle":"mrjoelkemp","totalDonations":2500,"firstDonation":"2016-10-15T19:06:33.534Z","lastDonation":"2016-10-15T19:06:33.534Z","tier":"backer"},{"id":1522,"createdAt":"2016-10-17T06:19:45.902Z","name":"Andrei Zvonimir Crnković","firstName":"Andrei","lastName":"Zvonimir Crnković","username":"andreicek","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1d6470cfe1204ff28f537dc4667a172c_b86fc5a0-9431-11e6-8e17-c5fbc70a6943.jpeg","website":"https://andrei.im","twitterHandle":"andreicek","totalDonations":2500,"firstDonation":"2016-10-17T06:19:55.025Z","lastDonation":"2017-03-20T18:19:27.429Z","tier":"backer"},{"id":1740,"createdAt":"2016-11-03T21:17:21.585Z","name":"Kevin Maes","firstName":"Kevin","lastName":"Maes","username":"kevinmaes","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f2317900-a20a-11e6-9564-49520f227cc8.jpg","website":null,"twitterHandle":"kevinlmaes","totalDonations":2500,"firstDonation":"2016-11-03T21:17:26.496Z","lastDonation":"2016-11-03T21:17:26.496Z","tier":"backer"},{"id":1911,"createdAt":"2016-11-29T16:38:56.492Z","name":"Jan-Kanty Pawelski","firstName":"Jan-Kanty","lastName":"Pawelski","username":"jan-kantypawelski","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/72b1e45c-37f9-4f45-b574-603b0e9c50f1","website":null,"twitterHandle":null,"totalDonations":2500,"firstDonation":"2016-11-29T16:38:59.627Z","lastDonation":"2017-03-29T17:39:43.344Z","tier":"backer"},{"id":2102,"createdAt":"2016-12-07T08:43:29.253Z","name":"Martin Kammersberger","firstName":"Martin","lastName":"Kammersberger","username":"martinkammersberger","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5148993v3_fb565870-bc59-11e6-b952-43430287c362.jpeg","website":"http://martinjk.at","twitterHandle":null,"totalDonations":2500,"firstDonation":"2016-12-07T08:43:35.500Z","lastDonation":"2016-12-07T08:43:35.500Z","tier":"backer"},{"id":2537,"createdAt":"2017-01-13T18:21:39.677Z","name":"Ben Vinegar","firstName":"Ben","lastName":"Vinegar","username":"bentlegen","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2b51343b24894055824b4edb65d09c4b_2761dc70-d9bd-11e6-a067-e7ec9446c5c0.jpeg","website":"http://benv.ca","twitterHandle":"bentlegen","totalDonations":2500,"firstDonation":"2017-01-13T18:21:44.662Z","lastDonation":"2017-01-13T18:21:44.662Z","tier":"backer"},{"id":2615,"createdAt":"2017-01-19T04:39:35.548Z","name":"Richard Worsfold","firstName":"Richard","lastName":"Worsfold","username":"richardworsfold","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7a5741d91d01499cb31c51aae12ee4bf_6c71cdf0-de01-11e6-aabd-af731cff2f24.png","website":null,"twitterHandle":null,"totalDonations":2500,"firstDonation":"2017-01-19T04:39:35.002Z","lastDonation":"2017-01-19T04:39:35.002Z","tier":"backer"},{"id":2625,"createdAt":"2017-01-19T13:30:11.922Z","name":"Phil-lgr ","firstName":"Phil-lgr","lastName":"","username":"philippeleger","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a3913ddebffc468997c406af6c63f89a_77c39a40-de4b-11e6-aabd-af731cff2f24.png","website":"https://phil-lgr.io","twitterHandle":null,"totalDonations":2500,"firstDonation":"2017-01-19T13:30:21.695Z","lastDonation":"2017-01-19T13:30:21.695Z","tier":"backer"},{"id":2819,"createdAt":"2017-01-29T22:22:57.637Z","name":"Nathan Hunzaker","firstName":"Nathan","lastName":"Hunzaker","username":"nathanhunzaker","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/e0b13da9-d51c-4f70-8a8b-8730652d6598","website":"http://natehunzaker.com","twitterHandle":null,"totalDonations":2500,"firstDonation":"2017-01-29T22:22:57.246Z","lastDonation":"2017-01-29T22:22:57.246Z","tier":"backer"},{"id":3140,"createdAt":"2017-02-15T22:18:09.623Z","name":"Ameya Koshti","firstName":"Ameya","lastName":"Koshti","username":"ameyakoshti","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a09c09eeba244762bd24de4ae45c20f6_7f7aeef0-090c-11e7-bf40-c3f1e55a14c0.png","website":"http://ameyakoshti.hp.af.cm/","twitterHandle":null,"totalDonations":2500,"firstDonation":"2017-02-15T22:18:09.583Z","lastDonation":"2017-02-15T22:18:09.583Z","tier":"backer"},{"id":3194,"createdAt":"2017-02-21T08:57:56.267Z","name":"Colin Wren","firstName":"Colin","lastName":"Wren","username":"colinwrenca","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/0261dff1-60df-43ad-85d9-a4bbaeb328f5","website":"https://twitter.com/colinwrenca","twitterHandle":"colinwrenca","totalDonations":2500,"firstDonation":"2017-02-21T08:57:56.230Z","lastDonation":"2017-02-21T08:57:56.230Z","tier":"backer"},{"id":3197,"createdAt":"2017-02-21T09:44:08.865Z","name":"Ryan Graham","firstName":"Ryan","lastName":"Graham","username":"blade0r","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/1c4e0571-b2c0-4952-aa60-322a38a7b73f","website":null,"twitterHandle":null,"totalDonations":2500,"firstDonation":"2017-02-21T09:44:07.508Z","lastDonation":"2017-02-21T09:44:07.508Z","tier":"backer"},{"id":3229,"createdAt":"2017-02-22T10:26:21.490Z","name":"Kevin Scheffelmeier","firstName":"Kevin","lastName":"Scheffelmeier","username":"kevin","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/aec4e734-0ba3-4fac-9189-a7f8c3daabd8","website":"http://www.ksch.io","twitterHandle":null,"totalDonations":2500,"firstDonation":"2017-02-22T10:26:21.118Z","lastDonation":"2017-02-22T10:26:21.118Z","tier":"backer"},{"id":4523,"createdAt":"2017-04-30T15:33:35.570Z","name":"Dan Jasnowski","firstName":"Dan","lastName":"Jasnowski","username":"danjasnowski","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7807ac20-3392-11e7-81d7-2384611790a1.jpg","website":"http://danjasnowski.com","twitterHandle":"naknode01","totalDonations":2500,"firstDonation":"2017-04-30T15:33:33.620Z","lastDonation":"2017-08-01T16:35:59.691Z","tier":"backer"},{"id":2140,"createdAt":"2016-12-12T14:23:50.618Z","name":"manuelbieh ","firstName":"manuelbieh","lastName":"","username":"manuelbieh","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b0ee8220-17e5-11e7-a2ff-df948e4c489f.jpg","website":"https://www.manuelbieh.de","twitterHandle":"manuelbieh","totalDonations":2300,"firstDonation":"2016-12-12T14:23:55.136Z","lastDonation":"2017-08-12T15:24:31.373Z","tier":"backer"},{"id":1510,"createdAt":"2016-10-16T12:21:45.483Z","name":"Eduardo Rabelo","firstName":"Eduardo","lastName":"Rabelo","username":"oieduardorabelo","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f13yAwcOjpg_3ec09040-939b-11e6-959d-07ed50026d25.jpeg","website":"https://www.eduardorabelo.me","twitterHandle":"oieduardorabelo","totalDonations":2200,"firstDonation":"2016-10-16T12:21:52.642Z","lastDonation":"2017-08-10T01:02:12.802Z","tier":"backer"},{"id":1512,"createdAt":"2016-10-16T17:28:33.247Z","name":"Jake Day","firstName":"Jake","lastName":"Day","username":"jakewilliams","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8260223730e644e9b9f1073b2c044ce7_49b168f0-93c6-11e6-959d-07ed50026d25.jpeg","website":"http://wildacademy.com","twitterHandle":"jakedaywilliams","totalDonations":2200,"firstDonation":"2016-10-16T17:28:40.956Z","lastDonation":"2017-08-16T18:29:35.949Z","tier":"backer"},{"id":1513,"createdAt":"2016-10-16T17:42:06.775Z","name":"David Jungst","firstName":"David","lastName":"Jungst","username":"davidjungst","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2320459v3_ff281250-93c7-11e6-959d-07ed50026d25.png","website":"https://github.com/cottonwoodcoding/webpack-rails-react","twitterHandle":"djungst","totalDonations":2200,"firstDonation":"2016-10-16T17:42:15.162Z","lastDonation":"2017-08-16T18:43:22.207Z","tier":"backer"},{"id":1514,"createdAt":"2016-10-16T18:04:12.917Z","name":"Parker Bond","firstName":"Parker","lastName":"Bond","username":"parkerbond","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2b294d30-93cb-11e6-959d-07ed50026d25.jpg","website":null,"twitterHandle":null,"totalDonations":2200,"firstDonation":"2016-10-16T18:04:19.781Z","lastDonation":"2017-08-16T19:05:14.472Z","tier":"backer"},{"id":1516,"createdAt":"2016-10-16T18:39:44.004Z","name":"Daniel Treasure","firstName":"Daniel","lastName":"Treasure","username":"danieltreasure","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e03528a909172949bf4ca8a69e07519e_ff4da210-93cf-11e6-959d-07ed50026d25.jpeg","website":"http://www.useable.com/","twitterHandle":"dantreasure","totalDonations":2200,"firstDonation":"2016-10-16T18:39:54.402Z","lastDonation":"2017-08-16T19:40:36.886Z","tier":"backer"},{"id":1518,"createdAt":"2016-10-16T19:31:04.672Z","name":"Kenneth Brubaker","firstName":"Kenneth","lastName":"Brubaker","username":"kennethbrubaker","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/593bc5c0-93d7-11e6-959d-07ed50026d25.jpg","website":"https://medium.com/@kenbrubaker","twitterHandle":"clavecoder","totalDonations":2200,"firstDonation":"2016-10-16T19:31:10.324Z","lastDonation":"2017-08-16T20:31:51.483Z","tier":"backer"},{"id":1520,"createdAt":"2016-10-17T05:24:53.034Z","name":"Mukesh Soni","firstName":"Mukesh","lastName":"Soni","username":"mukeshsoni","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/dc58c1ce626749c7a848b1f6f645f7c1_38351900-942a-11e6-8e17-c5fbc70a6943.jpeg","website":"https://github.com/mukeshsoni","twitterHandle":"mukeshsoni","totalDonations":2200,"firstDonation":"2016-10-17T05:24:57.780Z","lastDonation":"2017-08-17T06:25:44.410Z","tier":"backer"},{"id":1524,"createdAt":"2016-10-17T10:38:44.899Z","name":"Kostas Manionis","firstName":"Kostas","lastName":"Manionis","username":"kostasmanionis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5301424v3_f7e65fe0-9455-11e6-8e17-c5fbc70a6943.jpeg","website":null,"twitterHandle":"KManionis","totalDonations":2200,"firstDonation":"2016-10-17T10:38:48.810Z","lastDonation":"2017-08-17T11:39:46.373Z","tier":"backer"},{"id":1529,"createdAt":"2016-10-18T11:26:32.546Z","name":"Guilherme Rodrigues","firstName":"Guilherme","lastName":"Rodrigues","username":"guilhermerodrigues","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5b21481d3de2439ebd4965c6464b2502_4af3b400-9526-11e6-add0-93faa9a7296f.png","website":"http://firstdoit.com/","twitterHandle":"first_doit","totalDonations":2200,"firstDonation":"2016-10-18T11:26:38.199Z","lastDonation":"2017-08-18T12:27:04.561Z","tier":"backer"},{"id":1530,"createdAt":"2016-10-18T11:28:54.347Z","name":"Refael Dakar","firstName":"Refael","lastName":"Dakar","username":"Rafachon","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ecac59448beca5912728bbd550bf1f13_38016450-9526-11e6-add0-93faa9a7296f.jpeg","website":"http://www.soom.la","twitterHandle":"_refaelos","totalDonations":2200,"firstDonation":"2016-10-18T11:29:01.542Z","lastDonation":"2017-08-18T12:29:54.421Z","tier":"backer"},{"id":1545,"createdAt":"2016-10-19T19:22:10.181Z","name":"Vu Tran","firstName":"Vu","lastName":"Tran","username":"tranvu","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b7fb7d9badc24e40a618f77dd41c83cc_5ce76010-9631-11e6-a6e9-23ce753be86b.jpeg","website":"https://github.com/vutran","twitterHandle":"tranvu","totalDonations":2200,"firstDonation":"2016-10-19T19:22:16.429Z","lastDonation":"2017-08-19T20:22:34.213Z","tier":"backer"},{"id":2982,"createdAt":"2017-02-05T03:27:25.105Z","name":"kuma ","firstName":"kuma","lastName":"","username":"kuma","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/0d25c1d0-eb53-11e6-b96e-159edf58ea97.JPG","website":"https://github.com/km-tr","twitterHandle":null,"totalDonations":2100,"firstDonation":"2017-02-05T03:27:23.208Z","lastDonation":"2017-08-04T02:05:41.610Z","tier":"backer"},{"id":1549,"createdAt":"2016-10-20T13:46:48.697Z","name":"Mark Fayngersh","firstName":"Mark","lastName":"Fayngersh","username":"pheuter","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e292203acc74408fbc91e41dda75b0df_b86f2cc0-96cb-11e6-baa3-69f47ab52eed.jpeg","website":"http://markfayngersh.com","twitterHandle":"pheuter","totalDonations":2000,"firstDonation":"2016-10-20T13:46:56.798Z","lastDonation":"2017-01-20T14:48:26.214Z","tier":"backer"},{"id":1574,"createdAt":"2016-10-22T22:10:10.561Z","name":"Greg Venech","firstName":"Greg","lastName":"Venech","username":"gregvenech","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8988697v3_5fa66e20-98a4-11e6-8499-47c396fa434e.jpeg","website":"http://gregvenech.com","twitterHandle":null,"totalDonations":2000,"firstDonation":"2016-10-22T22:10:37.947Z","lastDonation":"2017-07-22T23:10:34.213Z","tier":"backer"},{"id":1599,"createdAt":"2016-10-24T11:04:09.693Z","name":"Espen Hovlandsdal","firstName":"Espen","lastName":"Hovlandsdal","username":"rexxars","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9e9819e0-99d9-11e6-8650-f92e594d5de8.jpg","website":"http://espen.codes","twitterHandle":"rexxars","totalDonations":2000,"firstDonation":"2016-10-24T11:04:15.063Z","lastDonation":"2017-07-24T12:05:51.891Z","tier":"backer"},{"id":1604,"createdAt":"2016-10-24T12:29:39.122Z","name":"Matt Palmer","firstName":"Matt","lastName":"Palmer","username":"mpalmer_","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/4714123a-83d5-4572-ab6f-3dafdda991ec","website":"http://gplus.to/mattpalmer","twitterHandle":"mpalmer_","totalDonations":2000,"firstDonation":"2016-10-24T12:30:14.555Z","lastDonation":"2017-07-24T13:30:26.151Z","tier":"backer"},{"id":1609,"createdAt":"2016-10-24T13:32:12.088Z","name":"Viesturs Teivāns","firstName":"Viesturs","lastName":"Teivāns","username":"viestursteivans","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/07221be18cca45a59395d288b92492c6_68ba6110-99ee-11e6-8650-f92e594d5de8.jpeg","website":null,"twitterHandle":"viestursv","totalDonations":2000,"firstDonation":"2016-10-24T13:32:19.995Z","lastDonation":"2017-01-24T14:32:41.009Z","tier":"backer"},{"id":1615,"createdAt":"2016-10-24T14:25:17.401Z","name":"Selçuk Kiraz","firstName":"Selçuk","lastName":"Kiraz","username":"selcukkiraz","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b6cc2c10-99f5-11e6-8650-f92e594d5de8.jpg","website":null,"twitterHandle":"celljuke","totalDonations":2000,"firstDonation":"2016-10-24T14:25:25.044Z","lastDonation":"2017-07-24T15:26:19.963Z","tier":"backer"},{"id":1618,"createdAt":"2016-10-24T15:16:07.405Z","name":"Rude Ayelo","firstName":"Rude","lastName":"Ayelo","username":"rude","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/140042v3_da2bca10-99fc-11e6-8650-f92e594d5de8.jpeg","website":"http://rude.works","twitterHandle":"Rude","totalDonations":2000,"firstDonation":"2016-10-24T15:16:23.090Z","lastDonation":"2017-07-24T16:18:34.030Z","tier":"backer"},{"id":1628,"createdAt":"2016-10-25T01:53:24.132Z","name":"Santeri Hiltunen","firstName":"Santeri","lastName":"Hiltunen","username":"santerihiltunen","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ead00da0-9a55-11e6-a7b8-e9c9765a46ab.jpg","website":"http://hilzu.moe","twitterHandle":"ze_hilda","totalDonations":2000,"firstDonation":"2016-10-25T01:53:32.620Z","lastDonation":"2017-07-25T02:54:52.819Z","tier":"backer"},{"id":1633,"createdAt":"2016-10-25T11:28:01.474Z","name":"Riderman De Sousa Barbosa","firstName":"Riderman","lastName":"De Sousa Barbosa","username":"ridermansb","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/268b4990-9aa6-11e6-a7b8-e9c9765a46ab.png","website":"http://about.me/ridermansb","twitterHandle":"ridermansb","totalDonations":2000,"firstDonation":"2016-10-25T11:28:09.555Z","lastDonation":"2017-07-25T12:29:13.041Z","tier":"backer"},{"id":1724,"createdAt":"2016-11-02T14:06:15.074Z","name":"Oliver Wehn","firstName":"Oliver","lastName":"Wehn","username":"hello6","role":"BACKER","avatar":"https://logo.clearbit.com/oliverwehn.ventures","website":"http://venturesby.design","twitterHandle":"oliverwehn","totalDonations":2000,"firstDonation":"2016-11-02T14:06:14.557Z","lastDonation":"2016-11-02T14:06:14.557Z","tier":"backer"},{"id":1725,"createdAt":"2016-11-02T14:38:51.079Z","name":"Bhargav Ponnapalli","firstName":"Bhargav","lastName":"Ponnapalli","username":"bhargavponnapalli","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2936644v3_2ab811f0-a10a-11e6-ba30-f10557c4c678.jpeg","website":"http://github.com/imbhargav5","twitterHandle":"imbhargav5","totalDonations":2000,"firstDonation":"2016-11-02T14:38:57.342Z","lastDonation":"2017-08-02T15:39:56.917Z","tier":"backer"},{"id":1766,"createdAt":"2016-11-11T08:46:22.193Z","name":"Jean-Luc Geering","firstName":"Jean-Luc","lastName":"Geering","username":"jlgeering16","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a5c35ae0-a8b1-11e6-b03f-7d1c58dd13b8.png","website":null,"twitterHandle":"jlgeering","totalDonations":2000,"firstDonation":"2016-11-11T08:46:40.182Z","lastDonation":"2017-08-11T09:46:35.616Z","tier":"backer"},{"id":1777,"createdAt":"2016-11-12T19:13:51.983Z","name":"Aaron Godin","firstName":"Aaron","lastName":"Godin","username":"aarongodin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4606528v3_4a525430-a90c-11e6-b03f-7d1c58dd13b8.jpeg","website":"http://github.com/aarongodin","twitterHandle":null,"totalDonations":2000,"firstDonation":"2016-11-12T19:13:58.114Z","lastDonation":"2017-08-12T20:14:30.411Z","tier":"backer"},{"id":1784,"createdAt":"2016-11-15T00:35:07.163Z","name":"Jonathan Reem","firstName":"Jonathan","lastName":"Reem","username":"jreem","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8dcc0560-aacb-11e6-aa69-a5954496a38c.jpg","website":"https://medium.com/@jreem/","twitterHandle":"jreem","totalDonations":2000,"firstDonation":"2016-11-15T00:35:16.650Z","lastDonation":"2017-08-15T01:37:56.745Z","tier":"backer"},{"id":1801,"createdAt":"2016-11-17T01:49:49.372Z","name":"Giovanni Orlando","firstName":"Giovanni","lastName":"Orlando","username":"giovanni0918","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/68c6c97d5fe0418190a1414fdf46d8fb_30a0f550-ac68-11e6-b911-057a8af5240e.jpeg","website":"https://giovanni-orlando.com/","twitterHandle":"Giovanni0918","totalDonations":2000,"firstDonation":"2016-11-17T01:49:55.256Z","lastDonation":"2017-08-01T13:16:00.814Z","tier":"backer"},{"id":1803,"createdAt":"2016-11-17T09:16:11.209Z","name":"Kanitkorn Sujautra","firstName":"Kanitkorn","lastName":"Sujautra","username":"kanitkornk","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1df0b910-aca7-11e6-b911-057a8af5240e.png","website":"http://kanitkorn.com","twitterHandle":"kanitkornk","totalDonations":2000,"firstDonation":"2016-11-17T09:16:17.962Z","lastDonation":"2017-08-17T10:16:22.941Z","tier":"backer"},{"id":1837,"createdAt":"2016-11-21T16:40:21.608Z","name":"Kevin Pruett","firstName":"Kevin","lastName":"Pruett","username":"pruett","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/794809v3_40ae2e50-b009-11e6-b987-177ed2260100.jpeg","website":"http://kevinpruett.com","twitterHandle":"Pruett","totalDonations":2000,"firstDonation":"2016-11-21T16:40:29.812Z","lastDonation":"2017-08-21T17:41:00.642Z","tier":"backer"},{"id":2633,"createdAt":"2017-01-19T20:19:55.977Z","name":"Sylvain ","firstName":"Sylvain","lastName":"","username":"sboulade","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9997ea40-de87-11e6-a24d-9b2e5181ce25.jpg","website":null,"twitterHandle":null,"totalDonations":2000,"firstDonation":"2017-01-19T20:20:06.514Z","lastDonation":"2017-04-19T21:21:27.969Z","tier":"backer"},{"id":2699,"createdAt":"2017-01-23T23:48:34.063Z","name":"Artur Kulig","firstName":"Artur","lastName":"Kulig","username":"arturkulig","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/9045c622-397c-4ca6-8500-87e50f6a397c","website":"http://arturkulig.pl","twitterHandle":null,"totalDonations":2000,"firstDonation":"2017-01-23T23:48:41.829Z","lastDonation":"2017-04-24T00:49:59.013Z","tier":"backer"},{"id":3246,"createdAt":"2017-02-23T16:49:44.072Z","name":"Ben McCormick","firstName":"Ben","lastName":"McCormick","username":"benmccormick","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/7a8a2ed6-a4d1-4fd9-8491-7d9c0e22d578","website":null,"twitterHandle":null,"totalDonations":2000,"firstDonation":"2017-02-23T16:49:44.040Z","lastDonation":"2017-02-23T16:49:44.040Z","tier":"backer"},{"id":4729,"createdAt":"2017-05-10T02:33:33.182Z","name":"Dexter Haslem","firstName":"Dexter","lastName":"Haslem","username":"dmh","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/45942f00-3529-11e7-81bd-29b6c95afc9c.jpg","website":"http://dexterhaslem.com","twitterHandle":"DexterHaslem","totalDonations":2000,"firstDonation":"2017-05-10T02:33:31.651Z","lastDonation":"2017-06-01T03:59:20.625Z","tier":"backer"},{"id":5872,"createdAt":"2017-07-05T18:19:33.999Z","name":"Suman Bharadwaj","firstName":"Suman","lastName":"Bharadwaj","username":"sumandna","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8b167cc0-61ae-11e7-830d-3d735d3fbce2.jpg","website":null,"twitterHandle":null,"totalDonations":2000,"firstDonation":"2017-07-05T18:19:32.734Z","lastDonation":"2017-08-01T19:33:38.006Z","tier":"backer"},{"id":5919,"createdAt":"2017-07-07T16:46:27.830Z","name":"Anup ","firstName":"Anup","lastName":"","username":"reznord","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/db5a41d0-7941-11e7-9a37-35a8ed456d67.png","website":"http://anup07.wordpress.com/","twitterHandle":"_reznord","totalDonations":2000,"firstDonation":"2017-07-07T16:46:26.500Z","lastDonation":"2017-08-04T18:15:32.948Z","tier":"backer"},{"id":5921,"createdAt":"2017-07-07T18:31:30.967Z","name":"drdla ","firstName":"drdla","lastName":"","username":"dominikrodler","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8f757380-6342-11e7-9ed2-bfa12b0351e8.png","website":null,"twitterHandle":null,"totalDonations":2000,"firstDonation":"2017-07-07T18:31:29.184Z","lastDonation":"2017-08-01T19:40:52.497Z","tier":"backer"},{"id":5964,"createdAt":"2017-07-10T12:20:29.937Z","name":"Vladimir Kalinichev","firstName":"Vladimir","lastName":"Kalinichev","username":"wrumyl","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/39b10250-656a-11e7-bc32-37375661aee6.png","website":"https://vkalinichev.com","twitterHandle":"vkalinichev","totalDonations":2000,"firstDonation":"2017-07-10T12:20:28.302Z","lastDonation":"2017-08-01T13:21:36.770Z","tier":"backer"},{"id":6064,"createdAt":"2017-07-14T01:39:46.861Z","name":"Mark Drake","firstName":"Mark","lastName":"Drake","username":"markusdrake","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/bc7f120422644718b854df95448af382_52251ac0-6b18-11e7-a92d-85a8d8a0100f.jpeg","website":"https://www.markadrake.com/","twitterHandle":"drakecode","totalDonations":2000,"firstDonation":"2017-07-14T01:39:45.802Z","lastDonation":"2017-08-01T04:39:25.274Z","tier":"backer"},{"id":6076,"createdAt":"2017-07-14T19:15:14.044Z","name":"Valentin Semirulnik","firstName":"Valentin","lastName":"Semirulnik","username":"v7rulnik","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/08b658e5-8a83-425a-956b-af99d80f559f","website":"https://7rulnik.me/","twitterHandle":null,"totalDonations":2000,"firstDonation":"2017-07-14T19:15:12.774Z","lastDonation":"2017-08-01T20:16:08.831Z","tier":"backer"},{"id":1866,"createdAt":"2016-11-24T07:54:28.253Z","name":"Craig Doremus","firstName":"Craig","lastName":"Doremus","username":"craigdoremus","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f2c986bdc42c405c80539850f915a146_62664730-b21b-11e6-b509-cb2d79f59262.jpeg","website":null,"twitterHandle":"cdoremus","totalDonations":1800,"firstDonation":"2016-11-24T07:54:40.451Z","lastDonation":"2017-07-24T08:55:17.738Z","tier":"backer"},{"id":895,"createdAt":"2016-11-26T21:47:37.024Z","name":"Timber.io ","firstName":"Timber.io","lastName":"","username":"timberio","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5c267610-59a1-11e6-9263-4dfeb3c90ccc.png","website":"https://timber.io","twitterHandle":"timberdotio","totalDonations":1800,"firstDonation":"2016-11-26T21:47:47.374Z","lastDonation":"2017-07-26T22:48:56.955Z","tier":"backer"},{"id":1987,"createdAt":"2016-12-01T08:09:13.988Z","name":"Sergey Sharov","firstName":"Sergey","lastName":"Sharov","username":"sergeysharov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/3fbb99fe1dd84975a0f4c441c48ef4b7_7fa1d6c0-b79d-11e6-a252-01d56694c55a.png","website":null,"twitterHandle":null,"totalDonations":1800,"firstDonation":"2016-12-01T08:09:18.739Z","lastDonation":"2017-08-01T09:09:39.308Z","tier":"backer"},{"id":2087,"createdAt":"2016-12-06T08:31:44.831Z","name":"Endel Dreyer","firstName":"Endel","lastName":"Dreyer","username":"endel","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/926ac6b6c3cd4faeb3053b59ffa4bdda_7d190280-bb8e-11e6-83ad-99f299955467.jpeg","website":"http://endel.me/","twitterHandle":"endel","totalDonations":1800,"firstDonation":"2016-12-06T08:31:53.430Z","lastDonation":"2017-08-06T09:32:20.298Z","tier":"backer"},{"id":1240,"createdAt":"2016-12-14T23:52:30.315Z","name":"Harun Hasdal","firstName":"Harun","lastName":"Hasdal","username":"harunhasdal","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1c184780-7f60-11e6-bb6b-515b6034546d.jpg","website":null,"twitterHandle":"harunhasdal","totalDonations":1800,"firstDonation":"2016-12-14T23:52:39.577Z","lastDonation":"2017-08-15T00:53:21.642Z","tier":"backer"},{"id":2183,"createdAt":"2016-12-15T08:38:10.305Z","name":"Darren Scerri","firstName":"Darren","lastName":"Scerri","username":"darrenscerri","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/729230v3_d8e86190-c2a1-11e6-9842-73d0b451cb23.jpeg","website":null,"twitterHandle":"darrenscerri","totalDonations":1800,"firstDonation":"2016-12-15T08:38:41.471Z","lastDonation":"2017-08-15T09:38:54.883Z","tier":"backer"},{"id":2188,"createdAt":"2016-12-15T16:08:22.139Z","name":"Karan Nijhawan","firstName":"Karan","lastName":"Nijhawan","username":"karannijhawan","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/bc59bf80-c2e0-11e6-9842-73d0b451cb23.jpg","website":"http://github.com/devil1991/","twitterHandle":null,"totalDonations":1800,"firstDonation":"2016-12-15T16:08:28.426Z","lastDonation":"2017-08-15T17:09:12.374Z","tier":"backer"},{"id":2214,"createdAt":"2016-12-17T16:25:05.585Z","name":"Hozefa Jodiawalla","firstName":"Hozefa","lastName":"Jodiawalla","username":"hozefaj","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ca7b0059e40a477f8dc3b0bd46ce3cfa_67efdf10-c475-11e6-bf21-ad82a4ff4445.jpeg","website":null,"twitterHandle":"HozefaJ","totalDonations":1800,"firstDonation":"2016-12-17T16:25:13.744Z","lastDonation":"2017-08-17T17:25:38.273Z","tier":"backer"},{"id":2252,"createdAt":"2016-12-21T17:54:33.448Z","name":"Leonidas Esteban","firstName":"Leonidas","lastName":"Esteban","username":"leonidasesteban","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ff456b096b90ba9c1dacc35f8f3358a3_9ff23cd0-c7a6-11e6-973f-31eca31cf144.jpeg","website":"http://leonidasesteban.com","twitterHandle":"LeonidasEsteban","totalDonations":1800,"firstDonation":"2016-12-21T17:54:42.698Z","lastDonation":"2017-08-21T18:55:55.587Z","tier":"backer"},{"id":1738,"createdAt":"2016-11-03T18:16:34.027Z","name":"Fravic ","firstName":"Fravic","lastName":"","username":"fravic","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/0b23c530-a1f2-11e6-9564-49520f227cc8.jpeg","website":"http://fravic.com","twitterHandle":null,"totalDonations":1600,"firstDonation":"2016-11-03T18:16:46.270Z","lastDonation":"2017-06-03T19:18:17.320Z","tier":"backer"},{"id":2257,"createdAt":"2016-12-22T01:31:29.075Z","name":"Woojin Joe","firstName":"Woojin","lastName":"Joe","username":"joewoojin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1357019v3_690f8890-c7e6-11e6-a3d3-3f9006ba7278.jpeg","website":"http://www.notforme.kr","twitterHandle":"JoeWooJin","totalDonations":1600,"firstDonation":"2016-12-22T01:31:36.014Z","lastDonation":"2017-07-22T02:32:27.147Z","tier":"backer"},{"id":2349,"createdAt":"2016-12-29T15:12:01.257Z","name":"Artur Ptaszek","firstName":"Artur","lastName":"Ptaszek","username":"arturptaszek","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/424383c2f01f4be8aee8ac42ce7c1adb_39fae4c0-cdd9-11e6-81e4-a55544f2a69d.png","website":null,"twitterHandle":"ArturPtaszek","totalDonations":1600,"firstDonation":"2016-12-29T15:12:09.996Z","lastDonation":"2017-07-29T16:13:39.847Z","tier":"backer"},{"id":2468,"createdAt":"2017-01-07T21:47:31.507Z","name":"Andy Brown","firstName":"Andy","lastName":"Brown","username":"andrewbrown","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a0a5504aefea40d4b9f3ef2ea5fc7d6f_f1a278e0-d522-11e6-ad5b-0fd114c0a22d.png","website":null,"twitterHandle":"brownomatic","totalDonations":1600,"firstDonation":"2017-01-07T21:47:38.159Z","lastDonation":"2017-08-07T22:48:14.001Z","tier":"backer"},{"id":2512,"createdAt":"2017-01-12T02:55:30.324Z","name":"Mark Lozano","firstName":"Mark","lastName":"Lozano","username":"marklozano","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7cf6ecb7bfa44e76ae1fe6ca77dc7c79_b2520590-d872-11e6-8824-3766c82c6227.png","website":null,"twitterHandle":"niftymonkey","totalDonations":1600,"firstDonation":"2017-01-12T02:55:42.654Z","lastDonation":"2017-08-12T03:56:12.337Z","tier":"backer"},{"id":2543,"createdAt":"2017-01-14T04:30:40.797Z","name":"Tim Griesser","firstName":"Tim","lastName":"Griesser","username":"timgriesser","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/692b84b9eac64167b151b919f0a27aef_49d4ad00-da12-11e6-af11-676b2b71a93b.png","website":"http://github.com/tgriesser","twitterHandle":"tgriesser","totalDonations":1600,"firstDonation":"2017-01-14T04:30:46.452Z","lastDonation":"2017-08-14T05:31:26.901Z","tier":"backer"},{"id":2550,"createdAt":"2017-01-14T19:13:22.113Z","name":"Cale Newman","firstName":"Cale","lastName":"Newman","username":"calesce","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d94ce2b172604cec8bafc4f83daf28d1_928d8190-da8d-11e6-af11-676b2b71a93b.jpeg","website":"http://github.com/calesce","twitterHandle":"calesce","totalDonations":1600,"firstDonation":"2017-01-14T19:13:25.566Z","lastDonation":"2017-08-14T20:14:05.758Z","tier":"backer"},{"id":2596,"createdAt":"2017-01-18T14:27:06.241Z","name":"Mike Auclair","firstName":"Mike","lastName":"Auclair","username":"mikeauclair","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/24d4b23d4ea04477b5544c4a111145cb_3941d5a0-dd8a-11e6-aabd-af731cff2f24.png","website":null,"twitterHandle":"mikeauclair","totalDonations":1600,"firstDonation":"2017-01-18T14:27:11.568Z","lastDonation":"2017-08-18T15:27:44.855Z","tier":"backer"},{"id":2598,"createdAt":"2017-01-18T16:07:19.118Z","name":"Peter Šulek","firstName":"Peter","lastName":"Šulek","username":"psulek","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/81a4917afc704b47996db08aba0c77a4_49b1b7d0-dd98-11e6-aabd-af731cff2f24.png","website":"http://psulek.blogspot.com","twitterHandle":"psulek","totalDonations":1600,"firstDonation":"2017-01-18T16:07:26.622Z","lastDonation":"2017-08-18T17:08:54.900Z","tier":"backer"},{"id":2620,"createdAt":"2017-01-19T08:00:27.754Z","name":"Jeevan Palakurty","firstName":"Jeevan","lastName":"Palakurty","username":"jeevanpalakurty","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7357c1e03ffe4f80be3a70e6347cb976_8c63fe00-de1d-11e6-aabd-af731cff2f24.jpeg","website":null,"twitterHandle":"jpalakurty","totalDonations":1600,"firstDonation":"2017-01-19T08:00:31.809Z","lastDonation":"2017-08-19T09:01:34.100Z","tier":"backer"},{"id":2719,"createdAt":"2017-01-25T12:36:33.514Z","name":"李勇 ","firstName":"李勇","lastName":"","username":"kaven276","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/20e4e800-e2fb-11e6-96ad-4fa0cb304f32.jpg","website":"https://github.com/kaven276","twitterHandle":null,"totalDonations":1600,"firstDonation":"2017-01-25T12:36:32.049Z","lastDonation":"2017-08-01T13:39:11.517Z","tier":"backer"},{"id":2731,"createdAt":"2017-01-26T01:55:06.177Z","name":"Josema EnZo","firstName":"Josema","lastName":"EnZo","username":"josemaenzo","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/84a6dda9-d766-4e58-b1a8-7aaa7eef7b30","website":null,"twitterHandle":null,"totalDonations":1600,"firstDonation":"2017-01-26T01:55:04.050Z","lastDonation":"2017-08-01T04:39:24.109Z","tier":"backer"},{"id":2805,"createdAt":"2017-01-29T03:27:22.071Z","name":"Mike Joyce","firstName":"Mike","lastName":"Joyce","username":"mikejoyce","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/09131937-4ea5-40c5-9beb-d42ed2eb2d3e","website":null,"twitterHandle":null,"totalDonations":1600,"firstDonation":"2017-01-29T03:27:20.574Z","lastDonation":"2017-08-01T05:02:41.621Z","tier":"backer"},{"id":2869,"createdAt":"2017-01-31T12:55:39.708Z","name":"Klemen Slavic","firstName":"Klemen","lastName":"Slavic","username":"krofdrakula","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2d16cbaadde84bca852b60de7f08324a_88a90de0-1b9f-11e7-a417-93a4b72c3fe6.png","website":"https://krofdrakula.github.io/","twitterHandle":null,"totalDonations":1600,"firstDonation":"2017-01-31T12:55:38.250Z","lastDonation":"2017-08-01T13:56:50.128Z","tier":"backer"},{"id":2253,"createdAt":"2016-12-21T18:09:11.271Z","name":"Dano Alexander","firstName":"Dano","lastName":"Alexander","username":"altruity","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/937917v3_ad376260-c7a8-11e6-973f-31eca31cf144.jpeg","website":null,"twitterHandle":"altruity","totalDonations":1500,"firstDonation":"2016-12-21T18:09:10.957Z","lastDonation":"2016-12-21T18:09:10.957Z","tier":"backer"},{"id":2473,"createdAt":"2017-01-08T09:34:07.792Z","name":"Ziad Jammal","firstName":"Ziad","lastName":"Jammal","username":"zjammal","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1475845v3_a7b34850-d585-11e6-ad5b-0fd114c0a22d.jpeg","website":"http://ziad.eljammal.com","twitterHandle":"zjammal","totalDonations":1500,"firstDonation":"2017-01-08T09:34:12.168Z","lastDonation":"2017-03-08T10:35:00.584Z","tier":"backer"},{"id":3492,"createdAt":"2017-03-13T13:16:21.183Z","name":"Dusan Radojevic","firstName":"Dusan","lastName":"Radojevic","username":"radojesrb","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/7f112038-911b-4f9d-a1c0-604393800adb","website":null,"twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-03-13T13:16:19.234Z","lastDonation":"2017-05-04T14:16:52.844Z","tier":"backer"},{"id":3713,"createdAt":"2017-04-07T03:14:38.022Z","name":"Spencer Hamm","firstName":"Spencer","lastName":"Hamm","username":"spentacular","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/2750311f-442f-4ae4-8b42-4c4686f79d49","website":"https://twitter.com/Spentacular","twitterHandle":"Spentacular","totalDonations":1500,"firstDonation":"2017-04-07T03:14:36.951Z","lastDonation":"2017-06-01T04:15:43.955Z","tier":"backer"},{"id":3983,"createdAt":"2017-06-01T15:07:07.384Z","name":"Corjen ","firstName":"Corjen","lastName":"","username":"corjen","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/80f652c0-190f-11e7-943b-fb6a25f99f9a.jpeg","website":null,"twitterHandle":"corjenmoll","totalDonations":1500,"firstDonation":"2017-06-01T15:07:06.364Z","lastDonation":"2017-08-01T16:09:29.933Z","tier":"backer"},{"id":5463,"createdAt":"2017-06-18T04:12:22.065Z","name":"Michael Loughry","firstName":"Michael","lastName":"Loughry","username":"miclo","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7d87faba55534470ba17bec9ebe41eb5_842a3410-5498-11e7-8052-fb4a3795bb4b.png","website":null,"twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-06-18T04:12:21.082Z","lastDonation":"2017-08-01T05:43:11.583Z","tier":"backer"},{"id":5483,"createdAt":"2017-06-19T20:37:34.421Z","name":"Robert Borg","firstName":"Robert","lastName":"Borg","username":"rauban","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/07e73c6a-2aaf-45fa-8b5c-581649be7835","website":null,"twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-06-19T20:37:33.259Z","lastDonation":"2017-08-01T21:38:35.114Z","tier":"backer"},{"id":4765,"createdAt":"2017-06-23T07:56:19.027Z","name":"Anders Hansen","firstName":"Anders","lastName":"Hansen","username":"xiplias","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a2dc65df-de2c-42f3-9270-a366fbdc06f1","website":"https://twitter.com/xiplias","twitterHandle":"xiplias","totalDonations":1500,"firstDonation":"2017-06-23T07:56:17.994Z","lastDonation":"2017-08-01T08:56:59.066Z","tier":"backer"},{"id":2682,"createdAt":"2017-06-24T08:55:19.682Z","name":"Rocco Curcio","firstName":"Rocco","lastName":"Curcio","username":"jsdotcr","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6e2f325f41484c689620453cbe69bc39_667772e0-211a-11e7-a7cf-7f32c97ce9dc.jpeg","website":"https://js.cr/","twitterHandle":"jsdotcr","totalDonations":1500,"firstDonation":"2017-06-24T08:55:18.028Z","lastDonation":"2017-08-01T09:56:18.621Z","tier":"backer"},{"id":2446,"createdAt":"2017-06-26T13:35:31.008Z","name":"Carlos Pérezpriego","firstName":"Carlos","lastName":"Pérezpriego","username":"carlosepp","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/c71798106e08686f61cfc5e7abacd3e3png_ccf08d10-d375-11e6-b711-1589373fcf88.png","website":"http://perezpriego.com","twitterHandle":"perezpriego7","totalDonations":1500,"firstDonation":"2017-06-26T13:35:30.002Z","lastDonation":"2017-08-01T14:36:48.341Z","tier":"backer"},{"id":5630,"createdAt":"2017-06-26T18:54:51.147Z","name":"Luke Bennett","firstName":"Luke","lastName":"Bennett","username":"lukeeeebennettplus","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/213e540a-c110-4e44-8738-ceee07faae35","website":"https://twitter.com/__lukebennett","twitterHandle":"__lukebennett","totalDonations":1500,"firstDonation":"2017-06-26T18:54:49.830Z","lastDonation":"2017-08-01T19:56:46.635Z","tier":"backer"},{"id":5631,"createdAt":"2017-06-26T19:26:40.790Z","name":"Mark Thomas","firstName":"Mark","lastName":"Thomas","username":"markthethomas","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/c7a73d5f-4f3d-463d-8c34-a9626590dc56","website":"https://twitter.com/MarkTheThomas","twitterHandle":"MarkTheThomas","totalDonations":1500,"firstDonation":"2017-06-26T19:26:39.543Z","lastDonation":"2017-08-01T20:28:34.629Z","tier":"backer"},{"id":5642,"createdAt":"2017-06-26T23:07:45.235Z","name":"Gene Chulkov","firstName":"Gene","lastName":"Chulkov","username":"genechulkov","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/14fb0425-2c39-43fa-9781-46200cbf27ff","website":"https://twitter.com/yourhem","twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-06-26T23:07:44.196Z","lastDonation":"2017-08-02T00:09:34.145Z","tier":"backer"},{"id":5648,"createdAt":"2017-06-27T01:17:50.605Z","name":"Kevin Ortman","firstName":"Kevin","lastName":"Ortman","username":"kevinortman","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/0e239f396f604daf80539918082b2081_b6aee890-5baf-11e7-849c-b5d0dd7eeffe.jpeg","website":"https://github.com/kevinortman","twitterHandle":"dirkraster","totalDonations":1500,"firstDonation":"2017-06-27T01:17:49.571Z","lastDonation":"2017-08-01T03:50:23.036Z","tier":"backer"},{"id":5649,"createdAt":"2017-06-27T01:26:35.677Z","name":"Jeremy Morrell","firstName":"Jeremy","lastName":"Morrell","username":"morrelljeremy","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/04ddea4c-e336-4855-b32a-cca0869bc4b8","website":null,"twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-06-27T01:26:34.303Z","lastDonation":"2017-08-01T04:45:35.702Z","tier":"backer"},{"id":5657,"createdAt":"2017-06-27T05:37:46.865Z","name":"Eugene Molokov","firstName":"Eugene","lastName":"Molokov","username":"molokovev","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/fbcc804d-cbba-4603-9f94-9e450b2a8c09","website":null,"twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-06-27T05:37:45.673Z","lastDonation":"2017-08-16T06:38:43.954Z","tier":"backer"},{"id":5659,"createdAt":"2017-06-27T06:49:39.000Z","name":"Tom Liu","firstName":"Tom","lastName":"Liu","username":"getbyteswag","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ef864380-5b04-11e7-849c-b5d0dd7eeffe.jpg","website":"http://byteswag.com","twitterHandle":"byteSwag","totalDonations":1500,"firstDonation":"2017-06-27T06:49:37.680Z","lastDonation":"2017-08-01T07:50:21.920Z","tier":"backer"},{"id":5665,"createdAt":"2017-06-27T10:21:38.713Z","name":"Alexander Mostovenko","firstName":"Alexander","lastName":"Mostovenko","username":"alexmost1989","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/acc4bd32-a7a6-4e13-93cd-40b2bf54cd52","website":"https://twitter.com/MostovenkoA","twitterHandle":"MostovenkoA","totalDonations":1500,"firstDonation":"2017-06-27T10:21:36.287Z","lastDonation":"2017-08-01T11:22:16.053Z","tier":"backer"},{"id":5685,"createdAt":"2017-06-28T01:14:56.651Z","name":"Eric Feng","firstName":"Eric","lastName":"Feng","username":"erichfeng","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/075d0e58-bf3c-4a5a-a815-cbc87668853f","website":"https://twitter.com/ehfeng","twitterHandle":"ehfeng","totalDonations":1500,"firstDonation":"2017-06-28T01:14:55.501Z","lastDonation":"2017-08-01T03:49:52.435Z","tier":"backer"},{"id":5708,"createdAt":"2017-06-29T07:15:53.380Z","name":"Rolf Lekang","firstName":"Rolf","lastName":"Lekang","username":"relekang","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7a78a28a1bc54cffb3729f9f26348bc9_29563340-5c9f-11e7-82df-a7484784592d.png","website":"http://rolflekang.com","twitterHandle":"relekang","totalDonations":1500,"firstDonation":"2017-06-29T07:15:52.421Z","lastDonation":"2017-08-01T08:17:13.882Z","tier":"backer"},{"id":5752,"createdAt":"2017-06-30T18:23:19.045Z","name":"Martin Fischer","firstName":"Martin","lastName":"Fischer","username":"gabeldeluxe","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a7ddfdb8-8ee6-4218-a130-8e7d8f38736b","website":null,"twitterHandle":null,"totalDonations":1500,"firstDonation":"2017-06-30T18:23:18.083Z","lastDonation":"2017-08-01T19:40:35.877Z","tier":"backer"},{"id":8,"createdAt":"2016-10-15T15:47:40.951Z","name":"Aseem Sood","firstName":"Aseem","lastName":"Sood","username":"aseem","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/jMoeGBOJjpg_d83f6890-a13d-11e6-a8af-411ab4a2c609.jpeg","website":null,"twitterHandle":"AseemSood_","totalDonations":1400,"firstDonation":"2016-10-15T15:48:09.612Z","lastDonation":"2017-04-15T16:49:28.896Z","tier":"backer"},{"id":1598,"createdAt":"2016-10-24T11:00:22.777Z","name":"Mattias Johansson","firstName":"Mattias","lastName":"Johansson","username":"mpjme","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/TsCE6kM1png_2043dc50-99d9-11e6-8650-f92e594d5de8.png","website":"https://youtube.com/c/mpjmevideos","twitterHandle":"mpjme","totalDonations":1400,"firstDonation":"2016-10-24T11:00:29.437Z","lastDonation":"2017-04-24T12:01:00.605Z","tier":"backer"},{"id":2384,"createdAt":"2017-01-02T04:36:07.806Z","name":"Owen Kelly","firstName":"Owen","lastName":"Kelly","username":"ojkelly","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/04f378df067e4828b8e1f11fc9c8be46_ade41a00-d0a4-11e6-8a0a-9fadf33f4f8c.jpeg","website":"http://owenkelly.com.au","twitterHandle":"ojkelly","totalDonations":1400,"firstDonation":"2017-01-02T04:36:15.342Z","lastDonation":"2017-07-02T05:46:22.454Z","tier":"backer"},{"id":2681,"createdAt":"2017-01-22T08:13:16.772Z","name":"Davison Long","firstName":"Davison","lastName":"Long","username":"ngt_consulting","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/8ca0759f-4ade-4b3e-a219-561181122e3e","website":"http://www.nextgentech.net","twitterHandle":"ngt_consulting","totalDonations":1400,"firstDonation":"2017-01-22T08:13:24.565Z","lastDonation":"2017-07-22T09:14:53.617Z","tier":"backer"},{"id":2832,"createdAt":"2017-02-02T15:52:38.749Z","name":"13web ","firstName":"13web","lastName":"","username":"13web-avenue","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/56ea837d345642039e6a8c457cad8ecb_11d67b60-e960-11e6-8966-a5df7189a8e3.png","website":null,"twitterHandle":null,"totalDonations":1400,"firstDonation":"2017-02-02T15:52:35.742Z","lastDonation":"2017-08-01T16:56:14.785Z","tier":"backer"},{"id":3117,"createdAt":"2017-02-14T13:17:58.495Z","name":"Alexander Wunschik","firstName":"Alexander","lastName":"Wunschik","username":"mail6","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/wunschikit_cef33b50-f2b8-11e6-be6c-f979986acf2d.png","website":"https://github.com/mojoaxel","twitterHandle":"wunschik","totalDonations":1400,"firstDonation":"2017-02-14T13:17:56.931Z","lastDonation":"2017-08-01T14:20:48.123Z","tier":"backer"},{"id":3187,"createdAt":"2017-02-21T02:48:39.411Z","name":"Zack Ward","firstName":"Zack","lastName":"Ward","username":"zward84","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/03a94880-748c-436e-b2f7-5e822035d0cf","website":"http://www.zackward.net","twitterHandle":null,"totalDonations":1400,"firstDonation":"2017-02-21T02:48:37.693Z","lastDonation":"2017-08-01T04:45:42.098Z","tier":"backer"},{"id":3198,"createdAt":"2017-02-21T09:46:30.046Z","name":"Evgeny Timoshenko","firstName":"Evgeny","lastName":"Timoshenko","username":"timoshenkoevgeny","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/06222679-eaac-4d1c-94af-e0a0fff32827","website":null,"twitterHandle":null,"totalDonations":1400,"firstDonation":"2017-02-21T09:46:28.908Z","lastDonation":"2017-08-01T10:47:57.510Z","tier":"backer"},{"id":3201,"createdAt":"2017-02-21T14:20:33.296Z","name":"Ryan Johnson","firstName":"Ryan","lastName":"Johnson","username":"ryandrewjohnson","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/f74a8acd-cf75-4722-8dc2-877168532541","website":null,"twitterHandle":null,"totalDonations":1400,"firstDonation":"2017-02-21T14:20:31.414Z","lastDonation":"2017-08-01T15:22:04.327Z","tier":"backer"},{"id":3203,"createdAt":"2017-02-21T14:54:31.273Z","name":"Adam Howard","firstName":"Adam","lastName":"Howard","username":"a","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/5e2529e2-ca5e-495c-8e2f-facb62961cdc","website":"https://twitter.com/codeincontext","twitterHandle":"codeincontext","totalDonations":1400,"firstDonation":"2017-02-21T14:54:29.131Z","lastDonation":"2017-08-01T15:56:22.701Z","tier":"backer"},{"id":3220,"createdAt":"2017-02-22T00:29:13.953Z","name":"Chris Williams","firstName":"Chris","lastName":"Williams","username":"chris","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/22a5c0d1-3201-4fc9-a864-4b6389b88ffd","website":"https://twitter.com/amboy00","twitterHandle":"amboy00","totalDonations":1400,"firstDonation":"2017-02-22T00:29:12.488Z","lastDonation":"2017-08-01T02:43:41.331Z","tier":"backer"},{"id":3225,"createdAt":"2017-02-22T03:44:02.798Z","name":"George Yong","firstName":"George","lastName":"Yong","username":"geoyws","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/7ee2599b-d010-4ff0-8f66-8797c6277e1f","website":"https://twitter.com/geoyws","twitterHandle":"geoyws","totalDonations":1400,"firstDonation":"2017-02-22T03:44:01.129Z","lastDonation":"2017-08-01T05:03:49.070Z","tier":"backer"},{"id":3228,"createdAt":"2017-02-22T09:24:01.625Z","name":"Benjamin Geese","firstName":"Benjamin","lastName":"Geese","username":"code","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/cb7901dc-c6f8-493b-97a0-7103bbcd51fc","website":null,"twitterHandle":null,"totalDonations":1400,"firstDonation":"2017-02-22T09:24:00.092Z","lastDonation":"2017-08-01T10:24:37.839Z","tier":"backer"},{"id":2944,"createdAt":"2017-02-22T11:30:46.162Z","name":"Andreas Keller","firstName":"Andreas","lastName":"Keller","username":"andreaskeller","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/bdbf3e11281f4bc6aaa48e7f0044efff_f5a11a40-ea09-11e6-8d21-89d2dfadb64f.png","website":"https://www.awesomereact.com","twitterHandle":"itsakeller","totalDonations":1400,"firstDonation":"2017-02-22T11:30:45.076Z","lastDonation":"2017-08-01T12:33:30.376Z","tier":"backer"},{"id":3234,"createdAt":"2017-02-22T17:25:49.624Z","name":"Dylan Byth","firstName":"Dylan","lastName":"Byth","username":"ddwag1","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/90a2579f-44b7-4bd3-842e-13236080adff","website":"https://twitter.com/DylanByth","twitterHandle":"DylanByth","totalDonations":1400,"firstDonation":"2017-02-22T17:25:48.328Z","lastDonation":"2017-08-01T19:02:27.279Z","tier":"backer"},{"id":3274,"createdAt":"2017-02-25T18:30:51.475Z","name":"Johan Wendelstam","firstName":"Johan","lastName":"Wendelstam","username":"johan","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/13aadb19-9d82-490c-9958-8361d7225fce","website":"https://twitter.com/johanwendelstam","twitterHandle":"johanwendelstam","totalDonations":1400,"firstDonation":"2017-02-25T18:30:50.226Z","lastDonation":"2017-08-01T19:41:24.221Z","tier":"backer"},{"id":5691,"createdAt":"2017-06-28T13:38:51.478Z","name":"Mustafa Rashid","firstName":"Mustafa","lastName":"Rashid","username":"musito","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/26419d10-9127-43b4-8144-5330ce5737d5","website":null,"twitterHandle":null,"totalDonations":1400,"firstDonation":"2017-06-28T13:38:50.374Z","lastDonation":"2017-08-01T07:47:49.093Z","tier":"backer"},{"id":4392,"createdAt":"2017-07-15T05:12:22.601Z","name":"Manatsawin Hanmongkolchai","firstName":"Manatsawin","lastName":"Hanmongkolchai","username":"manatsawin","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/eec428ea-8399-4f5e-938c-2160e5c16c1f","website":"https://twitter.com/awkwin","twitterHandle":"awkwin","totalDonations":1300,"firstDonation":"2017-07-15T05:12:22.566Z","lastDonation":"2017-07-15T05:12:22.566Z","tier":"backer"},{"id":1606,"createdAt":"2016-10-24T12:38:47.556Z","name":"Kristoffer Brabrand","firstName":"Kristoffer","lastName":"Brabrand","username":"kbrabrand","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7ac60f6512fa4fac8484717339910ef8_b89f9f60-2846-11e7-8678-0b89daafed71.png","website":"https://github.com/kbrabrand","twitterHandle":"kbrabrand","totalDonations":1200,"firstDonation":"2016-10-24T12:38:56.169Z","lastDonation":"2017-03-24T13:40:46.819Z","tier":"backer"},{"id":1297,"createdAt":"2016-10-30T17:56:36.911Z","name":"Ferdinand Salis-Samaden","firstName":"Ferdinand","lastName":"Salis-Samaden","username":"mail","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ferdinandsaliscom_5b89af20-85ba-11e6-9fd7-73dd31eb7c0c.png","website":null,"twitterHandle":"ferdinandsalis","totalDonations":1200,"firstDonation":"2016-10-30T17:57:00.241Z","lastDonation":"2017-03-30T18:58:27.428Z","tier":"backer"},{"id":739,"createdAt":"2016-11-14T12:59:48.106Z","name":"Patrick Arminio","firstName":"Patrick","lastName":"Arminio","username":"patrickarminio","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/667029v3_40a68910-aa6a-11e6-aa69-a5954496a38c.jpeg","website":"http://patrick.wtf","twitterHandle":"patrick91","totalDonations":1200,"firstDonation":"2016-11-14T12:59:55.681Z","lastDonation":"2017-04-14T14:00:08.691Z","tier":"backer"},{"id":1834,"createdAt":"2016-11-21T07:37:26.063Z","name":"Vlad Kosinov","firstName":"Vlad","lastName":"Kosinov","username":"vladkosinov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8694e95ae65c4f21b1ea055b5722a290_89bbba00-afbd-11e6-b987-177ed2260100.png","website":null,"twitterHandle":"vlkosinov","totalDonations":1200,"firstDonation":"2016-11-21T07:37:34.056Z","lastDonation":"2017-04-21T08:37:59.437Z","tier":"backer"},{"id":2222,"createdAt":"2016-12-19T12:25:36.260Z","name":"Sean Matheson","firstName":"Sean","lastName":"Matheson","username":"sean1","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/588f6000-c5e6-11e6-b7d8-2594ba8f554f.jpg","website":"https://github.com/ctrlplusb","twitterHandle":"controlplusb","totalDonations":1200,"firstDonation":"2016-12-19T12:25:43.992Z","lastDonation":"2017-05-19T13:25:47.808Z","tier":"backer"},{"id":2608,"createdAt":"2017-01-18T23:32:01.640Z","name":"Alejandro Ortiz","firstName":"Alejandro","lastName":"Ortiz","username":"alejandroortiz","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/464978v3_64391060-ddd6-11e6-aabd-af731cff2f24.jpeg","website":"http://co.linkedin.com/in/alejandronanez/","twitterHandle":"alejandronanez","totalDonations":1200,"firstDonation":"2017-01-18T23:32:05.649Z","lastDonation":"2017-06-19T00:33:01.304Z","tier":"backer"},{"id":3312,"createdAt":"2017-02-28T15:24:37.612Z","name":"Dani Llops","firstName":"Dani","lastName":"Llops","username":"danillops","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/bc2c3f98-e2cc-4ae9-a3e6-99129d8bd928","website":"https://twitter.com/llops","twitterHandle":"llops","totalDonations":1200,"firstDonation":"2017-02-28T15:24:37.589Z","lastDonation":"2017-02-28T15:24:37.589Z","tier":"backer"},{"id":3357,"createdAt":"2017-03-03T06:08:19.836Z","name":"Jorge Cuadra","firstName":"Jorge","lastName":"Cuadra","username":"jorgecuadrafueyo","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/becc8f60-239f-4aa7-90ae-fda8a94b6ee4","website":"https://twitter.com/Cuadraman","twitterHandle":"Cuadraman","totalDonations":1200,"firstDonation":"2017-03-03T06:08:18.748Z","lastDonation":"2017-08-01T07:09:19.834Z","tier":"backer"},{"id":3474,"createdAt":"2017-03-11T17:37:50.522Z","name":"Spenser Isdahl","firstName":"Spenser","lastName":"Isdahl","username":"scisdahl","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/5f2fd5c1-dca6-4669-ba60-5a4f932ed0d7","website":null,"twitterHandle":null,"totalDonations":1200,"firstDonation":"2017-03-11T17:37:49.351Z","lastDonation":"2017-08-01T19:17:26.468Z","tier":"backer"},{"id":3574,"createdAt":"2017-03-17T07:15:57.890Z","name":"Yinan Fang","firstName":"Yinan","lastName":"Fang","username":"yinanfang","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a8790982-e3b3-4414-8b9a-a740fc7167c2","website":"https://www.linkedin.com/in/yinanfang","twitterHandle":null,"totalDonations":1200,"firstDonation":"2017-03-17T07:15:56.598Z","lastDonation":"2017-08-01T08:17:19.596Z","tier":"backer"},{"id":3594,"createdAt":"2017-03-19T09:23:04.607Z","name":"zhaojun ","firstName":"zhaojun","lastName":"","username":"zhaojunbest","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/175273c0-0c86-11e7-b764-c364776525bd.jpeg","website":null,"twitterHandle":null,"totalDonations":1200,"firstDonation":"2017-03-19T09:23:03.372Z","lastDonation":"2017-08-01T10:24:10.041Z","tier":"backer"},{"id":1499,"createdAt":"2016-10-15T21:02:15.324Z","name":"Henry Zhu","firstName":"Henry","lastName":"Zhu","username":"left_pad","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6lc7Xqg_normaljpeg_3dffd740-b698-11e6-8f29-915c263c0347.jpeg","website":"https://github.com/hzoo","twitterHandle":"left_pad","totalDonations":1121,"firstDonation":"2016-10-15T21:02:15.014Z","lastDonation":"2016-10-15T21:02:15.014Z","tier":"backer"},{"id":1508,"createdAt":"2016-10-16T08:23:23.965Z","name":"Maarten Tibau","firstName":"Maarten","lastName":"Tibau","username":"maarten","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/118faaa0-937a-11e6-959d-07ed50026d25.jpg","website":null,"twitterHandle":null,"totalDonations":1000,"firstDonation":"2016-10-16T08:23:32.617Z","lastDonation":"2016-11-16T09:23:47.838Z","tier":"backer"},{"id":1620,"createdAt":"2016-10-24T16:49:34.375Z","name":"Mario Estrada","firstName":"Mario","lastName":"Estrada","username":"marioestrada","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/02360754bbdc4a95afe0da52b066b131_e8ab4360-9a09-11e6-8650-f92e594d5de8.png","website":"http://mario.ec","twitterHandle":"marioeg","totalDonations":1000,"firstDonation":"2016-10-24T16:49:34.037Z","lastDonation":"2016-10-24T16:49:34.037Z","tier":"backer"},{"id":2070,"createdAt":"2016-12-05T04:38:29.841Z","name":"Perry Poon","firstName":"Perry","lastName":"Poon","username":"perrypoon","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/775dbd7dac5c46459b03f07d7f9d2140_b7e24100-baa4-11e6-8069-291b31ef64e4.png","website":null,"twitterHandle":"plrthink","totalDonations":1000,"firstDonation":"2016-12-05T04:38:29.590Z","lastDonation":"2016-12-05T04:38:29.590Z","tier":"backer"},{"id":2530,"createdAt":"2017-01-13T00:20:06.234Z","name":"Jian Wei Gan","firstName":"Jian","lastName":"Wei Gan","username":"ganjianwei","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/ec86aa44f83945b9aee79e43039ca701_2f5e6980-d926-11e6-a067-e7ec9446c5c0.jpeg","website":"https://www.linkedin.com/in/jianweigan","twitterHandle":"ganjianwei","totalDonations":1000,"firstDonation":"2017-01-13T00:20:05.840Z","lastDonation":"2017-01-13T00:20:05.840Z","tier":"backer"},{"id":2867,"createdAt":"2017-01-31T12:15:15.138Z","name":"Jose Quintana","firstName":"Jose","lastName":"Quintana","username":"joseluis_q","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/27ad234ceab64f74a4a6d63a5d4045f4_4f77f980-e7ad-11e6-a144-11f91f1d6b81.jpeg","website":"https://quintana.io","twitterHandle":"joseluis_q","totalDonations":1000,"firstDonation":"2017-01-31T12:15:13.634Z","lastDonation":"2017-02-01T13:17:15.295Z","tier":"backer"},{"id":3003,"createdAt":"2017-02-06T15:54:19.345Z","name":"Sebastian De Deyne","firstName":"Sebastian","lastName":"De Deyne","username":"sebastiandedeyne","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a47cdefa5da34f79b1012cac566df4f1_2d0a15e0-ec85-11e6-8ce5-e70fa4913511.jpeg","website":"https://sebastiandedeyne.com","twitterHandle":"sebdedeyne","totalDonations":1000,"firstDonation":"2017-02-06T15:54:17.506Z","lastDonation":"2017-06-01T16:56:21.022Z","tier":"backer"},{"id":3009,"createdAt":"2017-02-06T19:42:56.882Z","name":"Matt Clarke","firstName":"Matt","lastName":"Clarke","username":"mattclarke","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b3ea55767b444e548f5aa1414b101cb6_c50ca230-eca4-11e6-8ce5-e70fa4913511.png","website":null,"twitterHandle":"clarkeyio","totalDonations":1000,"firstDonation":"2017-02-06T19:42:54.044Z","lastDonation":"2017-03-01T20:46:23.975Z","tier":"backer"},{"id":3107,"createdAt":"2017-02-14T03:13:24.335Z","name":"Julian Modesto","firstName":"Julian","lastName":"Modesto","username":"julianvmodesto","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/54baa120-f263-11e6-bfee-a50bdd128e09.jpg","website":"https://twitter.com/JulianVModesto","twitterHandle":"JulianVModesto","totalDonations":1000,"firstDonation":"2017-02-14T03:13:21.832Z","lastDonation":"2017-02-14T03:13:21.832Z","tier":"backer"},{"id":3208,"createdAt":"2017-02-21T17:46:21.923Z","name":"Joan Llenas","firstName":"Joan","lastName":"Llenas","username":"joanllenasmaso","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d416d3c6dc72423eb78091411ea600ac_fc33b7c0-05a5-11e7-9830-7d50753fd1be.png","website":"http://www.joanllenas.com","twitterHandle":"joanllenas","totalDonations":1000,"firstDonation":"2017-02-21T17:46:20.852Z","lastDonation":"2017-06-01T18:48:15.786Z","tier":"backer"},{"id":3221,"createdAt":"2017-02-22T00:36:49.620Z","name":"Jason Kelly","firstName":"Jason","lastName":"Kelly","username":"jasonkelly6","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/12b50c7b-bfab-4ac1-84e2-6ea74a664b80","website":null,"twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-02-22T00:36:49.494Z","lastDonation":"2017-02-22T00:36:49.494Z","tier":"backer"},{"id":3294,"createdAt":"2017-02-27T16:57:17.941Z","name":"Eric Stumper","firstName":"Eric","lastName":"Stumper","username":"ericstumper","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/478da573-9826-47aa-a435-03991481e5b9","website":"https://twitter.com/ericstumper","twitterHandle":"ericstumper","totalDonations":1000,"firstDonation":"2017-02-27T16:57:16.859Z","lastDonation":"2017-06-01T17:57:55.893Z","tier":"backer"},{"id":3330,"createdAt":"2017-03-02T07:33:05.047Z","name":"Snow Liang","firstName":"Snow","lastName":"Liang","username":"coderliang","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2e932af0-ff1d-11e6-9a68-a5d40d163544.jpg","website":"https://twitter.com/ohcoder","twitterHandle":"ohcoder","totalDonations":1000,"firstDonation":"2017-03-02T07:33:05.026Z","lastDonation":"2017-03-02T07:33:05.026Z","tier":"backer"},{"id":3440,"createdAt":"2017-03-09T14:49:44.735Z","name":"Michal Hantl","firstName":"Michal","lastName":"Hantl","username":"michalhantl","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/114a0a77-0262-4514-8cd5-d2b8f48f3792","website":"https://twitter.com/michal_hantl","twitterHandle":"michal_hantl","totalDonations":1000,"firstDonation":"2017-03-09T14:49:44.684Z","lastDonation":"2017-03-09T14:49:44.684Z","tier":"backer"},{"id":3548,"createdAt":"2017-03-15T18:13:38.859Z","name":"Pat Khunachak","firstName":"Pat","lastName":"Khunachak","username":"panutat","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/589163c112d6479390e769b46867acea_7ac97490-09ab-11e7-8c5f-45893f9aa131.png","website":"https://twitter.com/panutat","twitterHandle":"panutat","totalDonations":1000,"firstDonation":"2017-03-15T18:13:37.834Z","lastDonation":"2017-03-15T18:13:37.834Z","tier":"backer"},{"id":3639,"createdAt":"2017-03-22T10:36:14.205Z","name":"Georgio Wan","firstName":"Georgio","lastName":"Wan","username":"georgiowan","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d9bd5056eb5f4a97b6913a24719e1448_b5d35980-0eeb-11e7-9809-cb4ffda6ac1a.png","website":"https://oawan.me","twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-03-22T10:36:14.161Z","lastDonation":"2017-03-22T10:36:14.161Z","tier":"backer"},{"id":2327,"createdAt":"2017-04-02T16:21:06.955Z","name":"Gavin Mogan","firstName":"Gavin","lastName":"Mogan","username":"gavinmogan","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/uQiEdvYx_normaljpg_6e91d460-17c0-11e7-a2ff-df948e4c489f.jpeg","website":"https://www.gavinmogan.com","twitterHandle":"halkeye","totalDonations":1000,"firstDonation":"2017-04-02T16:21:05.791Z","lastDonation":"2017-08-01T17:40:41.220Z","tier":"backer"},{"id":3979,"createdAt":"2017-04-04T02:36:07.495Z","name":"Matthew Welke","firstName":"Matthew","lastName":"Welke","username":"mattwelke","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/94718a3d-8604-4e21-bf11-a1a4d622beeb","website":"http:welkie.github.io","twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-04-04T02:36:06.111Z","lastDonation":"2017-08-01T04:39:53.710Z","tier":"backer"},{"id":3984,"createdAt":"2017-04-04T09:20:04.900Z","name":"Andrey Koperskiy","firstName":"Andrey","lastName":"Koperskiy","username":"webpack2","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/763b83c0-191c-11e7-943b-fb6a25f99f9a.jpg","website":"https://github.com/teux/","twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-04-04T09:20:03.664Z","lastDonation":"2017-08-01T10:21:03.405Z","tier":"backer"},{"id":3871,"createdAt":"2017-04-04T16:20:54.511Z","name":"Daniel Tschinder","firstName":"Daniel","lastName":"Tschinder","username":"danez","role":"BACKER","avatar":"https://avatars.githubusercontent.com/danez","website":null,"twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-04-04T16:20:52.310Z","lastDonation":"2017-05-01T17:22:27.261Z","tier":"backer"},{"id":4158,"createdAt":"2017-04-11T04:42:51.311Z","name":"Renato Alves","firstName":"Renato","lastName":"Alves","username":"renatodex","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/d86e3591-0d5b-4504-b5dc-5378a90d148f","website":"http://basico.com","twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-04-11T04:42:49.258Z","lastDonation":"2017-08-01T05:45:36.498Z","tier":"backer"},{"id":5668,"createdAt":"2017-06-27T13:45:46.632Z","name":"Krzysztof Matysiak","firstName":"Krzysztof","lastName":"Matysiak","username":"zangrafx","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/010d5317-e16a-4f0b-926b-da4ccfee4c24","website":null,"twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-06-27T13:45:45.146Z","lastDonation":"2017-07-01T14:48:01.346Z","tier":"backer"},{"id":5680,"createdAt":"2017-06-27T19:09:40.308Z","name":"Matias Arellano","firstName":"Matias","lastName":"Arellano","username":"matiasfh","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/53b4f676-c5cc-49dc-93b5-cdb8cc56310c","website":"https://twitter.com/msdark","twitterHandle":"msdark","totalDonations":1000,"firstDonation":"2017-06-27T19:09:38.972Z","lastDonation":"2017-07-01T20:10:50.375Z","tier":"backer"},{"id":5949,"createdAt":"2017-07-09T12:49:50.528Z","name":"Rene Herrmann","firstName":"Rene","lastName":"Herrmann","username":"rene","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/312705_10150505779703219_618493218_11349728_293234975_n_normaljpg_3a046f00-64a5-11e7-adb0-73a30a73e1e7.jpeg","website":null,"twitterHandle":"Herrmannplatz","totalDonations":1000,"firstDonation":"2017-07-09T12:49:50.494Z","lastDonation":"2017-07-09T12:49:50.494Z","tier":"backer"},{"id":6009,"createdAt":"2017-07-12T01:16:28.378Z","name":"안희종","firstName":"안희종","lastName":null,"username":"heejongahn","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/8e752101-9f83-4312-869a-0c48b0901060","website":"http://ahnheejong.name","twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-07-12T01:16:28.338Z","lastDonation":"2017-07-12T01:16:28.338Z","tier":"backer"},{"id":6152,"createdAt":"2017-07-19T14:54:55.843Z","name":"Sam Julien","firstName":"Sam","lastName":"Julien","username":"spjulien","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/f5c828f5-7317-47d2-8de5-b13c96e9b021","website":null,"twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-07-19T14:54:54.802Z","lastDonation":"2017-08-01T15:56:28.532Z","tier":"backer"},{"id":6185,"createdAt":"2017-07-21T11:02:45.027Z","name":"Michiel Westerbeek","firstName":"Michiel","lastName":"Westerbeek","username":"happylinks","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/286cc3fe-ef83-4575-96a8-64902e317d0c","website":"http://www.bynder.com","twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-07-21T11:02:44.058Z","lastDonation":"2017-08-01T12:03:54.609Z","tier":"backer"},{"id":6229,"createdAt":"2017-07-24T15:23:56.699Z","name":"Ross Kaffenberger","firstName":"Ross","lastName":"Kaffenberger","username":"rosskaff","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/0339c61a-b1a2-462d-b72c-ff6fd12e175c","website":"https://twitter.com/rossta","twitterHandle":"rossta","totalDonations":1000,"firstDonation":"2017-07-24T15:23:55.410Z","lastDonation":"2017-08-01T16:26:08.545Z","tier":"backer"},{"id":3935,"createdAt":"2017-08-15T07:48:46.247Z","name":"Pedro Buendía","firstName":"Pedro","lastName":"Buendía","username":"pepibumur","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/287ba0a0-b31c-4a36-9516-c4ffe47e7e55","website":"https://twitter.com/pepibumur","twitterHandle":"pepibumur","totalDonations":1000,"firstDonation":"2017-08-15T07:48:45.034Z","lastDonation":"2017-08-15T07:48:45.034Z","tier":"backer"},{"id":4889,"createdAt":"2017-08-15T09:21:16.987Z","name":"Knovour Zheng","firstName":"Knovour","lastName":"Zheng","username":"knovour","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/8a8aa915-ed37-4c8e-9132-b92ff77f2792","website":null,"twitterHandle":null,"totalDonations":1000,"firstDonation":"2017-08-15T09:21:15.765Z","lastDonation":"2017-08-15T09:21:15.765Z","tier":"backer"},{"id":1868,"createdAt":"2016-11-24T13:05:44.511Z","name":"Moritz Mahringer","firstName":"Moritz","lastName":"Mahringer","username":"me7","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e5d00950-b246-11e6-b509-cb2d79f59262.JPG","website":"https://moritzmahringer.de","twitterHandle":"mormahr","totalDonations":900,"firstDonation":"2016-11-24T13:05:49.652Z","lastDonation":"2017-07-24T14:07:26.200Z","tier":"backer"},{"id":5548,"createdAt":"2017-06-22T15:57:48.733Z","name":"Hugo Freitas","firstName":"Hugo","lastName":"Freitas","username":"hugufc","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/08927922831f4cc38e8da32fe26d7083_92f28780-5769-11e7-9949-3d27887721e6.png","website":"https://github.com/hugufc","twitterHandle":"hugufc","totalDonations":900,"firstDonation":"2017-06-22T15:57:47.632Z","lastDonation":"2017-08-01T17:01:11.236Z","tier":"backer"},{"id":1507,"createdAt":"2016-10-16T06:29:11.578Z","name":"Luke Page","firstName":"Luke","lastName":"Page","username":"lukepage","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f3dde003e1e549648aa83baed5828f28_f6f30670-9369-11e6-959d-07ed50026d25.png","website":null,"twitterHandle":null,"totalDonations":800,"firstDonation":"2016-10-16T06:29:19.330Z","lastDonation":"2017-01-16T07:31:04.765Z","tier":"backer"},{"id":1532,"createdAt":"2016-10-18T14:07:33.755Z","name":"Mircea Dinoiu","firstName":"Mircea","lastName":"Dinoiu","username":"mirceadinoiu","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e76c14a921674b46bb38add0903e2bca_45110ae0-953c-11e6-add0-93faa9a7296f.png","website":"http://dinoiu.com","twitterHandle":"https://twitter.com/mircea_dinoiu","totalDonations":800,"firstDonation":"2016-10-18T14:07:40.326Z","lastDonation":"2017-01-18T15:09:04.441Z","tier":"backer"},{"id":1563,"createdAt":"2016-10-20T18:00:37.341Z","name":"Emmanuel Vuigner","firstName":"Emmanuel","lastName":"Vuigner","username":"maiis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/23975v3_248adfd0-96ef-11e6-baa3-69f47ab52eed.jpeg","website":"http://maiis.me","twitterHandle":"maiis","totalDonations":800,"firstDonation":"2016-10-20T18:00:44.361Z","lastDonation":"2017-01-20T19:00:55.229Z","tier":"backer"},{"id":1600,"createdAt":"2016-10-24T11:07:05.212Z","name":"Vincent Voyer","firstName":"Vincent","lastName":"Voyer","username":"vvoyer","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/58b85b2b37b6423ca43d1a2e653cf744_18958070-99da-11e6-8650-f92e594d5de8.jpeg","website":"https://github.com/vvo","twitterHandle":"vvoyer","totalDonations":800,"firstDonation":"2016-10-24T11:07:12.153Z","lastDonation":"2017-01-24T12:08:20.733Z","tier":"backer"},{"id":2245,"createdAt":"2016-12-21T03:55:11.209Z","name":"Sergio Xalambrí","firstName":"Sergio","lastName":"Xalambrí","username":"sergiodxa","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1312018v3_685a6ba0-c731-11e6-973f-31eca31cf144.jpeg","website":"http://sergio.xalambri.xyz/","twitterHandle":"sergiodxa","totalDonations":800,"firstDonation":"2016-12-21T03:55:16.591Z","lastDonation":"2017-03-24T04:57:09.592Z","tier":"backer"},{"id":2594,"createdAt":"2017-01-18T13:51:46.577Z","name":"Tamouse Temple","firstName":"Tamouse","lastName":"Temple","username":"tamouse1","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8e79f1498f3e4a4ab53bec89d5dfc1e5_43f16060-dd85-11e6-bf52-5b99c6274a65.jpeg","website":"http://www.tamouse.org","twitterHandle":"tamouse","totalDonations":800,"firstDonation":"2017-01-18T13:51:57.819Z","lastDonation":"2017-08-18T14:52:16.025Z","tier":"backer"},{"id":2637,"createdAt":"2017-01-19T22:41:04.589Z","name":"Matthew Erker","firstName":"Matthew","lastName":"Erker","username":"matthewerker","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2576a966c0464a8b850d72df31ac1532_6432e0b0-de98-11e6-9342-6da0a3e42d81.png","website":null,"twitterHandle":null,"totalDonations":800,"firstDonation":"2017-01-19T22:41:12.739Z","lastDonation":"2017-02-19T23:42:45.127Z","tier":"backer"},{"id":2697,"createdAt":"2017-03-02T18:48:16.001Z","name":"Alexander Kaiser","firstName":"Alexander","lastName":"Kaiser","username":"elexd3v","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f02e9cc0-e187-11e6-a815-370fd440a75b.jpg","website":"https://github.com/elexdev","twitterHandle":"radiobasler","totalDonations":800,"firstDonation":"2017-03-02T18:48:14.761Z","lastDonation":"2017-06-01T19:49:33.847Z","tier":"backer"},{"id":3783,"createdAt":"2017-03-28T20:03:51.925Z","name":"Patrick Collison","firstName":"Patrick","lastName":"Collison","username":"patrick","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/46bc4091-dcee-49ef-9dcb-36e3007145a1","website":"https://twitter.com/patrickc","twitterHandle":"patrickc","totalDonations":800,"firstDonation":"2017-03-28T20:03:50.806Z","lastDonation":"2017-06-01T21:04:57.265Z","tier":"backer"},{"id":4515,"createdAt":"2017-04-29T18:08:28.314Z","name":"Sara Vieira","firstName":"Sara","lastName":"Vieira","username":"saravieira","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e11e0c3c3caa418a9c05cdeeaca1db59_33aa6f90-8513-11e7-be1f-cd8a0a9aac9d.jpeg","website":"https://twitter.com/NikkitaFTW","twitterHandle":"NikkitaFTW","totalDonations":800,"firstDonation":"2017-04-29T18:08:27.329Z","lastDonation":"2017-08-01T19:41:03.866Z","tier":"backer"},{"id":4883,"createdAt":"2017-05-18T08:36:50.093Z","name":"Ivan Zusko","firstName":"Ivan","lastName":"Zusko","username":"ivanzusko","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/409f9d5d-1f0b-43ce-b157-af34b570ce0e","website":null,"twitterHandle":null,"totalDonations":800,"firstDonation":"2017-05-18T08:36:48.532Z","lastDonation":"2017-08-01T09:37:33.122Z","tier":"backer"},{"id":3557,"createdAt":"2017-05-20T19:53:40.593Z","name":"Luka Maljić","firstName":"Luka","lastName":"Maljić","username":"lukamaljic","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a8051471-5e3f-4783-b151-18747e440294","website":null,"twitterHandle":null,"totalDonations":800,"firstDonation":"2017-05-20T19:53:39.666Z","lastDonation":"2017-08-01T20:54:45.690Z","tier":"backer"},{"id":3544,"createdAt":"2017-05-25T17:30:47.246Z","name":"Andrey Knupp Vital","firstName":"Andrey","lastName":"Knupp Vital","username":"andreykvital","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2f3aacbc80ed40adb1f13db22b7a6483_9c619b00-099c-11e7-bf40-c3f1e55a14c0.png","website":"https://centaurwarchief.com","twitterHandle":null,"totalDonations":800,"firstDonation":"2017-05-25T17:30:46.310Z","lastDonation":"2017-08-01T19:02:03.379Z","tier":"backer"},{"id":5029,"createdAt":"2017-05-26T10:11:58.303Z","name":"Alon David","firstName":"Alon","lastName":"David","username":"me6","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/8e2dbf2b-dc0d-4557-b99a-91ddaf7c8812","website":"https://www.alonbd.com","twitterHandle":null,"totalDonations":800,"firstDonation":"2017-05-26T10:11:56.759Z","lastDonation":"2017-08-01T11:12:29.410Z","tier":"backer"},{"id":5075,"createdAt":"2017-05-28T20:34:55.454Z","name":"Restuta ","firstName":"Restuta","lastName":"","username":"restuta","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b4e77892c9fc41a887a328d649a929b5_4ab001b0-43e5-11e7-aa87-7f23a3def1e1.jpeg","website":"https://twitter.com/Restuta","twitterHandle":"Restuta","totalDonations":800,"firstDonation":"2017-05-28T20:34:54.094Z","lastDonation":"2017-08-01T21:37:19.625Z","tier":"backer"},{"id":1721,"createdAt":"2016-11-02T08:45:23.339Z","name":"Vsevolod Okhrin","firstName":"Vsevolod","lastName":"Okhrin","username":"vsevolodokhrin","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/aa1b4f0985fe4596b333c6600bcd2580_43574900-a0d9-11e6-ba30-f10557c4c678.png","website":null,"twitterHandle":null,"totalDonations":600,"firstDonation":"2016-11-02T08:45:26.359Z","lastDonation":"2017-01-02T09:45:46.902Z","tier":"backer"},{"id":2,"createdAt":"2016-11-29T18:35:21.790Z","name":"Xavier Damman","firstName":"Xavier","lastName":"Damman","username":"xdamman","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5c825534ad62223ae6a539f6a5076d3cjpeg_1699f6e0-917c-11e6-a567-3f53b7b5f95c.jpeg","website":"http://xdamman.com","twitterHandle":"xdamman","totalDonations":600,"firstDonation":"2016-11-29T18:35:30.019Z","lastDonation":"2017-01-29T19:36:09.188Z","tier":"backer"},{"id":4204,"createdAt":"2017-04-13T16:43:08.233Z","name":"Tadeja Firman","firstName":"Tadeja","lastName":"Firman","username":"tadejafirman","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/2b0edfc5-b9f2-4c70-b825-0efda86d7280","website":null,"twitterHandle":null,"totalDonations":600,"firstDonation":"2017-04-13T16:43:06.819Z","lastDonation":"2017-06-01T17:45:30.270Z","tier":"backer"},{"id":4212,"createdAt":"2017-04-14T07:50:10.032Z","name":"Peace Ngara","firstName":"Peace","lastName":"Ngara","username":"peacengara","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/1a5134c6-363e-483a-88fe-86d240ac3011","website":"http:www.annabellpro.com","twitterHandle":null,"totalDonations":600,"firstDonation":"2017-04-14T07:50:09.040Z","lastDonation":"2017-06-01T08:50:38.396Z","tier":"backer"},{"id":5231,"createdAt":"2017-06-06T16:46:46.059Z","name":"Jiyin Yiyong","firstName":"Jiyin","lastName":"Yiyong","username":"jiyinyiyong","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/ba3987e5-9e34-4a47-8268-de08153fd19b","website":"https://twitter.com/jiyinyiyong","twitterHandle":"jiyinyiyong","totalDonations":600,"firstDonation":"2017-06-06T16:46:44.594Z","lastDonation":"2017-08-01T18:15:45.190Z","tier":"backer"},{"id":5278,"createdAt":"2017-06-08T00:51:58.757Z","name":"加藤賢太","firstName":"加藤賢太","lastName":null,"username":"kkencom","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/76aa6992-9fb1-4eef-8098-fb10fc4572a5","website":"http://kken.io/blog","twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-08T00:51:57.413Z","lastDonation":"2017-08-01T03:50:43.715Z","tier":"backer"},{"id":5411,"createdAt":"2017-06-15T20:05:46.075Z","name":"omar mashaal","firstName":"omar","lastName":"mashaal","username":"mashaal","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2575a23cc5314577ae7fa9f7b7b358c2_6734bb80-5206-11e7-b3d4-29c418e4f7c9.png","website":"http://teacups.io","twitterHandle":"maaashaal","totalDonations":600,"firstDonation":"2017-06-15T20:05:44.557Z","lastDonation":"2017-08-01T21:07:14.345Z","tier":"backer"},{"id":5556,"createdAt":"2017-06-23T07:27:13.459Z","name":"Dmitry Kabak","firstName":"Dmitry","lastName":"Kabak","username":"userdima","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/684ac484-37b5-4a90-abfa-aa7c5b7df12c","website":"https://kabbi.github.io/","twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-23T07:27:12.178Z","lastDonation":"2017-08-01T08:28:24.564Z","tier":"backer"},{"id":5591,"createdAt":"2017-06-25T10:05:41.458Z","name":"Christian Kaltepoth","firstName":"Christian","lastName":"Kaltepoth","username":"chkal","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2acf0329ceab4469a58222b8453cadd0_bf7d6ff0-5989-11e7-a562-db7b389ec293.png","website":"http://blog.kaltepoth.de/","twitterHandle":"chkal","totalDonations":600,"firstDonation":"2017-06-25T10:05:39.612Z","lastDonation":"2017-08-01T11:07:30.321Z","tier":"backer"},{"id":5629,"createdAt":"2017-06-26T18:50:48.795Z","name":"Ronald ChanOu","firstName":"Ronald","lastName":"ChanOu","username":"rchanou","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/fca7e118-edfc-4798-9a70-de9a8b93a5aa","website":null,"twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-26T18:50:47.610Z","lastDonation":"2017-08-01T19:51:56.981Z","tier":"backer"},{"id":5632,"createdAt":"2017-06-26T19:31:53.213Z","name":"Joe Palladino","firstName":"Joe","lastName":"Palladino","username":"mindfulgeek","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/042289bc-331b-45ae-a199-5bf2a1aab4a3","website":"https://twitter.com/Mindfulgeek","twitterHandle":"Mindfulgeek","totalDonations":600,"firstDonation":"2017-06-26T19:31:51.270Z","lastDonation":"2017-08-01T20:33:28.627Z","tier":"backer"},{"id":5637,"createdAt":"2017-06-26T21:11:04.182Z","name":"Viktor Hubert","firstName":"Viktor","lastName":"Hubert","username":"rpgmorpheus","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/416e1efa-0d72-4182-9bbf-5a48f57016b1","website":"http://hubertviktor.com","twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-26T21:11:03.140Z","lastDonation":"2017-08-01T22:13:41.342Z","tier":"backer"},{"id":3514,"createdAt":"2017-06-26T21:57:34.893Z","name":"Alexey Raspopov","firstName":"Alexey","lastName":"Raspopov","username":"alexeyraspopov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9332be90-5abb-11e7-9ef0-6343e38e2883.png","website":null,"twitterHandle":"alexeyraspopov","totalDonations":600,"firstDonation":"2017-06-26T21:57:32.638Z","lastDonation":"2017-08-01T23:00:45.605Z","tier":"backer"},{"id":5641,"createdAt":"2017-06-26T22:41:24.911Z","name":"александр темный","firstName":"александр","lastName":"темный","username":"stgeass","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/7a59432f-cbeb-46f7-ad6b-45a720fe4a26","website":null,"twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-26T22:41:23.189Z","lastDonation":"2017-08-01T23:43:23.454Z","tier":"backer"},{"id":5647,"createdAt":"2017-06-27T00:50:47.264Z","name":"Ivan Lagunovsky","firstName":"Ivan","lastName":"Lagunovsky","username":"ivan1","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d3ca4510-5ad2-11e7-9ef0-6343e38e2883.jpg","website":null,"twitterHandle":"lagun4ik","totalDonations":600,"firstDonation":"2017-06-27T00:50:45.989Z","lastDonation":"2017-08-01T02:43:41.273Z","tier":"backer"},{"id":1596,"createdAt":"2017-06-27T00:54:43.720Z","name":"Andrew Rota","firstName":"Andrew","lastName":"Rota","username":"andrewrota","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9d49f4a608c14193bd954892efa50b54_ca9c0d80-99d4-11e6-8650-f92e594d5de8.jpeg","website":"https://twitter.com/andrewrota","twitterHandle":"AndrewRota","totalDonations":600,"firstDonation":"2017-06-27T00:54:42.688Z","lastDonation":"2017-08-01T03:49:55.388Z","tier":"backer"},{"id":5658,"createdAt":"2017-06-27T05:57:28.558Z","name":"Restrry Mike","firstName":"Restrry","lastName":"Mike","username":"restrry","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/7365aa9b-3fa2-43f9-aa99-4e82ada76032","website":null,"twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-27T05:57:27.333Z","lastDonation":"2017-08-01T06:58:52.501Z","tier":"backer"},{"id":5664,"createdAt":"2017-06-27T10:26:59.831Z","name":"Philipp Andreychev","firstName":"Philipp","lastName":"Andreychev","username":"andreychev","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/8311fcfc738a4bb68b61553451dfc76e_c51eb870-5b22-11e7-849c-b5d0dd7eeffe.png","website":"https://twitter.com/andreychev","twitterHandle":"andreychev","totalDonations":600,"firstDonation":"2017-06-27T10:26:58.703Z","lastDonation":"2017-08-01T11:27:38.149Z","tier":"backer"},{"id":5677,"createdAt":"2017-06-27T17:08:59.714Z","name":"Alexander Kozhevin","firstName":"Alexander","lastName":"Kozhevin","username":"hey1","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6615b660-5b5b-11e7-849c-b5d0dd7eeffe.jpeg","website":"https://www.codementor.io/alexander-k","twitterHandle":"https://twitter.com/alexpolymath","totalDonations":600,"firstDonation":"2017-06-27T17:08:58.285Z","lastDonation":"2017-08-01T19:02:18.366Z","tier":"backer"},{"id":5728,"createdAt":"2017-06-29T18:28:35.965Z","name":"Benjamin Geese","firstName":"Benjamin","lastName":"Geese","username":"benimnetz","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/5c4da39f-c107-4aef-b170-7984c25b41e7","website":null,"twitterHandle":null,"totalDonations":600,"firstDonation":"2017-06-29T18:28:34.977Z","lastDonation":"2017-08-01T19:40:47.905Z","tier":"backer"},{"id":5746,"createdAt":"2017-06-30T13:37:48.024Z","name":"Pedro Luz","firstName":"Pedro","lastName":"Luz","username":"pedromsluz","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a268d5e4-338b-46b1-a616-8de18e6050ec","website":"https://twitter.com/narven","twitterHandle":"narven","totalDonations":600,"firstDonation":"2017-06-30T13:37:46.604Z","lastDonation":"2017-08-01T14:40:03.517Z","tier":"backer"},{"id":5750,"createdAt":"2017-06-30T17:02:17.962Z","name":"Valentin Agachi","firstName":"Valentin","lastName":"Agachi","username":"avaly","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9Vzj58BH_normaljpg_fe66c060-5db5-11e7-8c19-f7ede0f9bd17.jpeg","website":"http://agachi.name/","twitterHandle":"avaly","totalDonations":600,"firstDonation":"2017-06-30T17:02:16.909Z","lastDonation":"2017-08-01T19:03:03.923Z","tier":"backer"},{"id":1607,"createdAt":"2016-10-24T12:58:57.183Z","name":"Anri Asaturov","firstName":"Anri","lastName":"Asaturov","username":"anriasaturov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/d79c3b57d9364fb3a4c3b7d54bd2ce54_a5ff23d0-99e9-11e6-8650-f92e594d5de8.png","website":null,"twitterHandle":null,"totalDonations":500,"firstDonation":"2016-10-24T12:59:03.779Z","lastDonation":"2016-10-24T12:59:03.779Z","tier":"backer"},{"id":1624,"createdAt":"2016-10-24T19:25:45.445Z","name":"Dinakar Tumu","firstName":"Dinakar","lastName":"Tumu","username":"dinakartumu","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/3872554v3_c3cc0410-9a1f-11e6-8650-f92e594d5de8.jpeg","website":"http://tumudinakar.com/","twitterHandle":"dinakar91","totalDonations":500,"firstDonation":"2016-10-24T19:25:45.141Z","lastDonation":"2016-10-24T19:25:45.141Z","tier":"backer"},{"id":1669,"createdAt":"2016-11-01T14:54:03.897Z","name":"Andrey Kravtsov","firstName":"Andrey","lastName":"Kravtsov","username":"andreykravtsov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b5885beb0baa41b6b56d36c8b201ded7_2f1be8b0-a043-11e6-9a04-33babd8d876b.png","website":"https://raidendev.com","twitterHandle":"raidendev","totalDonations":500,"firstDonation":"2016-11-01T14:54:14.909Z","lastDonation":"2016-11-01T14:54:14.909Z","tier":"backer"},{"id":1845,"createdAt":"2016-11-22T15:17:26.326Z","name":"Michael Lebas","firstName":"Michael","lastName":"Lebas","username":"michaellebas","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f7cdc650-b0c6-11e6-8d75-191d15208aa9.jpg","website":"https://github.com/Heisendev","twitterHandle":"Heisendev","totalDonations":500,"firstDonation":"2016-11-22T15:17:36.006Z","lastDonation":"2016-11-22T15:17:36.006Z","tier":"backer"},{"id":1909,"createdAt":"2016-11-29T12:34:31.820Z","name":"Patrick Neschkudla","firstName":"Patrick","lastName":"Neschkudla","username":"patrickneschkudla","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e6183e3bacbb40e7a6f8ff8b8c86248d_4abdffb0-b630-11e6-9f3b-115a2450f71e.png","website":"http://neschkudla.at","twitterHandle":"flipace","totalDonations":500,"firstDonation":"2016-11-29T12:34:39.846Z","lastDonation":"2016-11-29T12:34:39.846Z","tier":"backer"},{"id":2025,"createdAt":"2016-12-22T20:39:19.416Z","name":"Nir Galon","firstName":"Nir","lastName":"Galon","username":"nirgalon","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/adb8862c-4ea4-4177-acfc-f00956c6c227","website":"http://www.nirgn.com","twitterHandle":null,"totalDonations":500,"firstDonation":"2016-12-22T20:39:28.267Z","lastDonation":"2017-04-22T21:40:32.363Z","tier":"backer"},{"id":2604,"createdAt":"2017-01-18T21:02:21.833Z","name":"Patrick Roza","firstName":"Patrick","lastName":"Roza","username":"proza","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7a8015e0-ddc1-11e6-aabd-af731cff2f24.png","website":"https://patrickroza.com","twitterHandle":"Patrick_Roza","totalDonations":500,"firstDonation":"2017-01-18T21:02:21.158Z","lastDonation":"2017-01-18T21:02:21.158Z","tier":"backer"},{"id":2645,"createdAt":"2017-01-20T12:26:30.336Z","name":"Tatsuya Nakano","firstName":"Tatsuya","lastName":"Nakano","username":"tatsuyanakano","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7228f42a231f49199b500e055c028f6e_ced97190-df0b-11e6-9342-6da0a3e42d81.jpeg","website":"https://github.com/howdy39","twitterHandle":"howdy39","totalDonations":500,"firstDonation":"2017-01-20T12:26:29.986Z","lastDonation":"2017-01-20T12:26:29.986Z","tier":"backer"},{"id":2694,"createdAt":"2017-01-23T04:32:34.322Z","name":"Christian Matsoukis","firstName":"Christian","lastName":"Matsoukis","username":"christianmatsoukis","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/78af1fd4-6818-433f-bfb2-67212cc3ffa2","website":null,"twitterHandle":null,"totalDonations":500,"firstDonation":"2017-01-23T04:33:14.950Z","lastDonation":"2017-01-23T04:33:14.950Z","tier":"backer"},{"id":3193,"createdAt":"2017-02-21T08:15:46.628Z","name":"Olivier Combe","firstName":"Olivier","lastName":"Combe","username":"oliviercombe","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/71f4a44b-8d04-4c0a-99af-555f7ba7d67e","website":null,"twitterHandle":null,"totalDonations":500,"firstDonation":"2017-02-21T08:15:46.455Z","lastDonation":"2017-02-21T08:15:46.455Z","tier":"backer"},{"id":3306,"createdAt":"2017-02-28T06:01:13.738Z","name":"Mohammad Umair Khan","firstName":"Mohammad","lastName":"Umair Khan","username":"mohammadumairk","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4fe61e313e194f028fe2e2836c529679_3f0059b0-fd99-11e6-a84f-63cc1c91abbd.jpeg","website":"https://twitter.com/mohukh","twitterHandle":"mohukh","totalDonations":500,"firstDonation":"2017-02-28T06:01:12.757Z","lastDonation":"2017-02-28T06:01:12.757Z","tier":"backer"},{"id":3399,"createdAt":"2017-03-06T14:50:41.094Z","name":"Maxim Procopenco","firstName":"Maxim","lastName":"Procopenco","username":"maximprocopenco","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/eb7b591b-c0e1-4683-b1b8-c719039a1134","website":null,"twitterHandle":null,"totalDonations":500,"firstDonation":"2017-03-06T14:50:40.079Z","lastDonation":"2017-03-06T14:50:40.079Z","tier":"backer"},{"id":2667,"createdAt":"2017-05-25T18:48:30.669Z","name":"Thomas Randolph","firstName":"Thomas","lastName":"Randolph","username":"thomasrandolph","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7ce73f1a5ff046d89d5897715909c64f_4cf78610-4187-11e7-b1a7-cfd05aa121a5.png","website":"http://www.thomasrandolph.info","twitterHandle":"rockerest","totalDonations":500,"firstDonation":"2017-05-25T18:48:29.553Z","lastDonation":"2017-05-25T18:48:29.553Z","tier":"backer"},{"id":5663,"createdAt":"2017-06-27T08:54:28.387Z","name":"Dmitry Matveev","firstName":"Dmitry","lastName":"Matveev","username":"dmitrymatveevnz","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/55d69802-0344-408c-b32d-795739bbbf63","website":null,"twitterHandle":null,"totalDonations":500,"firstDonation":"2017-06-27T08:54:27.238Z","lastDonation":"2017-07-01T09:55:12.982Z","tier":"backer"},{"id":5679,"createdAt":"2017-06-27T18:36:11.602Z","name":"Lorenzo Sicilia","firstName":"Lorenzo","lastName":"Sicilia","username":"lorenzosicilia","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/981caa6b-4f6b-4984-960b-7f215a9d4994","website":"https://twitter.com/aboutlo","twitterHandle":"aboutlo","totalDonations":500,"firstDonation":"2017-06-27T18:36:11.509Z","lastDonation":"2017-06-27T18:36:11.509Z","tier":"backer"},{"id":6383,"createdAt":"2017-08-02T15:03:21.574Z","name":"Reinier Kaper","firstName":"Reinier","lastName":"Kaper","username":"rpkaper","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/7cce6bce-4af2-4060-9ada-db5e30a31073","website":"https://twitter.com/TheDutchCoder","twitterHandle":"TheDutchCoder","totalDonations":500,"firstDonation":"2017-08-02T15:03:20.308Z","lastDonation":"2017-08-02T15:03:20.308Z","tier":"backer"},{"id":6397,"createdAt":"2017-08-03T03:36:33.281Z","name":"Malek Hakim","firstName":"Malek","lastName":"Hakim","username":"hakimelek","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/857aac90-77fd-11e7-8fb9-7bec616fccd5.jpg","website":"https://malekhakim.me","twitterHandle":null,"totalDonations":500,"firstDonation":"2017-08-03T03:36:31.727Z","lastDonation":"2017-08-03T03:36:31.727Z","tier":"backer"},{"id":6417,"createdAt":"2017-08-04T13:30:04.265Z","name":"Dan Grebb","firstName":"Dan","lastName":"Grebb","username":"dgrebb","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/06b7d81d-3a1a-4a2b-ad1e-7b09ad691082","website":"https://twitter.com/dgrebb","twitterHandle":"dgrebb","totalDonations":500,"firstDonation":"2017-08-04T13:30:03.126Z","lastDonation":"2017-08-04T13:30:03.126Z","tier":"backer"},{"id":6640,"createdAt":"2017-08-15T18:12:14.607Z","name":"Oliver ","firstName":"Oliver","lastName":"","username":"osiegemund","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4726b630-81e6-11e7-8818-830b7e8766e3.jpg","website":null,"twitterHandle":"in_ventose","totalDonations":500,"firstDonation":"2017-08-15T18:12:12.954Z","lastDonation":"2017-08-15T18:12:12.954Z","tier":"backer"},{"id":1597,"createdAt":"2016-10-24T10:29:56.212Z","name":"Nurlan Alekberov","firstName":"Nurlan","lastName":"Alekberov","username":"nalekberov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/m3WohGfjjpg_df9e9f90-99d4-11e6-8650-f92e594d5de8.jpeg","website":"http://nalekberov.tumblr.com","twitterHandle":"nalekberov","totalDonations":400,"firstDonation":"2016-10-24T10:30:08.344Z","lastDonation":"2016-11-24T11:30:06.232Z","tier":"backer"},{"id":4837,"createdAt":"2017-05-15T13:27:46.846Z","name":"Anas Barghoud","firstName":"Anas","lastName":"Barghoud","username":"abarghoud","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/d81691c7-cc12-4803-8c4d-393e03820fcd","website":null,"twitterHandle":null,"totalDonations":400,"firstDonation":"2017-05-15T13:27:45.759Z","lastDonation":"2017-06-01T14:28:50.414Z","tier":"backer"},{"id":5043,"createdAt":"2017-05-27T07:27:40.162Z","name":"Hongmin Qiao","firstName":"Hongmin","lastName":"Qiao","username":"ufoqhmdt","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/143beb40-ecf7-42a3-9fb3-d94dadead584","website":null,"twitterHandle":null,"totalDonations":400,"firstDonation":"2017-05-27T07:27:39.219Z","lastDonation":"2017-08-01T08:28:00.009Z","tier":"backer"},{"id":5907,"createdAt":"2017-07-07T09:49:45.786Z","name":"Longzheng Zhu","firstName":"Longzheng","lastName":"Zhu","username":"zhulongzheng","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/0f5eb02ab4764459a080257559c44c96_1ad8c790-62fa-11e7-abf8-2749b777eaa4.png","website":"http://2hu.me","twitterHandle":"https://twitter.com/2hu12","totalDonations":400,"firstDonation":"2017-07-07T09:49:44.489Z","lastDonation":"2017-08-01T10:49:56.656Z","tier":"backer"},{"id":5926,"createdAt":"2017-07-07T20:46:22.784Z","name":"Timothy Bula","firstName":"Timothy","lastName":"Bula","username":"timrbula","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/ef70959c-ea63-44fb-878b-ceef8b28a668","website":"https://twitter.com/timrbula","twitterHandle":"timrbula","totalDonations":400,"firstDonation":"2017-07-07T20:46:21.666Z","lastDonation":"2017-08-01T21:47:57.142Z","tier":"backer"},{"id":5958,"createdAt":"2017-07-10T03:51:14.631Z","name":"Ginhing Lee","firstName":"Ginhing","lastName":"Lee","username":"poke5464","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/33669f8b-6099-4950-9c6b-f2302dde6ce2","website":null,"twitterHandle":null,"totalDonations":400,"firstDonation":"2017-07-10T03:51:13.441Z","lastDonation":"2017-08-01T05:05:23.673Z","tier":"backer"},{"id":5974,"createdAt":"2017-07-10T23:09:52.043Z","name":"Jeremia Kimelman","firstName":"Jeremia","lastName":"Kimelman","username":"jbkimelman","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/a0cc916f-ab82-466c-aef3-70548ac306bb","website":"https://twitter.com/jeremiak","twitterHandle":"jeremiak","totalDonations":400,"firstDonation":"2017-07-10T23:09:50.215Z","lastDonation":"2017-08-02T00:11:47.656Z","tier":"backer"},{"id":6006,"createdAt":"2017-07-12T00:21:54.672Z","name":"Erik Fox","firstName":"Erik","lastName":"Fox","username":"eriktfox","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/f8e15eb2-0666-4494-8285-056e23420e25","website":"http://www.erikfox.co/","twitterHandle":null,"totalDonations":400,"firstDonation":"2017-07-12T00:21:53.655Z","lastDonation":"2017-08-01T03:51:20.824Z","tier":"backer"},{"id":6239,"createdAt":"2017-07-25T06:41:42.574Z","name":"Anton Alexandrenok","firstName":"Anton","lastName":"Alexandrenok","username":"antonalexandrenok","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f539b590-7103-11e7-905a-4fd37f9248ee.jpg","website":null,"twitterHandle":null,"totalDonations":400,"firstDonation":"2017-07-25T06:41:41.186Z","lastDonation":"2017-08-01T07:42:09.929Z","tier":"backer"},{"id":6306,"createdAt":"2017-07-30T07:36:28.975Z","name":"Jack Zhang","firstName":"Jack","lastName":"Zhang","username":"15jzhang","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/db36ed7b-87e6-4806-bde3-49f9e50c3d68","website":"http://jackrzhang.com","twitterHandle":null,"totalDonations":400,"firstDonation":"2017-07-30T07:36:27.229Z","lastDonation":"2017-08-01T08:36:50.879Z","tier":"backer"},{"id":6313,"createdAt":"2017-07-30T14:31:27.843Z","name":"Matt Dionis","firstName":"Matt","lastName":"Dionis","username":"mattdionis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/40a43a922f05478396f773a3dff8b32b_4f9455c0-7534-11e7-b54a-d1a42f634f5a.png","website":"https://medium.com/@mattdionis","twitterHandle":"mattdionis","totalDonations":400,"firstDonation":"2017-07-30T14:31:26.719Z","lastDonation":"2017-08-01T15:33:27.096Z","tier":"backer"},{"id":4043,"createdAt":"2017-04-06T06:32:43.616Z","name":"Soichiro Miki","firstName":"Soichiro","lastName":"Miki","username":"smiki-tky","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/cbb7e463-5d56-4b17-b75f-4a9bc1b1ba20","website":null,"twitterHandle":null,"totalDonations":300,"firstDonation":"2017-04-06T06:32:43.592Z","lastDonation":"2017-04-06T06:32:43.592Z","tier":"backer"},{"id":1610,"createdAt":"2016-10-24T13:33:50.771Z","name":"Kushal Pandya","firstName":"Kushal","lastName":"Pandya","username":"kushalpandya","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/43a1ed62388b464d940fd8bfadfd5d18_8a5ff730-99ee-11e6-8650-f92e594d5de8.png","website":"https://doublslash.com","twitterHandle":"Kushal_Pandya","totalDonations":200,"firstDonation":"2016-10-24T13:34:01.094Z","lastDonation":"2016-10-24T13:34:01.094Z","tier":"backer"},{"id":1646,"createdAt":"2016-10-27T16:54:19.823Z","name":"Nathan Walker","firstName":"Nathan","lastName":"Walker","username":"nathanwalker","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/477dd6d0638d4aa59c118e8632cc71fa_339f3d50-9c66-11e6-84fe-5d5e57220970.png","website":"https://www.infowrap.com/nathanwalker/notes","twitterHandle":"wwwalkerrun","totalDonations":200,"firstDonation":"2016-10-27T16:54:27.943Z","lastDonation":"2016-10-27T16:54:27.943Z","tier":"backer"},{"id":1672,"createdAt":"2016-11-01T16:09:49.500Z","name":"Niran Babalola","firstName":"Niran","lastName":"Babalola","username":"niran","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/62578bc93cd1410f920645fb25fac2a3_a30887b0-a04d-11e6-9a04-33babd8d876b.jpeg","website":"http://niran.org","twitterHandle":"niran","totalDonations":200,"firstDonation":"2016-11-01T16:10:06.582Z","lastDonation":"2016-11-01T16:10:06.582Z","tier":"backer"},{"id":1805,"createdAt":"2016-11-17T13:08:46.110Z","name":"Moritz Sattler","firstName":"Moritz","lastName":"Sattler","username":"moritzsattler","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/39167020-acc7-11e6-b911-057a8af5240e.jpg","website":null,"twitterHandle":null,"totalDonations":200,"firstDonation":"2016-11-17T13:08:53.784Z","lastDonation":"2016-11-17T13:08:53.784Z","tier":"backer"},{"id":2119,"createdAt":"2016-12-08T21:15:06.808Z","name":"Dana Woodman","firstName":"Dana","lastName":"Woodman","username":"danawoodman","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/danawoodmancom_7bada460-bd8b-11e6-9ca1-bb6c7a9a84e0.png","website":"http://danawoodman.com","twitterHandle":"DanaWoodman","totalDonations":200,"firstDonation":"2016-12-08T21:15:13.033Z","lastDonation":"2016-12-08T21:15:13.033Z","tier":"backer"},{"id":2565,"createdAt":"2017-01-17T14:53:35.628Z","name":"Rachel Tublitz","firstName":"Rachel","lastName":"Tublitz","username":"tublitzed","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/901bbad1db0244b298217d47b48f66c5_c5ac8f60-dcc4-11e6-bf52-5b99c6274a65.jpeg","website":"http://tublitzed.com","twitterHandle":"tublitzed","totalDonations":200,"firstDonation":"2017-01-17T14:53:45.254Z","lastDonation":"2017-01-17T14:53:45.254Z","tier":"backer"},{"id":2166,"createdAt":"2017-01-17T21:54:01.176Z","name":"Josh Manders","firstName":"Josh","lastName":"Manders","username":"josh","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/f3c4f000-dcff-11e6-bf52-5b99c6274a65.png","website":"https://www.joshmanders.com","twitterHandle":"joshmanders","totalDonations":200,"firstDonation":"2017-01-17T21:54:00.562Z","lastDonation":"2017-01-17T21:54:00.562Z","tier":"backer"},{"id":2829,"createdAt":"2017-01-30T09:36:50.922Z","name":"Viliam Elischer","firstName":"Viliam","lastName":"Elischer","username":"viliamelischer","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/49f8cd6f-94b0-46d9-b2ee-2ab8ad03ccfe","website":null,"twitterHandle":null,"totalDonations":200,"firstDonation":"2017-01-30T09:36:48.991Z","lastDonation":"2017-01-30T09:36:48.991Z","tier":"backer"},{"id":3190,"createdAt":"2017-02-21T07:33:39.862Z","name":"Bnaya Zilberfarb","firstName":"Bnaya","lastName":"Zilberfarb","username":"bnayazil","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/c7d6736f-8ca7-4de4-bccf-a652968ed3bd","website":null,"twitterHandle":null,"totalDonations":200,"firstDonation":"2017-02-21T07:33:39.812Z","lastDonation":"2017-02-21T07:33:39.812Z","tier":"backer"},{"id":3202,"createdAt":"2017-02-21T14:45:39.304Z","name":"Sarah Lim","firstName":"Sarah","lastName":"Lim","username":"sarah","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/56696d78-7766-4f35-a545-577fa38eb92b","website":"https://twitter.com/SarahPalimUSA","twitterHandle":"SarahPalimUSA","totalDonations":200,"firstDonation":"2017-02-21T14:45:38.219Z","lastDonation":"2017-02-21T14:45:38.219Z","tier":"backer"},{"id":4849,"createdAt":"2017-05-16T12:23:47.345Z","name":"Kazuhito Higashioka","firstName":"Kazuhito","lastName":"Higashioka","username":"kazupooot","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a6e921b1a9e0488f8684bcf640dbcac0_7629d510-3b8d-11e7-9917-c5a88bedad25.png","website":null,"twitterHandle":"kazupooot","totalDonations":200,"firstDonation":"2017-05-16T12:23:46.226Z","lastDonation":"2017-05-16T12:23:46.226Z","tier":"backer"},{"id":5249,"createdAt":"2017-06-07T02:25:06.203Z","name":"Anh Hoang","firstName":"Anh","lastName":"Hoang","username":"lehoanganh25991","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/3503acb0-5a25-4b96-8017-9475822548fb","website":"https://tinker.press","twitterHandle":null,"totalDonations":200,"firstDonation":"2017-06-07T02:25:05.088Z","lastDonation":"2017-06-07T02:25:05.088Z","tier":"backer"},{"id":5739,"createdAt":"2017-06-30T07:19:46.765Z","name":"Suraj Poddar","firstName":"Suraj","lastName":"Poddar","username":"surajpoddar16","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/281cc39c-fef3-41fb-b2cf-43de02852f0c","website":null,"twitterHandle":null,"totalDonations":200,"firstDonation":"2017-06-30T07:19:45.241Z","lastDonation":"2017-06-30T07:19:45.241Z","tier":"backer"},{"id":6372,"createdAt":"2017-08-02T02:41:36.697Z","name":"wusan ","firstName":"wusan","lastName":"","username":"wangwusan","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e83abf40-772c-11e7-a46c-15f4b846707d.jpg","website":"http://www.wangwusan.cn","twitterHandle":"168767072@qq.com","totalDonations":200,"firstDonation":"2017-08-02T02:41:35.478Z","lastDonation":"2017-08-02T02:41:35.478Z","tier":"backer"},{"id":6340,"createdAt":"2017-08-02T19:50:28.680Z","name":"Alexander Pustomelnyk","firstName":"Alexander","lastName":"Pustomelnyk","username":"eliotik","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/61852166-b964-44f1-9f10-20ef10963123","website":"https://twitter.com/eliotik","twitterHandle":"eliotik","totalDonations":200,"firstDonation":"2017-08-02T19:50:26.851Z","lastDonation":"2017-08-02T19:50:26.851Z","tier":"backer"},{"id":6614,"createdAt":"2017-08-15T08:35:07.694Z","name":"Evgeny Samsonov","firstName":"Evgeny","lastName":"Samsonov","username":"frooeyzanny","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/5d8ca514687740fab68729281da4dc3a_f5e38100-8194-11e7-8818-830b7e8766e3.png","website":"https://github.com/frooeyzanny","twitterHandle":"frooeyzanny","totalDonations":200,"firstDonation":"2017-08-15T08:35:06.502Z","lastDonation":"2017-08-15T08:35:06.502Z","tier":"backer"},{"id":6646,"createdAt":"2017-08-15T19:36:25.692Z","name":"Marlen Gevorkyan","firstName":"Marlen","lastName":"Gevorkyan","username":"gevmarlen","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/c1448a20-81f3-11e7-8818-830b7e8766e3.jpg","website":"marlen.","twitterHandle":null,"totalDonations":200,"firstDonation":"2017-08-15T19:36:24.544Z","lastDonation":"2017-08-15T19:36:24.544Z","tier":"backer"},{"id":3186,"createdAt":"2017-02-21T02:51:45.825Z","name":"Riyadh Al Nur","firstName":"Riyadh","lastName":"Al Nur","username":"riyadhalnur","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/43c6dd20-f7e0-11e6-aebb-a9d659d01ec2.jpg","website":"https://twitter.com/riyadhalnur","twitterHandle":"riyadhalnur","totalDonations":100,"firstDonation":"2017-02-21T02:51:45.627Z","lastDonation":"2017-02-21T02:51:45.627Z","tier":"backer"},{"id":4979,"createdAt":"2017-05-24T03:25:42.682Z","name":"John Manoogian","firstName":"John","lastName":"Manoogian","username":"jm3","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/330634c3-4081-4515-ad3e-239b9c075dfa","website":"https://twitter.com/jm3","twitterHandle":"jm3","totalDonations":100,"firstDonation":"2017-05-24T03:25:41.156Z","lastDonation":"2017-05-24T03:25:41.156Z","tier":"backer"},{"id":6449,"createdAt":"2017-08-07T12:12:39.564Z","name":"Kiem Hoang","firstName":"Kiem","lastName":"Hoang","username":"kiemhd","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/ea636ca9-c887-400d-8658-12ea40d3a41b","website":null,"twitterHandle":null,"totalDonations":100,"firstDonation":"2017-08-07T12:12:39.526Z","lastDonation":"2017-08-07T12:12:39.526Z","tier":"backer"},{"id":1927,"createdAt":"2016-12-05T05:50:06.931Z","name":"Junjie Huang","firstName":"Junjie","lastName":"Huang","username":"junjiehuang","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b7744cd0-b69a-11e6-8f29-915c263c0347.jpg","website":null,"twitterHandle":null,"totalDonations":50,"firstDonation":"2016-12-05T05:50:06.660Z","lastDonation":"2016-12-05T05:50:06.660Z","tier":"backer"},{"id":2180,"createdAt":"2017-05-10T03:46:29.476Z","name":"SkillFlow ","firstName":"SkillFlow","lastName":"","username":"skillflow","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/b72dabb0-3532-11e7-81bd-29b6c95afc9c.png","website":"https://skillflow.io","twitterHandle":"SkillFlowHQ","totalDonations":50,"firstDonation":"2017-05-10T03:46:27.837Z","lastDonation":"2017-05-10T03:46:27.837Z","tier":"backer"}] \ No newline at end of file diff --git a/src/components/Support/support-sponsors.json b/src/components/Support/support-sponsors.json new file mode 100644 index 000000000000..4c9849fa12dc --- /dev/null +++ b/src/components/Support/support-sponsors.json @@ -0,0 +1 @@ +[{"id":3499,"createdAt":"2017-03-17T14:01:41.191Z","name":"ag-Grid ","firstName":"ag-Grid","lastName":"","username":"ag-grid","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/66211340-8106-11e7-983e-4f93fbf1e7a3.png","website":"https://www.ag-grid.com/","twitterHandle":"ceolter","totalDonations":1500000,"firstDonation":"2017-03-17T14:01:38.776Z","lastDonation":"2017-08-01T15:04:32.949Z","tier":"sponsor"},{"id":2141,"createdAt":"2016-12-13T19:49:00.329Z","name":"Capital One","firstName":"Capital","lastName":"One","username":"capitalone","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2015_Capital_One_Logopng_87cc0240-c174-11e6-8db6-7b1babac25cc.png","website":"https://www.capitalone.com","twitterHandle":"capitalone","totalDonations":1200000,"firstDonation":"2016-12-13T19:48:59.142Z","lastDonation":"2016-12-14T18:56:03.836Z","tier":"sponsor"},{"id":6536,"createdAt":"2017-08-11T17:20:50.303Z","name":"trivago ","firstName":"trivago","lastName":"","username":"trivago","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/WkzpfXkndvyjvIsIDo0U3_YbDn1dYi1dgTCmIagpx1H_L7kdcQHfnknyB7Q9INN1Es_w300_gxtuzepng_eb59bcd0-8672-11e7-b225-4ba72c1ef64e.png","website":"https://company.trivago.com","twitterHandle":"trivago_tech","totalDonations":1000000,"firstDonation":"2017-08-11T17:20:50.266Z","lastDonation":"2017-08-11T17:20:50.266Z","tier":"sponsor"},{"id":1856,"createdAt":"2016-11-23T11:42:36.079Z","name":"AngularClass ","firstName":"AngularClass","lastName":"","username":"angularclass","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7c14be50-3bf5-11e7-998a-0f73626dfc48.png","website":"http://angularclass.com","twitterHandle":"AngularClass","totalDonations":401800,"firstDonation":"2016-11-23T11:42:47.549Z","lastDonation":"2017-08-01T04:39:27.022Z","tier":"sponsor"},{"id":772,"createdAt":"2016-10-02T23:30:49.169Z","name":"Open Source Collective","firstName":"Open","lastName":"Source Collective","username":"host-org","role":"HOST","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/oclogoiconpng_9748d6e0-4a03-11e7-af45-45551d552411.png","website":"https://opencollective.org","twitterHandle":"opencollect","totalDonations":239400,"firstDonation":"2017-03-20T19:25:24.025Z","lastDonation":"2017-07-13T11:34:49.928Z","tier":"sponsor"},{"id":1822,"createdAt":"2017-01-18T01:10:18.023Z","name":"egghead.io ","firstName":"egghead.io","lastName":"","username":"joelhooks","role":"BACKER","avatar":"https://logo.clearbit.com/egghead.io","website":"https://egghead.io","twitterHandle":null,"totalDonations":200000,"firstDonation":"2017-01-18T01:10:25.738Z","lastDonation":"2017-08-18T02:11:13.281Z","tier":"sponsor"},{"id":3360,"createdAt":"2017-03-03T10:53:42.734Z","name":"5 minutes of React podcast","firstName":"5","lastName":"minutes of React podcast","username":"5minreact_audio","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/83a13420-34be-11e7-81bd-29b6c95afc9c.png","website":"https://twitter.com/5minreact_audio","twitterHandle":"5minreact_audio","totalDonations":200000,"firstDonation":"2017-03-03T10:53:41.611Z","lastDonation":"2017-08-15T02:55:01.527Z","tier":"sponsor"},{"id":1531,"createdAt":"2016-10-18T12:18:38.946Z","name":"VTEX ","firstName":"VTEX","lastName":"","username":"vtex","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/02f91870-4b9c-11e7-b3a9-e52b9767ee5f.png","website":"http://lab.vtex.com/careers/","twitterHandle":"vtexlab","totalDonations":110000,"firstDonation":"2016-10-18T12:18:44.024Z","lastDonation":"2017-08-18T13:19:33.890Z","tier":"sponsor"},{"id":1546,"createdAt":"2016-10-20T12:59:00.873Z","name":"Peerigon ","firstName":"Peerigon","lastName":"","username":"peerigon","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e8a1de10-99c8-11e6-8650-f92e594d5de8.png","website":"https://peerigon.com/","twitterHandle":"peerigon","totalDonations":110000,"firstDonation":"2016-10-20T12:59:10.149Z","lastDonation":"2017-08-20T13:59:57.102Z","tier":"sponsor"},{"id":1551,"createdAt":"2016-10-20T14:57:07.868Z","name":"PhotoEditorSDK ","firstName":"PhotoEditorSDK","lastName":"","username":"photoeditorsdk","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/1d573100-96d6-11e6-baa3-69f47ab52eed.jpg","website":"https://www.photoeditorsdk.com/?utm_source=sponsorship&utm_medium=logo&utm_campaign=webpack_sponsorship","twitterHandle":"photoeditorsdk","totalDonations":110000,"firstDonation":"2016-10-20T14:57:16.158Z","lastDonation":"2017-08-20T15:58:21.364Z","tier":"sponsor"},{"id":1819,"createdAt":"2016-11-26T02:43:33.897Z","name":"Frontend Masters","firstName":"Frontend","lastName":"Masters","username":"frontendmasters","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/0c8ad860-b11e-11e6-afe2-6129fbf4c498.jpg","website":"http://FrontendMasters.com","twitterHandle":"frontendmasters","totalDonations":110000,"firstDonation":"2016-11-26T02:43:42.539Z","lastDonation":"2017-08-01T13:55:40.520Z","tier":"sponsor"},{"id":2540,"createdAt":"2017-01-13T21:38:52.040Z","name":"Sentry.io","firstName":"Sentry.io","lastName":null,"username":"sentry","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/9d80bf90-d9d9-11e6-af11-676b2b71a93b.png","website":"http://sentry.io","twitterHandle":"getsentry","totalDonations":110000,"firstDonation":"2017-01-13T21:38:59.493Z","lastDonation":"2017-08-01T20:51:46.695Z","tier":"sponsor"},{"id":1013,"createdAt":"2016-10-24T07:21:52.099Z","name":"X-Team ","firstName":"X-Team","lastName":"","username":"xteam","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/a9c3b140-99ba-11e6-8650-f92e594d5de8.png","website":"http://x-team.com","twitterHandle":"xteam","totalDonations":100000,"firstDonation":"2016-10-24T07:21:58.364Z","lastDonation":"2017-07-24T08:22:35.409Z","tier":"sponsor"},{"id":3045,"createdAt":"2017-02-09T08:12:19.415Z","name":"synedra IT GmbH","firstName":"synedra","lastName":"IT GmbH","username":"jfellner","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/synedracom_86b88830-ee9f-11e6-81f7-893d7ffdaf8e.png","website":"http://www.synedra.com","twitterHandle":null,"totalDonations":100000,"firstDonation":"2017-02-09T08:12:18.953Z","lastDonation":"2017-02-09T08:12:18.953Z","tier":"sponsor"},{"id":1990,"createdAt":"2016-12-01T10:39:16.020Z","name":"Sebastian Software","firstName":"Sebastian","lastName":"Software","username":"sebastiansoft","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/sebastiansoftwarede_5c2006b0-5c19-11e7-aaa8-af55aae48f51.png","website":"http://sebastian-software.de/","twitterHandle":"sebastiansoft","totalDonations":90000,"firstDonation":"2016-12-01T10:39:26.152Z","lastDonation":"2017-08-01T11:39:58.488Z","tier":"sponsor"},{"id":2187,"createdAt":"2016-12-15T15:47:57.538Z","name":"Jared Palmer","firstName":"Jared","lastName":"Palmer","username":"jaredpalmer","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/69037a70-7789-11e7-a46c-15f4b846707d.jpg","website":"jaredpalmer.com","twitterHandle":"palmergrouphq","totalDonations":90000,"firstDonation":"2016-12-15T15:48:07.027Z","lastDonation":"2017-08-15T16:48:53.604Z","tier":"sponsor"},{"id":1533,"createdAt":"2016-10-18T15:59:15.987Z","name":"Kent C. Dodds","firstName":"Kent","lastName":"C. Dodds","username":"kentcdodds","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/kentcdoddscom_e3c3e1d0-954b-11e6-add0-93faa9a7296f.png","website":"http://kentcdodds.com","twitterHandle":"kentcdodds","totalDonations":81500,"firstDonation":"2016-10-18T15:59:26.139Z","lastDonation":"2017-08-10T00:23:32.118Z","tier":"sponsor"},{"id":2263,"createdAt":"2016-12-22T20:16:03.399Z","name":"ZEIT ","firstName":"ZEIT","lastName":"","username":"zeit","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/cd805730-c883-11e6-9af0-47fca5e686db.png","website":"http://zeit.co","twitterHandle":"rauchg","totalDonations":80000,"firstDonation":"2016-12-22T20:16:11.522Z","lastDonation":"2017-07-22T21:17:55.596Z","tier":"sponsor"},{"id":2418,"createdAt":"2017-01-03T22:29:36.069Z","name":"Alligator.io ","firstName":"Alligator.io","lastName":"","username":"alligatorio","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e7705660-d204-11e6-b76a-f54c319c1811.svg","website":"https://alligator.io","twitterHandle":"alligatorio","totalDonations":80000,"firstDonation":"2017-01-03T22:29:41.134Z","lastDonation":"2017-08-03T23:32:36.286Z","tier":"sponsor"},{"id":2505,"createdAt":"2017-01-11T17:10:24.377Z","name":"Rollbar ","firstName":"Rollbar","lastName":"","username":"rollbar","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6a0b8060-d82f-11e6-acc7-b7c53a1d71c4.png","website":"https://rollbar.com","twitterHandle":"rollbar","totalDonations":80000,"firstDonation":"2017-01-11T17:10:33.079Z","lastDonation":"2017-08-11T18:10:52.819Z","tier":"sponsor"},{"id":2508,"createdAt":"2017-01-11T20:19:34.127Z","name":"Waffle.io ","firstName":"Waffle.io","lastName":"","username":"waffleio","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/77633800-d83b-11e6-8824-3766c82c6227.png","website":"https://waffle.io/webpack/webpack","twitterHandle":"waffleio","totalDonations":80000,"firstDonation":"2017-01-11T20:19:38.719Z","lastDonation":"2017-08-11T21:19:56.716Z","tier":"sponsor"},{"id":2578,"createdAt":"2017-01-18T02:52:37.444Z","name":"Sarah Drasner","firstName":"Sarah","lastName":"Drasner","username":"sarah_edo","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/470534e0-dd29-11e6-bf52-5b99c6274a65.jpg","website":"http://sarahdrasnerdesign.com","twitterHandle":"sarah_edo","totalDonations":80000,"firstDonation":"2017-01-18T02:52:43.467Z","lastDonation":"2017-08-18T03:53:22.137Z","tier":"sponsor"},{"id":2644,"createdAt":"2017-01-20T11:17:22.722Z","name":"SoftwarePlant ","firstName":"SoftwarePlant","lastName":"","username":"softwareplant","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4fbfd740-df02-11e6-9342-6da0a3e42d81.png","website":"http://www.softwareplant.com/career/","twitterHandle":"https://twitter.com/SoftPlant","totalDonations":80000,"firstDonation":"2017-01-20T11:17:33.185Z","lastDonation":"2017-08-20T12:18:27.478Z","tier":"sponsor"},{"id":1665,"createdAt":"2016-11-01T12:52:41.355Z","name":"Modus Create","firstName":"Modus","lastName":"Create","username":"moduscreate","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/51b0b410-574e-11e7-9949-3d27887721e6.png","website":"http://moduscreate.com","twitterHandle":"ModusCreate","totalDonations":75000,"firstDonation":"2016-11-01T12:52:46.540Z","lastDonation":"2017-01-01T13:53:49.189Z","tier":"sponsor"},{"id":2595,"createdAt":"2017-01-18T14:08:48.005Z","name":"Clevertech ","firstName":"Clevertech","lastName":"","username":"michellemcfarland","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/bc6555e0-dd87-11e6-aabd-af731cff2f24.png","website":"http://www.Clevertech.biz","twitterHandle":"Clevertech","totalDonations":75000,"firstDonation":"2017-01-18T14:09:07.522Z","lastDonation":"2017-03-18T15:09:49.979Z","tier":"sponsor"},{"id":2685,"createdAt":"2017-01-22T18:56:58.269Z","name":"Yvo Schaap","firstName":"Yvo","lastName":"Schaap","username":"yvoschaap","role":"BACKER","avatar":"https://res.cloudinary.com/opencollective/image/upload/v1488293195/500500_crkrr4.png","website":"http://www.directlyrics.com","twitterHandle":"yvoschaap","totalDonations":70000,"firstDonation":"2017-01-22T18:57:04.873Z","lastDonation":"2017-07-22T19:58:36.311Z","tier":"sponsor"},{"id":1823,"createdAt":"2017-02-03T15:52:45.375Z","name":"Sticker Mule","firstName":"Sticker","lastName":"Mule","username":"stickermule","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/50d34300-e719-11e6-8f71-e12ba1ad8ee3.png","website":"https://stickermule.com","twitterHandle":"stickermule","totalDonations":70000,"firstDonation":"2017-02-03T15:52:43.310Z","lastDonation":"2017-08-01T16:56:23.941Z","tier":"sponsor"},{"id":1901,"createdAt":"2016-11-28T23:08:46.743Z","name":"Addy Osmani","firstName":"Addy","lastName":"Osmani","username":"addyosmani","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/e39ad01c67b948f1b9a139a219f2e3d6_a0854b90-b5bf-11e6-9f3b-115a2450f71e.jpeg","website":"http://www.addyosmani.com","twitterHandle":"addyosmani","totalDonations":62000,"firstDonation":"2016-11-28T23:08:53.108Z","lastDonation":"2017-08-01T21:42:39.219Z","tier":"sponsor"},{"id":3609,"createdAt":"2017-03-20T20:11:57.904Z","name":"Accelebrate","firstName":"Accelebrate","lastName":null,"username":"accelebrate","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/accelebratecom_9c5e0150-0da9-11e7-8a3e-6fa74c9fec9f.png","website":"http://www.accelebrate.com","twitterHandle":"accelebrate","totalDonations":60000,"firstDonation":"2017-03-20T20:11:54.393Z","lastDonation":"2017-08-01T21:14:27.851Z","tier":"sponsor"},{"id":3580,"createdAt":"2017-03-21T17:45:35.000Z","name":"HubSpot ","firstName":"HubSpot","lastName":"","username":"hubspot","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/61f2f830-0b4d-11e7-85e3-cf8c26b6ca26.png","website":null,"twitterHandle":null,"totalDonations":60000,"firstDonation":"2017-03-21T17:45:33.592Z","lastDonation":"2017-08-01T19:17:26.859Z","tier":"sponsor"},{"id":3826,"createdAt":"2017-03-30T03:20:32.470Z","name":"Icons8 ","firstName":"Icons8","lastName":"","username":"icons8","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2d6b4a00-1709-11e7-9b5a-89d03aeb3ad4.png","website":"https://icons8.com/web-app/new-icons/all","twitterHandle":"visualpharm","totalDonations":56200,"firstDonation":"2017-03-30T03:20:30.429Z","lastDonation":"2017-08-01T19:47:52.040Z","tier":"sponsor"},{"id":1763,"createdAt":"2016-11-11T14:52:07.277Z","name":"Algolia ","firstName":"Algolia","lastName":"","username":"algolia","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/7fc5cb80-df47-11e6-b2e8-1b6b8e7bc3f8.png","website":"https://algolia.com","twitterHandle":"algolia","totalDonations":50000,"firstDonation":"2016-11-11T14:52:20.041Z","lastDonation":"2017-03-11T15:52:57.835Z","tier":"sponsor"},{"id":1872,"createdAt":"2016-11-25T08:07:35.588Z","name":"Joshua Wiens","firstName":"Joshua","lastName":"Wiens","username":"joshuawiens","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/cf0ded019621491aa3ac359e93dee8df_4adb7f60-b2e6-11e6-a7b3-29a3c1d1da43.png","website":"http://deviantjs.io/","twitterHandle":"d3viant0ne","totalDonations":50000,"firstDonation":"2016-11-25T08:07:42.669Z","lastDonation":"2017-08-01T19:17:28.851Z","tier":"sponsor"},{"id":3287,"createdAt":"2017-02-27T09:05:52.114Z","name":"reBuy ","firstName":"reBuy","lastName":"","username":"rebuy","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/6c13b200-2416-11e7-82a6-7b8ec7944781.svg","website":"https://www.rebuy.de","twitterHandle":null,"totalDonations":50000,"firstDonation":"2017-02-27T09:05:52.075Z","lastDonation":"2017-02-27T09:05:52.075Z","tier":"sponsor"},{"id":3298,"createdAt":"2017-02-27T20:34:39.293Z","name":"Aviture Inc.","firstName":"Aviture","lastName":"Inc.","username":"contact4","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/baf89360-fd2c-11e6-919b-c19031687e07.png","website":"http://www.aviture.us.com","twitterHandle":"aviture","totalDonations":50000,"firstDonation":"2017-02-27T20:34:39.253Z","lastDonation":"2017-02-27T20:34:39.253Z","tier":"sponsor"},{"id":4397,"createdAt":"2017-04-23T01:13:33.499Z","name":"Andrew Lunny","firstName":"Andrew","lastName":"Lunny","username":"alunny","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/4a49f8f0-27c2-11e7-bfce-a9efbaccb8a9.jpg","website":null,"twitterHandle":"alunny","totalDonations":50000,"firstDonation":"2017-04-23T01:13:31.861Z","lastDonation":"2017-08-01T03:50:06.120Z","tier":"sponsor"},{"id":5499,"createdAt":"2017-06-20T08:18:25.505Z","name":"上线了 ","firstName":"上线了","lastName":"","username":"dafeng","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/2cffb070-5592-11e7-bbd2-efcb8e28569e.png","website":"https://www.sxl.cn/s/careers?ref=wp","twitterHandle":"dfguo","totalDonations":48400,"firstDonation":"2017-06-20T08:18:24.430Z","lastDonation":"2017-08-01T09:39:38.692Z","tier":"sponsor"},{"id":1659,"createdAt":"2016-10-31T17:40:02.618Z","name":"Work & Co","firstName":"Work","lastName":"& Co","username":"workco","role":"BACKER","avatar":"https://logo.clearbit.com/work.co","website":"https://work.co/","twitterHandle":"workandco","totalDonations":30000,"firstDonation":"2016-10-31T17:40:01.619Z","lastDonation":"2016-10-31T17:40:01.619Z","tier":"sponsor"},{"id":4855,"createdAt":"2017-05-16T02:44:32.570Z","name":"React Native Training","firstName":"React","lastName":"Native Training","username":"reactnativetraining","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/524dec00-39e2-11e7-a19f-69aad0543ddc.png","website":"http://reactnative.training/","twitterHandle":"rn_training","totalDonations":30000,"firstDonation":"2017-05-16T02:44:31.492Z","lastDonation":"2017-07-01T04:09:39.807Z","tier":"sponsor"},{"id":5220,"createdAt":"2017-06-06T02:20:03.763Z","name":"The Training Advisors","firstName":"The","lastName":"Training Advisors","username":"thetrainingadvisors","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/541b6700-4a5f-11e7-af45-45551d552411.jpg","website":"http://www.thetrainingadvisors.com/training/programming/angular","twitterHandle":null,"totalDonations":30000,"firstDonation":"2017-06-06T02:20:02.763Z","lastDonation":"2017-08-01T04:39:11.282Z","tier":"sponsor"},{"id":5248,"createdAt":"2017-06-07T00:57:35.147Z","name":"ProductReview.com.au ","firstName":"ProductReview.com.au","lastName":"","username":"productreview","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/0fba33a0-4b1f-11e7-87f4-4975bd7d23d1.png","website":"http://www.productreview.com.au","twitterHandle":null,"totalDonations":30000,"firstDonation":"2017-06-07T00:57:33.179Z","lastDonation":"2017-08-01T03:49:56.778Z","tier":"sponsor"},{"id":5676,"createdAt":"2017-06-27T15:45:34.719Z","name":"Esben Petersen","firstName":"Esben","lastName":"Petersen","username":"ep","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/42c8c539-0ee8-4663-8b9e-0f82c00ac7f0","website":"https://twitter.com/esbenp","twitterHandle":"esbenp","totalDonations":30000,"firstDonation":"2017-06-27T15:45:33.456Z","lastDonation":"2017-08-01T16:51:00.152Z","tier":"sponsor"},{"id":5678,"createdAt":"2017-06-27T17:23:11.323Z","name":"Appfolio ","firstName":"Appfolio","lastName":"","username":"appfolio","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/appfoliocom_aa5881b0-5b5e-11e7-849c-b5d0dd7eeffe.png","website":"http://engineering.appfolio.com","twitterHandle":"appfolioeng","totalDonations":30000,"firstDonation":"2017-06-27T17:23:10.121Z","lastDonation":"2017-08-01T19:02:11.782Z","tier":"sponsor"},{"id":1511,"createdAt":"2016-10-16T14:05:50.031Z","name":"Irvin Waldman","firstName":"Irvin","lastName":"Waldman","username":"irvinwaldman","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/040293e0-93aa-11e6-959d-07ed50026d25.jpg","website":null,"twitterHandle":"irvinwaldman","totalDonations":27500,"firstDonation":"2016-10-16T14:06:02.329Z","lastDonation":"2017-08-16T15:06:25.607Z","tier":"sponsor"},{"id":5633,"createdAt":"2017-06-26T19:49:02.734Z","name":"Ben Vinegar","firstName":"Ben","lastName":"Vinegar","username":"ben2","role":"BACKER","avatar":"https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/2b51343b-2489-4055-824b-4edb65d09c4b","website":"https://twitter.com/bentlegen","twitterHandle":"bentlegen","totalDonations":25600,"firstDonation":"2017-06-26T19:49:01.784Z","lastDonation":"2017-08-01T20:50:51.063Z","tier":"sponsor"},{"id":1608,"createdAt":"2016-10-24T13:12:28.282Z","name":"Dan Abramov","firstName":"Dan","lastName":"Abramov","username":"danabramov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/871ea163df054038926c8dafcbc2a4dd_8a561380-99eb-11e6-8650-f92e594d5de8.png","website":"http://twitter.com/dan_abramov","twitterHandle":"dan_abramov","totalDonations":25000,"firstDonation":"2016-10-24T13:12:34.174Z","lastDonation":"2017-07-24T14:13:01.868Z","tier":"sponsor"},{"id":1614,"createdAt":"2016-10-24T14:22:59.339Z","name":"Christian Alfoni","firstName":"Christian","lastName":"Alfoni","username":"christianalfoni","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/dd555d8a1a7e443697bb1e6e8775aae5_6583c2f0-99f5-11e6-8650-f92e594d5de8.png","website":"http://www.christianalfoni.com","twitterHandle":"christianalfoni","totalDonations":25000,"firstDonation":"2016-10-24T14:23:08.617Z","lastDonation":"2017-07-24T15:24:19.729Z","tier":"sponsor"},{"id":765,"createdAt":"2016-10-17T00:00:00.000Z","name":"I Done This","firstName":"I","lastName":"Done This","username":"idonethis","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/06a44500-1ecc-11e7-be1e-a32c54219e24.png","website":"http://try.idonethis.com/developer\n?utm_campaign=opencollective&utm_medium=github&utm_source=angular-fullstack","twitterHandle":"idonethis","totalDonations":20000,"firstDonation":"2016-10-17T00:00:00.000Z","lastDonation":"2017-01-13T00:00:00.000Z","tier":"sponsor"},{"id":5625,"createdAt":"2017-06-26T17:07:07.571Z","name":"Evgeny Rodionov","firstName":"Evgeny","lastName":"Rodionov","username":"evgenyrodionov","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/46702850-5a92-11e7-9ac7-2d92e6dfa92a.jpg","website":"http://erodionov.ru","twitterHandle":"evgenyrodionov","totalDonations":20000,"firstDonation":"2017-06-26T17:07:06.476Z","lastDonation":"2017-07-01T18:09:11.343Z","tier":"sponsor"},{"id":5930,"createdAt":"2017-07-08T01:19:34.822Z","name":"clay ","firstName":"clay","lastName":"","username":"clayglobal","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/09d57c90-637c-11e7-9ed2-bfa12b0351e8.jpg","website":"http://clay.global","twitterHandle":"clayglobal","totalDonations":20000,"firstDonation":"2017-07-08T01:19:33.848Z","lastDonation":"2017-08-01T02:43:16.839Z","tier":"sponsor"},{"id":6400,"createdAt":"2017-08-03T10:15:43.002Z","name":"N26 ","firstName":"N26","lastName":"","username":"n26","role":"BACKER","avatar":"https://opencollective-production.s3-us-west-1.amazonaws.com/n26com_0aef3c60-7835-11e7-8fb9-7bec616fccd5.png","website":"http://n26.com","twitterHandle":"n26","totalDonations":20000,"firstDonation":"2017-08-03T10:15:41.367Z","lastDonation":"2017-08-03T10:15:41.367Z","tier":"sponsor"}] \ No newline at end of file diff --git a/components/text-rotater/text-rotater.jsx b/src/components/TextRotater/TextRotater.jsx similarity index 100% rename from components/text-rotater/text-rotater.jsx rename to src/components/TextRotater/TextRotater.jsx diff --git a/components/text-rotater/text-rotater-style.scss b/src/components/TextRotater/TextRotater.scss similarity index 100% rename from components/text-rotater/text-rotater-style.scss rename to src/components/TextRotater/TextRotater.scss diff --git a/components/vote/app.jsx b/src/components/Vote/App.jsx similarity index 99% rename from components/vote/app.jsx rename to src/components/Vote/App.jsx index e0ed16eabd63..cfba8704f200 100644 --- a/components/vote/app.jsx +++ b/src/components/Vote/App.jsx @@ -1,8 +1,8 @@ import React from 'react'; import 'whatwg-fetch'; import * as api from "./api"; -import VoteButton from './button/button'; -import Influence from './influence.jsx'; +import VoteButton from './Button/Button'; +import Influence from './Influence'; import GithubMark from '../../assets/github-logo.svg'; function updateByProperty(array, property, propertyValue, update) { diff --git a/components/vote/app-style.scss b/src/components/Vote/App.scss similarity index 100% rename from components/vote/app-style.scss rename to src/components/Vote/App.scss diff --git a/components/vote/button/button.jsx b/src/components/Vote/Button/Button.jsx similarity index 100% rename from components/vote/button/button.jsx rename to src/components/Vote/Button/Button.jsx diff --git a/components/vote/button/button-style.scss b/src/components/Vote/Button/Button.scss similarity index 100% rename from components/vote/button/button-style.scss rename to src/components/Vote/Button/Button.scss diff --git a/components/vote/influence.jsx b/src/components/Vote/Influence.jsx similarity index 100% rename from components/vote/influence.jsx rename to src/components/Vote/Influence.jsx diff --git a/components/vote/influence-style.scss b/src/components/Vote/Influence.scss similarity index 100% rename from components/vote/influence-style.scss rename to src/components/Vote/Influence.scss diff --git a/components/vote/list.jsx b/src/components/Vote/List.jsx similarity index 67% rename from components/vote/list.jsx rename to src/components/Vote/List.jsx index edc66e91e415..da1aeda25992 100644 --- a/components/vote/list.jsx +++ b/src/components/Vote/List.jsx @@ -1,12 +1,12 @@ import React from 'react'; import Interactive from 'antwar-interactive'; -import Container from '../container/container'; -import VoteApp from './app'; +import Container from '../Container/Container'; +import VoteApp from './App'; import '../../styles'; -import './list-style'; -import './app-style'; -import './influence-style'; -import './button/button-style'; +import './List.scss'; +import './App.scss'; +import './Influence.scss'; +import './Button/Button.scss'; export default ({ section, page }) => { let arr = page.url.split('/'); @@ -17,7 +17,7 @@ export default ({ section, page }) => {
diff --git a/components/vote/list-style.scss b/src/components/Vote/List.scss similarity index 100% rename from components/vote/list-style.scss rename to src/components/Vote/List.scss diff --git a/components/vote/api.dev.js b/src/components/Vote/api.dev.js similarity index 100% rename from components/vote/api.dev.js rename to src/components/Vote/api.dev.js diff --git a/components/vote/api.js b/src/components/Vote/api.js similarity index 100% rename from components/vote/api.js rename to src/components/Vote/api.js diff --git a/content/analyze.md b/src/content/analyze.md similarity index 100% rename from content/analyze.md rename to src/content/analyze.md diff --git a/content/api/cli.md b/src/content/api/cli.md similarity index 100% rename from content/api/cli.md rename to src/content/api/cli.md diff --git a/content/api/hot-module-replacement.md b/src/content/api/hot-module-replacement.md similarity index 94% rename from content/api/hot-module-replacement.md rename to src/content/api/hot-module-replacement.md index 9de3ddda1105..f912c8a87a7d 100644 --- a/content/api/hot-module-replacement.md +++ b/src/content/api/hot-module-replacement.md @@ -48,7 +48,7 @@ module.hot.decline( ### `dispose` (or `addDisposeHandler`) -Add a handler which is executed when the current module code is replaced. This should be used to destroy any persistent resource you have claimed or created. If you want to transfer state to the updated module, add it to given `data` parameter. This object will be available at `module.hot.data` after the update. +Add a handler which is executed when the current module code is replaced. This should be used to remove any persistent resource you have claimed or created. If you want to transfer state to the updated module, add it to given `data` parameter. This object will be available at `module.hot.data` after the update. ``` js module.hot.dispose(data => { diff --git a/content/api/index.md b/src/content/api/index.md similarity index 100% rename from content/api/index.md rename to src/content/api/index.md diff --git a/content/api/loaders.md b/src/content/api/loaders.md similarity index 100% rename from content/api/loaders.md rename to src/content/api/loaders.md diff --git a/content/api/module-methods.md b/src/content/api/module-methods.md similarity index 100% rename from content/api/module-methods.md rename to src/content/api/module-methods.md diff --git a/content/api/module-variables.md b/src/content/api/module-variables.md similarity index 100% rename from content/api/module-variables.md rename to src/content/api/module-variables.md diff --git a/content/api/node.md b/src/content/api/node.md similarity index 100% rename from content/api/node.md rename to src/content/api/node.md diff --git a/content/api/plugins/compilation.md b/src/content/api/plugins/compilation.md similarity index 100% rename from content/api/plugins/compilation.md rename to src/content/api/plugins/compilation.md diff --git a/content/api/plugins/compiler.md b/src/content/api/plugins/compiler.md similarity index 100% rename from content/api/plugins/compiler.md rename to src/content/api/plugins/compiler.md diff --git a/content/api/plugins/dependency.md b/src/content/api/plugins/dependency.md similarity index 100% rename from content/api/plugins/dependency.md rename to src/content/api/plugins/dependency.md diff --git a/content/api/plugins/index.md b/src/content/api/plugins/index.md similarity index 100% rename from content/api/plugins/index.md rename to src/content/api/plugins/index.md diff --git a/content/api/plugins/module-factories.md b/src/content/api/plugins/module-factories.md similarity index 100% rename from content/api/plugins/module-factories.md rename to src/content/api/plugins/module-factories.md diff --git a/content/api/plugins/parser.md b/src/content/api/plugins/parser.md similarity index 100% rename from content/api/plugins/parser.md rename to src/content/api/plugins/parser.md diff --git a/content/api/plugins/resolver.md b/src/content/api/plugins/resolver.md similarity index 100% rename from content/api/plugins/resolver.md rename to src/content/api/plugins/resolver.md diff --git a/content/api/plugins/tapable.md b/src/content/api/plugins/tapable.md similarity index 100% rename from content/api/plugins/tapable.md rename to src/content/api/plugins/tapable.md diff --git a/content/api/plugins/template.md b/src/content/api/plugins/template.md similarity index 100% rename from content/api/plugins/template.md rename to src/content/api/plugins/template.md diff --git a/content/api/stats.md b/src/content/api/stats.md similarity index 100% rename from content/api/stats.md rename to src/content/api/stats.md diff --git a/content/branding.md b/src/content/branding.md similarity index 100% rename from content/branding.md rename to src/content/branding.md diff --git a/content/comparison.md b/src/content/comparison.md similarity index 100% rename from content/comparison.md rename to src/content/comparison.md diff --git a/content/concepts/configuration.md b/src/content/concepts/configuration.md similarity index 100% rename from content/concepts/configuration.md rename to src/content/concepts/configuration.md diff --git a/content/concepts/dependency-graph.md b/src/content/concepts/dependency-graph.md similarity index 100% rename from content/concepts/dependency-graph.md rename to src/content/concepts/dependency-graph.md diff --git a/content/concepts/entry-points.md b/src/content/concepts/entry-points.md similarity index 100% rename from content/concepts/entry-points.md rename to src/content/concepts/entry-points.md diff --git a/content/concepts/hot-module-replacement.md b/src/content/concepts/hot-module-replacement.md similarity index 100% rename from content/concepts/hot-module-replacement.md rename to src/content/concepts/hot-module-replacement.md diff --git a/content/concepts/index.md b/src/content/concepts/index.md similarity index 100% rename from content/concepts/index.md rename to src/content/concepts/index.md diff --git a/content/concepts/loaders.md b/src/content/concepts/loaders.md similarity index 100% rename from content/concepts/loaders.md rename to src/content/concepts/loaders.md diff --git a/content/concepts/manifest.md b/src/content/concepts/manifest.md similarity index 90% rename from content/concepts/manifest.md rename to src/content/concepts/manifest.md index 64ff110c6439..a4546921bab6 100644 --- a/content/concepts/manifest.md +++ b/src/content/concepts/manifest.md @@ -28,7 +28,7 @@ As mentioned above, we'll only briefly touch on this. The runtime, along with th ## Manifest -So, once your application hits the browser, in the form of an `index.html` file, some bundles, and a variety of other assets, what does it look like? That `/src` directory you meticulously laid out is now gone, so how does webpack manage the interaction between all of your modules? This is where the manifest data comes in... +So, once your application hits the browser in the form of an `index.html` file, some bundles, and a variety of other assets, what does it look like? That `/src` directory you meticulously laid out is now gone, so how does webpack manage the interaction between all of your modules? This is where the manifest data comes in... As the compiler enters, resolves, and maps out your application, it keeps detailed notes on all your modules. This collection of data is called the "Manifest" and it's what the runtime will use to resolve and load modules once they've been bundled and shipped to the browser. No matter which [module syntax](/api/module-methods) you have chosen, those `import` or `require` statements have now become `__webpack_require__` methods that point to module identifiers. Using the data in the manifest, the runtime will be able to find out where to retrieve the modules behind the identifiers. diff --git a/content/concepts/module-resolution.md b/src/content/concepts/module-resolution.md similarity index 100% rename from content/concepts/module-resolution.md rename to src/content/concepts/module-resolution.md diff --git a/content/concepts/modules.md b/src/content/concepts/modules.md similarity index 100% rename from content/concepts/modules.md rename to src/content/concepts/modules.md diff --git a/content/concepts/output.md b/src/content/concepts/output.md similarity index 100% rename from content/concepts/output.md rename to src/content/concepts/output.md diff --git a/content/concepts/plugins.md b/src/content/concepts/plugins.md similarity index 100% rename from content/concepts/plugins.md rename to src/content/concepts/plugins.md diff --git a/content/concepts/targets.md b/src/content/concepts/targets.md similarity index 100% rename from content/concepts/targets.md rename to src/content/concepts/targets.md diff --git a/content/configuration/configuration-languages.md b/src/content/configuration/configuration-languages.md similarity index 100% rename from content/configuration/configuration-languages.md rename to src/content/configuration/configuration-languages.md diff --git a/content/configuration/configuration-types.md b/src/content/configuration/configuration-types.md similarity index 100% rename from content/configuration/configuration-types.md rename to src/content/configuration/configuration-types.md diff --git a/content/configuration/dev-server.md b/src/content/configuration/dev-server.md similarity index 98% rename from content/configuration/dev-server.md rename to src/content/configuration/dev-server.md index 93220ee83773..10fed8f59a1b 100644 --- a/content/configuration/dev-server.md +++ b/src/content/configuration/dev-server.md @@ -51,14 +51,14 @@ T> If you're having trouble, navigating to the `/webpack-dev-server` route will `array` -This option allows you to specify a whitelist of hosts that are allowed to access the dev server. +This option allows you to whitelist services that are allowed to access the dev server. ```js allowedHosts: [ - 'host.com', - 'subdomain.host.com', - 'subdomain2.host.com', - 'host2.com' + 'host.com', + 'subdomain.host.com', + 'subdomain2.host.com', + 'host2.com' ] ``` diff --git a/content/configuration/devtool.md b/src/content/configuration/devtool.md similarity index 100% rename from content/configuration/devtool.md rename to src/content/configuration/devtool.md diff --git a/content/configuration/entry-context.md b/src/content/configuration/entry-context.md similarity index 100% rename from content/configuration/entry-context.md rename to src/content/configuration/entry-context.md diff --git a/content/configuration/externals.md b/src/content/configuration/externals.md similarity index 100% rename from content/configuration/externals.md rename to src/content/configuration/externals.md diff --git a/content/configuration/index.md b/src/content/configuration/index.md similarity index 100% rename from content/configuration/index.md rename to src/content/configuration/index.md diff --git a/content/configuration/module.md b/src/content/configuration/module.md similarity index 100% rename from content/configuration/module.md rename to src/content/configuration/module.md diff --git a/content/configuration/node.md b/src/content/configuration/node.md similarity index 100% rename from content/configuration/node.md rename to src/content/configuration/node.md diff --git a/content/configuration/other-options.md b/src/content/configuration/other-options.md similarity index 100% rename from content/configuration/other-options.md rename to src/content/configuration/other-options.md diff --git a/content/configuration/output.md b/src/content/configuration/output.md similarity index 100% rename from content/configuration/output.md rename to src/content/configuration/output.md diff --git a/content/configuration/performance.md b/src/content/configuration/performance.md similarity index 100% rename from content/configuration/performance.md rename to src/content/configuration/performance.md diff --git a/content/configuration/plugins.md b/src/content/configuration/plugins.md similarity index 100% rename from content/configuration/plugins.md rename to src/content/configuration/plugins.md diff --git a/content/configuration/resolve.md b/src/content/configuration/resolve.md similarity index 100% rename from content/configuration/resolve.md rename to src/content/configuration/resolve.md diff --git a/content/configuration/stats.md b/src/content/configuration/stats.md similarity index 100% rename from content/configuration/stats.md rename to src/content/configuration/stats.md diff --git a/content/configuration/target.md b/src/content/configuration/target.md similarity index 100% rename from content/configuration/target.md rename to src/content/configuration/target.md diff --git a/content/configuration/watch.md b/src/content/configuration/watch.md similarity index 100% rename from content/configuration/watch.md rename to src/content/configuration/watch.md diff --git a/content/development/how-to-write-a-loader.md b/src/content/development/how-to-write-a-loader.md similarity index 100% rename from content/development/how-to-write-a-loader.md rename to src/content/development/how-to-write-a-loader.md diff --git a/content/development/how-to-write-a-plugin.md b/src/content/development/how-to-write-a-plugin.md similarity index 100% rename from content/development/how-to-write-a-plugin.md rename to src/content/development/how-to-write-a-plugin.md diff --git a/content/development/index.md b/src/content/development/index.md similarity index 100% rename from content/development/index.md rename to src/content/development/index.md diff --git a/content/development/plugin-patterns.md b/src/content/development/plugin-patterns.md similarity index 100% rename from content/development/plugin-patterns.md rename to src/content/development/plugin-patterns.md diff --git a/content/development/release-process.md b/src/content/development/release-process.md similarity index 100% rename from content/development/release-process.md rename to src/content/development/release-process.md diff --git a/content/glossary.md b/src/content/glossary.md similarity index 100% rename from content/glossary.md rename to src/content/glossary.md diff --git a/content/guides/asset-management.md b/src/content/guides/asset-management.md similarity index 100% rename from content/guides/asset-management.md rename to src/content/guides/asset-management.md diff --git a/content/guides/author-libraries.md b/src/content/guides/author-libraries.md similarity index 100% rename from content/guides/author-libraries.md rename to src/content/guides/author-libraries.md diff --git a/content/guides/build-performance.md b/src/content/guides/build-performance.md similarity index 100% rename from content/guides/build-performance.md rename to src/content/guides/build-performance.md diff --git a/content/guides/caching.md b/src/content/guides/caching.md similarity index 100% rename from content/guides/caching.md rename to src/content/guides/caching.md diff --git a/content/guides/code-splitting.md b/src/content/guides/code-splitting.md similarity index 100% rename from content/guides/code-splitting.md rename to src/content/guides/code-splitting.md diff --git a/content/guides/dependency-management.md b/src/content/guides/dependency-management.md similarity index 100% rename from content/guides/dependency-management.md rename to src/content/guides/dependency-management.md diff --git a/content/guides/development-vagrant.md b/src/content/guides/development-vagrant.md similarity index 100% rename from content/guides/development-vagrant.md rename to src/content/guides/development-vagrant.md diff --git a/content/guides/development.md b/src/content/guides/development.md similarity index 100% rename from content/guides/development.md rename to src/content/guides/development.md diff --git a/content/guides/environment-variables.md b/src/content/guides/environment-variables.md similarity index 100% rename from content/guides/environment-variables.md rename to src/content/guides/environment-variables.md diff --git a/content/guides/getting-started.md b/src/content/guides/getting-started.md similarity index 100% rename from content/guides/getting-started.md rename to src/content/guides/getting-started.md diff --git a/content/guides/hot-module-replacement.md b/src/content/guides/hot-module-replacement.md similarity index 100% rename from content/guides/hot-module-replacement.md rename to src/content/guides/hot-module-replacement.md diff --git a/content/guides/index.md b/src/content/guides/index.md similarity index 100% rename from content/guides/index.md rename to src/content/guides/index.md diff --git a/content/guides/installation.md b/src/content/guides/installation.md similarity index 100% rename from content/guides/installation.md rename to src/content/guides/installation.md diff --git a/content/guides/integrations.md b/src/content/guides/integrations.md similarity index 100% rename from content/guides/integrations.md rename to src/content/guides/integrations.md diff --git a/content/guides/lazy-loading.md b/src/content/guides/lazy-loading.md similarity index 100% rename from content/guides/lazy-loading.md rename to src/content/guides/lazy-loading.md diff --git a/content/guides/migrating.md b/src/content/guides/migrating.md similarity index 100% rename from content/guides/migrating.md rename to src/content/guides/migrating.md diff --git a/content/guides/output-management.md b/src/content/guides/output-management.md similarity index 95% rename from content/guides/output-management.md rename to src/content/guides/output-management.md index fdda51cad534..e3246855b9f0 100644 --- a/content/guides/output-management.md +++ b/src/content/guides/output-management.md @@ -9,7 +9,7 @@ contributors: T> This guide extends on code examples found in the [`Asset Management`](/guides/asset-management) guide. -So far we've manually included all our assets in our `index.html` file, but as your application grows and once you start [using hashes in filenames](/guides/caching) and outputting [multiple bundles](/guides/code-splitting), it will be difficult to keep managing your `index.html` file manually. However, there's no need to fear as a few plugins exist that will make this process much easier to manage. +So far we've manually included all our assets in our `index.html` file, but as your application grows and once you start [using hashes in filenames](/guides/caching) and outputting [multiple bundles](/guides/code-splitting), it will be difficult to keep managing your `index.html` file manually. However, a few plugins exist that will make this process much easier to manage. ## Preparation @@ -234,4 +234,4 @@ We won't go through a full example of how to use this plugin within your project ## Conclusion -Now that you've learned about dynamically adding bundles to your HTML, let's dive into the next guide: [`Development`](/guides/development). If you want to dive into more advanced topics, we would recommend heading over to the [`Code Splitting`](/guides/code-splitting) guide. +Now that you've learned about dynamically adding bundles to your HTML, let's dive into the [development guide](/guides/development). Or, if you want to dig into more advanced topics, we would recommend heading over to the [code splitting guide](/guides/code-splitting). diff --git a/content/guides/production.md b/src/content/guides/production.md similarity index 100% rename from content/guides/production.md rename to src/content/guides/production.md diff --git a/content/guides/public-path.md b/src/content/guides/public-path.md similarity index 100% rename from content/guides/public-path.md rename to src/content/guides/public-path.md diff --git a/content/guides/shimming.md b/src/content/guides/shimming.md similarity index 100% rename from content/guides/shimming.md rename to src/content/guides/shimming.md diff --git a/content/guides/tree-shaking.md b/src/content/guides/tree-shaking.md similarity index 100% rename from content/guides/tree-shaking.md rename to src/content/guides/tree-shaking.md diff --git a/content/guides/typescript.md b/src/content/guides/typescript.md similarity index 100% rename from content/guides/typescript.md rename to src/content/guides/typescript.md diff --git a/content/index.md b/src/content/index.md similarity index 100% rename from content/index.md rename to src/content/index.md diff --git a/content/license.md b/src/content/license.md similarity index 100% rename from content/license.md rename to src/content/license.md diff --git a/content/loaders/index.md b/src/content/loaders/index.md similarity index 100% rename from content/loaders/index.md rename to src/content/loaders/index.md diff --git a/content/plugins/aggressive-splitting-plugin.md b/src/content/plugins/aggressive-splitting-plugin.md similarity index 100% rename from content/plugins/aggressive-splitting-plugin.md rename to src/content/plugins/aggressive-splitting-plugin.md diff --git a/content/plugins/banner-plugin.md b/src/content/plugins/banner-plugin.md similarity index 100% rename from content/plugins/banner-plugin.md rename to src/content/plugins/banner-plugin.md diff --git a/content/plugins/commons-chunk-plugin.md b/src/content/plugins/commons-chunk-plugin.md similarity index 100% rename from content/plugins/commons-chunk-plugin.md rename to src/content/plugins/commons-chunk-plugin.md diff --git a/content/plugins/context-replacement-plugin.md b/src/content/plugins/context-replacement-plugin.md similarity index 100% rename from content/plugins/context-replacement-plugin.md rename to src/content/plugins/context-replacement-plugin.md diff --git a/content/plugins/define-plugin.md b/src/content/plugins/define-plugin.md similarity index 100% rename from content/plugins/define-plugin.md rename to src/content/plugins/define-plugin.md diff --git a/content/plugins/dll-plugin.md b/src/content/plugins/dll-plugin.md similarity index 100% rename from content/plugins/dll-plugin.md rename to src/content/plugins/dll-plugin.md diff --git a/content/plugins/environment-plugin.md b/src/content/plugins/environment-plugin.md similarity index 100% rename from content/plugins/environment-plugin.md rename to src/content/plugins/environment-plugin.md diff --git a/content/plugins/hashed-module-ids-plugin.md b/src/content/plugins/hashed-module-ids-plugin.md similarity index 100% rename from content/plugins/hashed-module-ids-plugin.md rename to src/content/plugins/hashed-module-ids-plugin.md diff --git a/content/plugins/hot-module-replacement-plugin.md b/src/content/plugins/hot-module-replacement-plugin.md similarity index 100% rename from content/plugins/hot-module-replacement-plugin.md rename to src/content/plugins/hot-module-replacement-plugin.md diff --git a/content/plugins/html-webpack-plugin.md b/src/content/plugins/html-webpack-plugin.md similarity index 100% rename from content/plugins/html-webpack-plugin.md rename to src/content/plugins/html-webpack-plugin.md diff --git a/content/plugins/ignore-plugin.md b/src/content/plugins/ignore-plugin.md similarity index 100% rename from content/plugins/ignore-plugin.md rename to src/content/plugins/ignore-plugin.md diff --git a/content/plugins/index.md b/src/content/plugins/index.md similarity index 100% rename from content/plugins/index.md rename to src/content/plugins/index.md diff --git a/content/plugins/limit-chunk-count-plugin.md b/src/content/plugins/limit-chunk-count-plugin.md similarity index 100% rename from content/plugins/limit-chunk-count-plugin.md rename to src/content/plugins/limit-chunk-count-plugin.md diff --git a/content/plugins/loader-options-plugin.md b/src/content/plugins/loader-options-plugin.md similarity index 100% rename from content/plugins/loader-options-plugin.md rename to src/content/plugins/loader-options-plugin.md diff --git a/content/plugins/min-chunk-size-plugin.md b/src/content/plugins/min-chunk-size-plugin.md similarity index 100% rename from content/plugins/min-chunk-size-plugin.md rename to src/content/plugins/min-chunk-size-plugin.md diff --git a/content/plugins/module-concatenation-plugin.md b/src/content/plugins/module-concatenation-plugin.md similarity index 100% rename from content/plugins/module-concatenation-plugin.md rename to src/content/plugins/module-concatenation-plugin.md diff --git a/content/plugins/named-modules-plugin.md b/src/content/plugins/named-modules-plugin.md similarity index 100% rename from content/plugins/named-modules-plugin.md rename to src/content/plugins/named-modules-plugin.md diff --git a/content/plugins/no-emit-on-errors-plugin.md b/src/content/plugins/no-emit-on-errors-plugin.md similarity index 100% rename from content/plugins/no-emit-on-errors-plugin.md rename to src/content/plugins/no-emit-on-errors-plugin.md diff --git a/content/plugins/normal-module-replacement-plugin.md b/src/content/plugins/normal-module-replacement-plugin.md similarity index 100% rename from content/plugins/normal-module-replacement-plugin.md rename to src/content/plugins/normal-module-replacement-plugin.md diff --git a/content/plugins/prefetch-plugin.md b/src/content/plugins/prefetch-plugin.md similarity index 100% rename from content/plugins/prefetch-plugin.md rename to src/content/plugins/prefetch-plugin.md diff --git a/content/plugins/provide-plugin.md b/src/content/plugins/provide-plugin.md similarity index 100% rename from content/plugins/provide-plugin.md rename to src/content/plugins/provide-plugin.md diff --git a/content/plugins/source-map-dev-tool-plugin.md b/src/content/plugins/source-map-dev-tool-plugin.md similarity index 100% rename from content/plugins/source-map-dev-tool-plugin.md rename to src/content/plugins/source-map-dev-tool-plugin.md diff --git a/content/plugins/watch-ignore-plugin.md b/src/content/plugins/watch-ignore-plugin.md similarity index 100% rename from content/plugins/watch-ignore-plugin.md rename to src/content/plugins/watch-ignore-plugin.md diff --git a/content/support/index.md b/src/content/support/index.md similarity index 100% rename from content/support/index.md rename to src/content/support/index.md diff --git a/content/writers-guide.md b/src/content/writers-guide.md similarity index 100% rename from content/writers-guide.md rename to src/content/writers-guide.md diff --git a/scripts/check-links.js b/src/scripts/check-links.js old mode 100755 new mode 100644 similarity index 100% rename from scripts/check-links.js rename to src/scripts/check-links.js diff --git a/scripts/deploy.sh b/src/scripts/deploy.sh similarity index 100% rename from scripts/deploy.sh rename to src/scripts/deploy.sh diff --git a/scripts/deploy_key.enc b/src/scripts/deploy_key.enc similarity index 100% rename from scripts/deploy_key.enc rename to src/scripts/deploy_key.enc diff --git a/scripts/deploy_key.pub b/src/scripts/deploy_key.pub similarity index 100% rename from scripts/deploy_key.pub rename to src/scripts/deploy_key.pub diff --git a/src/scripts/fetch.sh b/src/scripts/fetch.sh new file mode 100644 index 000000000000..be69b0acfd0d --- /dev/null +++ b/src/scripts/fetch.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e # Exit with nonzero exit code if anything fails + +rm -rf ./generated +mkdir -p ./generated/loaders +cp -rf ./src/content/loaders/ ./generated/loaders +mkdir -p ./generated/plugins +cp -rf ./src/content/plugins/ ./generated/plugins + +# Fetch webpack-contrib (and various other) loader repositories +node ./src/scripts/fetch_package_names.js "webpack-contrib" "-loader" | node ./src/scripts/fetch_package_files.js "README.md" "./generated/loaders" +node ./src/scripts/fetch_package_names.js "babel" "babel-loader" | node ./src/scripts/fetch_package_files.js "README.md" "./generated/loaders" +node ./src/scripts/fetch_package_names.js "postcss" "postcss-loader" | node ./src/scripts/fetch_package_files.js "README.md" "./generated/loaders" +node ./src/scripts/fetch_package_names.js "peerigon" "extract-loader" | node ./src/scripts/fetch_package_files.js "README.md" "./generated/loaders" + +# Fetch webpack-contrib (and various other) plugin repositories +node ./src/scripts/fetch_package_names.js "webpack-contrib" "-webpack-plugin" | node ./src/scripts/fetch_package_files.js "README.md" "./generated/plugins" + +# Fetch sponsors and backers from opencollective +node ./src/scripts/fetch_supporters.js + +# Fetch starter kits +node ./src/scripts/fetch_starter_kits.js diff --git a/scripts/fetch_package_files.js b/src/scripts/fetch_package_files.js old mode 100755 new mode 100644 similarity index 100% rename from scripts/fetch_package_files.js rename to src/scripts/fetch_package_files.js diff --git a/scripts/fetch_package_names.js b/src/scripts/fetch_package_names.js old mode 100755 new mode 100644 similarity index 100% rename from scripts/fetch_package_names.js rename to src/scripts/fetch_package_names.js diff --git a/scripts/fetch_starter_kits.js b/src/scripts/fetch_starter_kits.js old mode 100755 new mode 100644 similarity index 79% rename from scripts/fetch_starter_kits.js rename to src/scripts/fetch_starter_kits.js index 0f250a5d7b53..f2010b38181d --- a/scripts/fetch_starter_kits.js +++ b/src/scripts/fetch_starter_kits.js @@ -5,7 +5,7 @@ const toolList = require('tool-list'); const data = toolList.startersWithTag('webpack'); const body = JSON.stringify(data); -fs.writeFile('./components/starter-kits/starter-kits-data.json', body, err => { +fs.writeFile('./src/components/StarterKits/starter-kits-data.json', body, err => { if (err) { console.error('Failed to write starter kits file: ', err); diff --git a/scripts/fetch_supporters.js b/src/scripts/fetch_supporters.js old mode 100755 new mode 100644 similarity index 81% rename from scripts/fetch_supporters.js rename to src/scripts/fetch_supporters.js index e481e922c993..46557b391c45 --- a/scripts/fetch_supporters.js +++ b/src/scripts/fetch_supporters.js @@ -6,7 +6,7 @@ request('https://opencollective.com/webpack/sponsors.json?requireActive=false', if (err) { console.error('Failed to fetch sponsors: ', err); - } fs.writeFile('./components/support/support-sponsors.json', body, err => { + } fs.writeFile('./src/components/Support/support-sponsors.json', body, err => { if (err) { console.error('Failed to write sponsors file: ', err); @@ -18,7 +18,7 @@ request('https://opencollective.com/webpack/backers.json?requireActive=false', ( if (err) { console.error('Failed to fetch backers: ', err); - } fs.writeFile('./components/support/support-backers.json', body, err => { + } fs.writeFile('./src/components/Support/support-backers.json', body, err => { if (err) { console.error('Failed to write backers file: ', err); diff --git a/styles/fonts.scss b/src/styles/fonts.scss similarity index 100% rename from styles/fonts.scss rename to src/styles/fonts.scss diff --git a/styles/homepage.scss b/src/styles/homepage.scss similarity index 100% rename from styles/homepage.scss rename to src/styles/homepage.scss diff --git a/styles/icon.font.js b/src/styles/icon.font.js similarity index 100% rename from styles/icon.font.js rename to src/styles/icon.font.js diff --git a/styles/icon.template.hbs b/src/styles/icon.template.hbs similarity index 100% rename from styles/icon.template.hbs rename to src/styles/icon.template.hbs diff --git a/styles/icons/chevron-down.svg b/src/styles/icons/chevron-down.svg similarity index 100% rename from styles/icons/chevron-down.svg rename to src/styles/icons/chevron-down.svg diff --git a/styles/icons/chevron-left.svg b/src/styles/icons/chevron-left.svg similarity index 100% rename from styles/icons/chevron-left.svg rename to src/styles/icons/chevron-left.svg diff --git a/styles/icons/chevron-right.svg b/src/styles/icons/chevron-right.svg similarity index 100% rename from styles/icons/chevron-right.svg rename to src/styles/icons/chevron-right.svg diff --git a/styles/icons/chevron-up.svg b/src/styles/icons/chevron-up.svg similarity index 100% rename from styles/icons/chevron-up.svg rename to src/styles/icons/chevron-up.svg diff --git a/styles/icons/cross.svg b/src/styles/icons/cross.svg similarity index 100% rename from styles/icons/cross.svg rename to src/styles/icons/cross.svg diff --git a/styles/icons/edit.svg b/src/styles/icons/edit.svg similarity index 100% rename from styles/icons/edit.svg rename to src/styles/icons/edit.svg diff --git a/styles/icons/exit-right.svg b/src/styles/icons/exit-right.svg old mode 100755 new mode 100644 similarity index 100% rename from styles/icons/exit-right.svg rename to src/styles/icons/exit-right.svg diff --git a/styles/icons/github.svg b/src/styles/icons/github.svg similarity index 100% rename from styles/icons/github.svg rename to src/styles/icons/github.svg diff --git a/styles/icons/gitter.svg b/src/styles/icons/gitter.svg similarity index 100% rename from styles/icons/gitter.svg rename to src/styles/icons/gitter.svg diff --git a/styles/icons/link.svg b/src/styles/icons/link.svg old mode 100755 new mode 100644 similarity index 100% rename from styles/icons/link.svg rename to src/styles/icons/link.svg diff --git a/styles/icons/magnifying-glass.svg b/src/styles/icons/magnifying-glass.svg similarity index 100% rename from styles/icons/magnifying-glass.svg rename to src/styles/icons/magnifying-glass.svg diff --git a/styles/icons/medium.svg b/src/styles/icons/medium.svg old mode 100755 new mode 100644 similarity index 100% rename from styles/icons/medium.svg rename to src/styles/icons/medium.svg diff --git a/styles/icons/menu.svg b/src/styles/icons/menu.svg similarity index 100% rename from styles/icons/menu.svg rename to src/styles/icons/menu.svg diff --git a/styles/icons/stack-overflow.svg b/src/styles/icons/stack-overflow.svg old mode 100755 new mode 100644 similarity index 100% rename from styles/icons/stack-overflow.svg rename to src/styles/icons/stack-overflow.svg diff --git a/styles/icons/vertical-bar.svg b/src/styles/icons/vertical-bar.svg similarity index 100% rename from styles/icons/vertical-bar.svg rename to src/styles/icons/vertical-bar.svg diff --git a/styles/index.scss b/src/styles/index.scss similarity index 100% rename from styles/index.scss rename to src/styles/index.scss diff --git a/styles/markdown.scss b/src/styles/markdown.scss similarity index 100% rename from styles/markdown.scss rename to src/styles/markdown.scss diff --git a/styles/partials/_functions.scss b/src/styles/partials/_functions.scss similarity index 100% rename from styles/partials/_functions.scss rename to src/styles/partials/_functions.scss diff --git a/styles/partials/_mixins.scss b/src/styles/partials/_mixins.scss similarity index 100% rename from styles/partials/_mixins.scss rename to src/styles/partials/_mixins.scss diff --git a/styles/partials/_vars.scss b/src/styles/partials/_vars.scss similarity index 100% rename from styles/partials/_vars.scss rename to src/styles/partials/_vars.scss diff --git a/styles/prism-theme.scss b/src/styles/prism-theme.scss similarity index 100% rename from styles/prism-theme.scss rename to src/styles/prism-theme.scss diff --git a/styles/reset.css b/src/styles/reset.css similarity index 100% rename from styles/reset.css rename to src/styles/reset.css diff --git a/utilities/highlight.js b/src/utilities/highlight.js similarity index 100% rename from utilities/highlight.js rename to src/utilities/highlight.js diff --git a/utilities/markdown.js b/src/utilities/markdown.js similarity index 100% rename from utilities/markdown.js rename to src/utilities/markdown.js diff --git a/utilities/test-local-storage.js b/src/utilities/test-local-storage.js similarity index 100% rename from utilities/test-local-storage.js rename to src/utilities/test-local-storage.js diff --git a/webpack.config.js b/webpack.config.js index b3606f46be42..70857dfe0618 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,8 +7,8 @@ var webpack = require('webpack'); var cwd = process.cwd(); var stylePaths = [ - path.join(cwd, 'styles'), - path.join(cwd, 'components') + path.join(cwd, 'src', 'styles'), + path.join(cwd, 'src', 'components') ]; const commonConfig = { @@ -21,7 +21,7 @@ const commonConfig = { test: /\.jsx?$/, loaders: ['babel-loader', 'eslint-loader'], include: [ - path.join(__dirname, 'components') + path.join(__dirname, 'src', 'components') ] }, { @@ -58,11 +58,11 @@ const commonConfig = { return [ Autoprefixer ]; }, sassLoader: { - includePaths: [ path.join('./styles/partials') ] + includePaths: [ path.join('./src/styles/partials') ] }, plugins: [ new CopyWebpackPlugin([{ - from: './assets', + from: './src/assets', to: './assets' }]) ] diff --git a/yarn.lock b/yarn.lock index 4b8154c49843..6f857fae483e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6141,9 +6141,9 @@ tap-parser@^5.3.2, tap-parser@^5.3.3: optionalDependencies: readable-stream "^2" -"tap-render@github:munter/tap-render#0.1.7-patch1": +tap-render@Munter/tap-render#0.1.7-patch1: version "0.1.7" - resolved "https://codeload.github.com/munter/tap-render/tar.gz/35bf3ac21c4fd2776d8569d5e8a1ab62df1f6d4f" + resolved "https://codeload.github.com/Munter/tap-render/tar.gz/35bf3ac21c4fd2776d8569d5e8a1ab62df1f6d4f" dependencies: jsonify "0.0.0" pause-stream "0.0.7" From 214307566e33278988effac05a7163eb19efc4cc Mon Sep 17 00:00:00 2001 From: Greg Venech Date: Tue, 22 Aug 2017 21:54:39 -0400 Subject: [PATCH 53/61] fix(deploy): fix deploy script after restructuring The location of certain files changed in fd37f672cc. --- src/scripts/deploy.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scripts/deploy.sh b/src/scripts/deploy.sh index 8c6e0ea730d7..7664e2dbad52 100644 --- a/src/scripts/deploy.sh +++ b/src/scripts/deploy.sh @@ -29,10 +29,10 @@ ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key" ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv" ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR} ENCRYPTED_IV=${!ENCRYPTED_IV_VAR} -openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in scripts/deploy_key.enc -out scripts/deploy_key -d -chmod 600 scripts/deploy_key +openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in src/scripts/deploy_key.enc -out src/scripts/deploy_key -d +chmod 600 src/scripts/deploy_key eval `ssh-agent -s` -ssh-add scripts/deploy_key +ssh-add src/scripts/deploy_key # Now that we're all set up, we can deploy npm run deploy From 983b5a690c685f00803c98e182f61438c71b11e8 Mon Sep 17 00:00:00 2001 From: Evilebot Tnawi Date: Wed, 23 Aug 2017 18:49:24 +0300 Subject: [PATCH 54/61] Fix: typo in link --- src/content/api/stats.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/api/stats.md b/src/content/api/stats.md index 49e34fbc7402..dc6acea9584d 100644 --- a/src/content/api/stats.md +++ b/src/content/api/stats.md @@ -81,7 +81,7 @@ Each `chunks` object represents a group of modules known as a [chunk](/glossary# "id": 0, // The ID of this chunk "initial": true, // Indicates whether this chunk is loaded on initial page load or [on demand](/guides/lazy-loading) "modules": [ - // A list of [module objects](#modules-objects) + // A list of [module objects](#module-objects) "web.js?h=11593e3b3ac85436984a" ], "names": [ From bdde876472037f02c5023459892819f72ebc2b5b Mon Sep 17 00:00:00 2001 From: asulaiman Date: Wed, 23 Aug 2017 17:52:43 -0400 Subject: [PATCH 55/61] docs(dev): update how-to-write-a-loader (#1529) Add loader chaining and `resolveLoader` examples. --- .../development/how-to-write-a-loader.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/content/development/how-to-write-a-loader.md b/src/content/development/how-to-write-a-loader.md index 570d44a4aa65..a0022a3139e9 100644 --- a/src/content/development/how-to-write-a-loader.md +++ b/src/content/development/how-to-write-a-loader.md @@ -1,6 +1,8 @@ --- title: How to write a loader? sort: 3 +contributors: + - asulaiman --- A loader is a node module exporting a `function`. @@ -17,6 +19,36 @@ The loader is expected to give back one or two values. The first value is a resu In the complex case, when multiple loaders are chained, only the last loader gets the resource file and only the first loader is expected to give back one or two values (JavaScript and SourceMap). Values that any other loader give back are passed to the previous loader. +In other words, chained loaders are executed in reverse order -- either right to left or bottom to top depending on the format of your array. Lets say you have two loaders that go by the name of `foo-loader` and `bar-loader`. You would like to execute `foo-loader` and then pass the result of the transformation from `foo-loader` finally to `bar-loader`. + +You would add the following in your config file (assuming that both loaders are already defined): + +``` javascript +module: { + rules: [ + { + test: /\.js/, + use: [ + 'bar-loader', + 'foo-loader' + ] + } + ] +} +``` + +Note that webpack currently only searches in your node modules folder for loaders. If these loaders are defined outside your node modules folder you would need to use the `resolveLoader` property to get webpack to include your loaders. For example lets say you have your custom loaders included in a folder called `loaders`. You would have to add the following to your config file: + +``` javascript +resolveLoader: { + modules: [ + 'node_modules', + path_resolve(__dirname, 'loaders') + ] +} +``` + + ## Examples ``` javascript From ac8cf3d434adce230836c6c6e8d48a1031ad75b7 Mon Sep 17 00:00:00 2001 From: Flame Date: Thu, 24 Aug 2017 11:14:54 +0530 Subject: [PATCH 56/61] docs(guides): "behind" to "besides" in asset-management (#1514) --- src/content/guides/asset-management.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/guides/asset-management.md b/src/content/guides/asset-management.md index a99ac3fae71a..5e2bf08aae2b 100644 --- a/src/content/guides/asset-management.md +++ b/src/content/guides/asset-management.md @@ -257,7 +257,7 @@ Time: 895ms [9] ./src/index.js 503 bytes {0} [built] ``` -If all went well, you should now see your icon as a repeating background, as well as an `img` element behind our `Hello webpack` text. If you inspect this element, you'll see that the actual filename has changed to something like `5c999da72346a995e7e2718865d019c8.png`. This means webpack found our file in the `src` folder and processed it! +If all went well, you should now see your icon as a repeating background, as well as an `img` element beside our `Hello webpack` text. If you inspect this element, you'll see that the actual filename has changed to something like `5c999da72346a995e7e2718865d019c8.png`. This means webpack found our file in the `src` folder and processed it! T> A logical next step from here is minifying and optimizing your images. Check out the [image-webpack-loader](https://github.com/tcoopman/image-webpack-loader) and [url-loader](/loaders/url-loader) for more on how you can enhance your image loading process. From ddb32f2f46ec87a635aeccdd4fa5cacfa4092e36 Mon Sep 17 00:00:00 2001 From: Srinivas Lade Date: Thu, 24 Aug 2017 01:46:36 -0400 Subject: [PATCH 57/61] docs(concepts): update targets (#1520) Removed the example of a Webpack setup for building to both electron and web because it uses an old plugin for electron-renderer support even though Webpack has native support for target. Added example boilerplate which contains good examples of configuration files for both electron-main and electron-renderer. --- src/content/concepts/targets.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/content/concepts/targets.md b/src/content/concepts/targets.md index 279d45292926..e2425840c2c9 100644 --- a/src/content/concepts/targets.md +++ b/src/content/concepts/targets.md @@ -5,6 +5,7 @@ contributors: - TheLarkInn - rouzbeh84 - johnstew + - srilman --- Because JavaScript can be written for both server and browser, webpack offers multiple deployment _targets_ that you can set in your webpack [configuration](/configuration). @@ -65,6 +66,6 @@ The example above will create a `lib.js` and `lib.node.js` file in your `dist` f As seen from the options above there are multiple different deployment _targets_ that you can choose from. Below is a list of examples, and resources that you can refer to. * **[compare-webpack-target-bundles](https://github.com/TheLarkInn/compare-webpack-target-bundles)**: A great resource for testing and viewing different webpack _targets_. Also great for bug reporting. -* **[Build to both electron.js and browser targets using webpack](https://medium.com/@ad_harmonium/build-to-both-electron-js-and-browser-targets-using-webpack-59266bdb76a)**: An example of a build process using multiple deployment targets with electron and web. +* **[Boilerplate of Electron-React Application](https://github.com/chentsulin/electron-react-boilerplate)**: A good example of a build process for electron's main process and renderer process. ?> Need to find up to date examples of these webpack targets being used in live code or boilerplates. From 4d5eb08e5f1f677a28615491bc5c234e48495431 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 24 Aug 2017 08:13:25 +0200 Subject: [PATCH 58/61] docs(config): improve devtool documentation (#1533) Elaborate on the `devtool` options and explain in more detail how each one affects the output source mapping and compilation speed. fixes #273 fixes webpack/webpack#2725 fixes webpack/webpack#4936 fixes webpack/webpack#2766 fixes webpack/webpack#2145 fixes webpack/webpack#1689 --- src/content/configuration/devtool.md | 84 ++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 23 deletions(-) diff --git a/src/content/configuration/devtool.md b/src/content/configuration/devtool.md index b549bf35c90a..59e37b1c74ba 100644 --- a/src/content/configuration/devtool.md +++ b/src/content/configuration/devtool.md @@ -26,53 +26,91 @@ Choose a style of [source mapping](http://blog.teamtreehouse.com/introduction-so T> The webpack repository contains an [example showing the effect of all `devtool` variants](https://github.com/webpack/webpack/tree/master/examples/source-map). Those examples will likely help you to understand the differences. -devtool | build | rebuild | production | quality ------------------------------ | ----- | ------- | ---------- | ----------------------------- -eval | +++ | +++ | no | generated code -cheap-eval-source-map | + | ++ | no | transformed code (lines only) -cheap-source-map | + | o | yes | transformed code (lines only) -cheap-module-eval-source-map | o | ++ | no | original source (lines only) -cheap-module-source-map | o | - | yes | original source (lines only) -eval-source-map | -- | + | no | original source -source-map | -- | -- | yes | original source -inline-source-map | -- | -- | no | original source -hidden-source-map | -- | -- | yes | original source -nosources-source-map | -- | -- | yes | without source content - -T> `+` means faster, `-` slower and `o` about the same time - -Some of these values are suited for development and some for production. For development you typically want fast Source Maps at the cost of bundle size, but for production you want separate Source Maps that are accurate. +T> Instead of using the `devtool` option you can also use `SourceMapDevToolPlugin`/`EvalSourceMapDevToolPlugin` directly as it has more options. Never use both the `devtool` option and plugin together. The `devtool` option adds the plugin internally so you would end up with the plugin applied twice. + +devtool | build | rebuild | production | quality +------------------------------ | ----- | ------- | ---------- | ----------------------------- +(none) | +++ | +++ | no | bundled code +eval | +++ | +++ | no | generated code +cheap-eval-source-map | + | ++ | no | transformed code (lines only) +cheap-module-eval-source-map | o | ++ | no | original source (lines only) +eval-source-map | -- | + | no | original source +cheap-source-map | + | o | no | transformed code (lines only) +cheap-module-source-map | o | - | no | original source (lines only) +inline-cheap-source-map | + | o | no | transformed code (lines only) +inline-cheap-module-source-map | o | - | no | original source (lines only) +source-map | -- | -- | yes | original source +inline-source-map | -- | -- | no | original source +hidden-source-map | -- | -- | yes | original source +nosources-source-map | -- | -- | yes | without source content + +T> `+++` super fast, `++` fast, `+` pretty fast, `o` medium, `-` pretty slow, `--` slow + +Some of these values are suited for development and some for production. For development you typically want fast Source Maps at the cost of bundle size, but for production you want separate Source Maps that are accurate and support minimizing. W> There are some issues with Source Maps in Chrome. [We need your help!](https://github.com/webpack/webpack/issues/3165). T> See [`output.sourceMapFilename`](/configuration/output#output-sourcemapfilename) to customize the filenames of generated Source Maps. +### Qualities + +`bundled code` - You see all generated code as a big blob of code. You don't see modules separated from each other. + +`generated code` - You see each module separated from each other, annotated with module names. You see the code generated by webpack. Example: Instead of `import {test} from "module"; test();` you see something like `var module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); module__WEBPACK_IMPORTED_MODULE_1__.a();`. + +`transformed code` - You see each module separated from each other, annotated with module names. You see the code before webpack transforms it, but after Loaders transpile it. Example: Instead of `import {test} from "module"; class A extends test {}` you see something like `import {test} from "module"; var A = function(_test) { ... }(test);` + +`original source` - You see each module separated from each other, annotated with module names. You see the code before transpilation, as you authored it. This depends on Loader support. + +`without source content` - Contents for the sources are not included in the Source Maps. Browsers usually try to load the source from the webserver or filesystem. You have to make sure to set [`output.devtoolModuleFilenameTemplate`](/configuration/output/#output-devtoolmodulefilenametemplate) correctly to match source urls. + +`(lines only)` - Source Maps are simplified to a single mapping per line. This usually means a single mapping per statement (assuming you author is this way). This prevents you from debugging execution on statement level and from settings breakpoints on columns of a line. Combining with minimizing is not possible as minimizers usually only emit a single line. + + ### Development The following options are ideal for development: -`eval` - Each module is executed with `eval()` and `//@ sourceURL`. This is pretty fast. The main disadvantage is that it doesn't display line numbers correctly since it gets mapped to transpiled code instead of the original code. +`eval` - Each module is executed with `eval()` and `//@ sourceURL`. This is pretty fast. The main disadvantage is that it doesn't display line numbers correctly since it gets mapped to transpiled code instead of the original code (No Source Maps from Loaders). + +`eval-source-map` - Each module is executed with `eval()` and a SourceMap is added as a DataUrl to the `eval()`. Initially it is slow, but it provides fast rebuild speed and yields real files. Line numbers are correctly mapped since it gets mapped to the original code. It yields the best quality SourceMaps for development. + +`cheap-eval-source-map` - Similar to `eval-source-map`, each module is executed with `eval()`. It is "cheap" because it doesn't have column mappings, it only maps line numbers. It ignores SourceMaps from Loaders and only display transpiled code similar to the `eval` devtool. + +`cheap-module-eval-source-map` - Similar to `cheap-eval-source-map`, however, in this case Source Maps from Loaders are processed for better results. However Loader Source Maps are simplified to a single mapping per line. + +### Special cases + +The following options are not ideal for development nor production. They are needed for some special cases, i. e. for some 3rd party tools. `inline-source-map` - A SourceMap is added as a DataUrl to the bundle. -`eval-source-map` - Each module is executed with `eval()` and a SourceMap is added as a DataUrl to the `eval()`. Initially it is slow, but it provides fast rebuild speed and yields real files. Line numbers are correctly mapped since it gets mapped to the original code. +`cheap-source-map` - A SourceMap without column-mappings ignoring loader Source Maps. -`cheap-eval-source-map` - Similar to `eval-source-map`, each module is executed with `eval()`. However, with this option the Source Map is passed as a Data URL to the `eval()` call. It is "cheap" because it doesn't have column mappings, it only maps line numbers. +`inline-cheap-source-map` - Similar to `cheap-source-map` but SourceMap is added as a DataUrl to the bundle. -`cheap-module-eval-source-map` - Similar to `cheap-eval-source-map`, however, in this case loaders are able to process the mapping for better results. +`cheap-module-source-map` - A SourceMap without column-mappings that simplifies loader Source Maps to a single mapping per line. + +`inline-cheap-module-source-map` - Similar to `cheap-module-source-map` but SourceMap is added as a DataUrl to the bundle. ### Production These options are typically used in production: +`(none)` (Omit the `devtool` option) - No SourceMap is emitted. This is a good option to start with. + `source-map` - A full SourceMap is emitted as a separate file. It adds a reference comment to the bundle so development tools know where to find it. +W> You should configure your server to disallow access to the Source Map file for normal users! + `hidden-source-map` - Same as `source-map`, but doesn't add a reference comment to the bundle. Useful if you only want SourceMaps to map error stack traces from error reports, but don't want to expose your SourceMap for the browser development tools. -`cheap-source-map` - A SourceMap without column-mappings ignoring loaded Source Maps. +W> You should not deploy the Source Map file to the webserver. Instead only use it for error report tooling. + +`nosources-source-map` - A SourceMap is created without the `sourcesContent` in it. It can be used to map stack traces on the client without exposing all of the source code. You can deploy the Source Map file to the webserver. -`cheap-module-source-map` - A SourceMap without column-mappings that simplifies loaded Source Maps to a single mapping per line. +W> It still exposes filenames and structure for decompiling, but it doesn't expose the original code. -`nosources-source-map` - A SourceMap is created without the `sourcesContent` in it. It can be used to map stack traces on the client without exposing all of the source code. +T> When using the `uglifyjs-webpack-plugin` you must provide the `sourceMap: true` option to enable SourceMap support. From f2782aa4e6e5b90c60c3d8930a6ab1dec8e26d64 Mon Sep 17 00:00:00 2001 From: Jeremias Menichelli Date: Thu, 24 Aug 2017 23:05:53 -0300 Subject: [PATCH 59/61] docs(guides): add "polyfills on demand" to shimming (#1528) Add an explanation of how to load polyfills on demand section in the shimming guide. Resolves #938 --- src/content/guides/shimming.md | 85 ++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/content/guides/shimming.md b/src/content/guides/shimming.md index 48a156c08deb..2976c0dcc40c 100644 --- a/src/content/guides/shimming.md +++ b/src/content/guides/shimming.md @@ -5,6 +5,12 @@ contributors: - pksjce - jhnns - simon04 + - jeremenichelli +related: + - title: Reward modern browser users script + url: https://hackernoon.com/10-things-i-learned-making-the-fastest-site-in-the-world-18a0e1cdf4a7#c665 + - title: useBuiltIns in babel-preset-env + url: https://github.com/babel/babel-preset-env#usebuiltins --- `webpack` as a module bundler can understand modules written as ES2015 modules, CommonJS or AMD. But many times, while using third party libraries, we see that they expect dependencies which are global, AKA `$` for `jquery`. They might also be creating global variables which need to be exported. Here we will see different ways to help webpack understand these __broken modules__. @@ -158,3 +164,82 @@ module.exports = { ## Node Built-Ins Node built-ins, like `process`, can be polyfilled right directly from your configuration file without the use of any special loaders or plugins. See the [node configuration page](/configuration/node) for more information and examples. + + +## Loading polyfills on demand + +It's common in web projects to include polyfills in the main bundle. This is not recommended because we are penalizing modern browsers users by making them download a bigger file with unneeded scripts. + +The simplest way to mitigate this is by adding a separate entry point in your webpack config file including the polyfills your project needs. + +```javascript +// webpack.config.js +module.exports = { + entry: { + polyfills: [ + 'babel-polyfill', + 'whatwg-fetch' + ], + main: './src/index.js' + } + // ... rest of your webpack config +}; +``` + +An alternative is to create a new entry file and manually import these packages. + +```javascript +// src/polyfills.js +import 'babel-polyfill'; +import 'whatwg-fetch'; +``` + +```javascript +// webpack.config.js +module.exports = { + entry: { + polyfills: './src/polyfills.js', + main: './src/index.js' + } + // rest of your webpack config +}; +``` + +In your html file you need to conditionally load the `polyfills.js` file before your bundle. How you make this decision depends on the technologies and browsers you need to support. + +```html + +``` + +T> Any script added dynamically like in the example above will run as soon as it's parsed, but we need our polyfill to run before our bundle. This is why we are setting `async` to `false` for each script. + + +### Smaller babel polyfill + +`babel-preset-env` uses [browserslist](https://github.com/ai/browserslist) to transpile only what is not supported in your browsers matrix. This preset comes with the `useBuiltIns` option _(false by default)_ which converts your global `babel-polyfill` import to a more granular feature by feature import pattern like: + +```javascript +import "core-js/modules/es7.string.pad-start"; +import "core-js/modules/es7.string.pad-end"; +import "core-js/modules/web.timers"; +import "core-js/modules/web.immediate"; +import "core-js/modules/web.dom.iterable"; +``` From b17ba0d4626a0b714c38ee700b12bfe6ff712481 Mon Sep 17 00:00:00 2001 From: lizhihua <275091674@qq.com> Date: Fri, 25 Aug 2017 15:59:09 +0800 Subject: [PATCH 60/61] update scripts --- content/configuration/devtool.md | 0 content/guides/public-path.md | 0 scripts/copyfiles.sh | 6 ------ scripts/fetch.sh | 6 ------ 4 files changed, 12 deletions(-) delete mode 100644 content/configuration/devtool.md delete mode 100644 content/guides/public-path.md diff --git a/content/configuration/devtool.md b/content/configuration/devtool.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/content/guides/public-path.md b/content/guides/public-path.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/scripts/copyfiles.sh b/scripts/copyfiles.sh index 722edd1283e4..64f22d0d208e 100755 --- a/scripts/copyfiles.sh +++ b/scripts/copyfiles.sh @@ -7,9 +7,3 @@ mkdir -p ./generated/loaders cp -rf ./content/loaders/ ./generated/loaders mkdir -p ./generated/plugins cp -rf ./content/plugins/ ./generated/plugins - -# Fetch sponsors and backers from opencollective -./scripts/fetch_supporters.js - -# Fetch starter kits -./scripts/fetch_starter_kits.js \ No newline at end of file diff --git a/scripts/fetch.sh b/scripts/fetch.sh index 1e012fb83160..475612c85a00 100755 --- a/scripts/fetch.sh +++ b/scripts/fetch.sh @@ -18,9 +18,3 @@ cp -rf ./content/plugins/ ./generated/plugins rm -rf ./content/loaders/*.json rm -rf ./content/plugins/*.json - -# Fetch sponsors and backers from opencollective -./scripts/fetch_supporters.js - -# Fetch starter kits -./scripts/fetch_starter_kits.js From 77e7f8f44d5f0f84e1fa70e82eb3c7a82417440c Mon Sep 17 00:00:00 2001 From: lizhihua <275091674@qq.com> Date: Fri, 25 Aug 2017 16:02:03 +0800 Subject: [PATCH 61/61] update /about --- {content => src/content}/about.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {content => src/content}/about.md (100%) diff --git a/content/about.md b/src/content/about.md similarity index 100% rename from content/about.md rename to src/content/about.md