├── .gitignore
├── README.md
├── examples
├── chunks
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── a.js
│ │ ├── b.js
│ │ ├── c.js
│ │ ├── image.png
│ │ ├── imageA.png
│ │ ├── imageB.png
│ │ ├── imageC.png
│ │ ├── style.css
│ │ ├── styleA.css
│ │ ├── styleB.css
│ │ └── styleC.css
│ └── webpack.config.js
├── development-environment-setup
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── index.js
│ │ ├── moduleA.js
│ │ ├── moduleB.js
│ │ └── style.css
│ └── webpack.config.js
├── hello-webpack
│ ├── .gitignore
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ ├── package.json
│ ├── src
│ │ └── greeting.js
│ ├── webpack.config.js
│ └── yarn.lock
├── loaders
│ ├── .babelrc
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── index.js
│ └── webpack.config.js
├── multiple-entries
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── account.js
│ │ ├── home.js
│ │ └── user.js
│ └── webpack.config.js
├── optimizations-for-production
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── index.js
│ │ ├── moduleA.js
│ │ ├── moduleB.js
│ │ └── style.css
│ └── webpack.config.js
├── styles
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── index.css
│ │ └── index.js
│ ├── webpack.autoprefixer.config.js
│ ├── webpack.extracttext.config.js
│ └── webpack.styles.config.js
└── vendors
│ ├── README.md
│ ├── package.json
│ ├── src
│ └── index.js
│ └── webpack.config.js
├── package.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Runtime data
7 | pids
8 | *.pid
9 | *.seed
10 |
11 | # Directory for instrumented libs generated by jscoverage/JSCover
12 | lib-cov
13 |
14 | # Coverage directory used by tools like istanbul
15 | coverage
16 |
17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
18 | .grunt
19 |
20 | # node-waf configuration
21 | .lock-wscript
22 |
23 | # Compiled binary addons (http://nodejs.org/api/addons.html)
24 | build/Release
25 |
26 | # Dependency directory
27 | # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
28 | node_modules
29 |
30 | # Optional npm cache directory
31 | .npm
32 |
33 | # Optional REPL history
34 | .node_repl_history
35 |
36 | # Bundle directory
37 | dist
38 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://codeclimate.com/github/danderu/learn-webpack)
2 |
3 | ---
4 |
5 | **(Jul 2020) learn-webpack is not maintained anymore**. I created this repository 5 years ago, when I was learning how to use Webpack and the documentation was poor and confusing. Since back then the community has done a great effort and I think [Webpack documentation](https://webpack.js.org/concepts/) has become one of the best resources to learn how to use this library. Please go there to learn it, and feel free to write an issue or send me a message if you need my support with any of the examples I added in this repository.
6 |
7 | ---
8 |
9 | # Learn Webpack
10 | [Webpack](https://webpack.github.io/) helps you managing dependencies in your project, and also offers a friendly and fast development environment, simplifying a lot of common tasks behind a simple configuration file.
11 |
12 | It also allows you to bundle your modules into static assets for browsers. Its killer feature is the known as hot module replacement, which lets your live code in the browser update automatically as you change files in your preferred editor without a page reload.
13 |
14 | Unfortunately, webpack doc pages are not friendly enough for beginners like me. That's why I decided to create this repository: to help people to learn webpack with a collection of exercises and examples.
15 |
16 | ## How to use this repository
17 | First of all, clone or fork this repository. If you are not used with npm or git, This is what you basically need to do:
18 |
19 | The examples in this repository use [yarn](https://yarnpkg.com/en/) as dependecy package manager, to take advantage of yarn's cache, since most of them reuse the same dependencies. In the examples it is assumed that you've already [installed yarn](https://yarnpkg.com/en/docs/install), although it's not mandatory. You could always do `npm install` to install the dependencies in every example.
20 |
21 | ```
22 | git clone git@github.com:danderu/learn-webpack.git
23 | cd learn-webpack
24 | cd examples/some_example_directory
25 | yarn
26 | ```
27 |
28 | If you need more information about forking a repository, follow this [guide](https://help.github.com/articles/fork-a-repo/).
29 |
30 | ## Repository index
31 | Navigate into the example folders to find out the different webpack configuration examples to help you get started with this module bundler. You will learn about the different configuration possibilities, from the simplest one to the most advanced configuration for deploying into production your bundles.
32 |
33 | * [Example 1: Hello world! with Webpack](https://github.com/danderu/learn-webpack/tree/master/examples/hello-webpack)
34 | * [Example 2: Multiple entries](https://github.com/danderu/learn-webpack/tree/master/examples/multiple-entries)
35 | * [Example 3: Loaders](https://github.com/danderu/learn-webpack/tree/master/examples/loaders)
36 | * [Example 4: Styles](https://github.com/danderu/learn-webpack/tree/master/examples/styles)
37 | * [Example 5: Chunks](https://github.com/danderu/learn-webpack/tree/master/examples/chunks)
38 | * [Example 6: Vendors](https://github.com/danderu/learn-webpack/tree/master/examples/vendors)
39 | * [Example 7: Development environment setup](https://github.com/danderu/learn-webpack/tree/master/examples/development-environment-setup)
40 | * [Example 8: Optimizations for production](https://github.com/danderu/learn-webpack/tree/master/optimizations-for-production)
41 |
42 | ## How to collaborate
43 | Please feel free to propose new examples or ask for help with any configuration you are trying to learn.
44 |
45 | ## License
46 | MIT
47 |
--------------------------------------------------------------------------------
/examples/chunks/README.md:
--------------------------------------------------------------------------------
1 | # Commons chunk
2 |
3 | In the following example we have three modules: `a`, `b` and `c`. Every one of them has its own css stylesheet and all of them are sharing a base stylesheet. The only difference is that, while `a` and `b` are requiring the base style sheet directly in the JavaScript module using `require()`, `c` is importing it via css `@import`.
4 |
5 | ## The CommonsChunkPlugin
6 | The `webpack.config.js` file has already configured one of the most useful plugins for Webpack: `CommonsChunkPlugin`. It extracts the common content of the provided entry points into a separate bundle, and works with JavaScript, css and other file types, such as images (with the appropiate loader).
7 |
8 | We've configured the three entry points for our application:
9 |
10 | ```javascript
11 | entry: {
12 | A: './a',
13 | B: './b',
14 | C: './c',
15 | }
16 | ```
17 | In the `plugins` section, you can find the `CommonsChunkPlugin` configured to extract the common code of `A` and `B` entries, but not `C`:
18 |
19 | ```javascript
20 | new CommonsChunkPlugin('commons', 'commons.js', ['A', 'B']),
21 | ```
22 | Also, we've configured an additional loader, for managing files (such as images):
23 | ```javascript
24 | loaders: [{
25 | test: /\.css$/,
26 | loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
27 | }, {
28 | test: /\.png$/,
29 | loader: 'file-loader'
30 | }]
31 | ```
32 | As you can see, loaders can also be provided as an array.
33 |
34 | If you type `npm run dist` in your terminal, you should see the power of Webpack in action. It should generate the following files:
35 |
36 | - `commons.js`: A file with the common javascript code shared between `A.js` and `B.js` modules.
37 | - `common.css`: The same for the `css` code.
38 | - `A.js`, `B.js` and `C.js`: One bundle is generated for each entry configured in webpack. Notice that, since the C entry is not included in the `CommonsChunkPlugin`, it has a significant amount of code compared with the others.
39 | - `A.css`, `B.css` and `C.css`: Once again, the same for the `css` code.
40 | - One png file: there is only one because the Webpack [`file-loader`](https://github.com/webpack/file-loader) calculates the hash of the file for every image file, and the three images in this example are exactly the same :) But it's interesting to see how it replaces the file name in the generated `css` files.
41 |
42 | It may be a good idea to play with this example removing the `CommonsChunkPlugin` configuration and comparing the generated bundles with the previous ones.
43 |
--------------------------------------------------------------------------------
/examples/chunks/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "learn-webpack",
3 | "version": "0.0.1",
4 | "description": "An example repository for webpack newbies",
5 | "main": "src/a.js",
6 | "scripts": {
7 | "dist": "webpack"
8 | },
9 | "keywords": [
10 | "webpack"
11 | ],
12 | "author": "daniel.delacruz@scmspain.com",
13 | "license": "MIT",
14 | "devDependencies": {
15 | "css-loader": "^0.21.0",
16 | "extract-text-webpack-plugin": "^0.8.2",
17 | "file-loader": "^0.8.4",
18 | "style-loader": "^0.13.0",
19 | "webpack": "^1.12.2"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/chunks/src/a.js:
--------------------------------------------------------------------------------
1 | require("./style.css");
2 | require("./styleA.css");
--------------------------------------------------------------------------------
/examples/chunks/src/b.js:
--------------------------------------------------------------------------------
1 | require("./style.css");
2 | require("./styleB.css");
--------------------------------------------------------------------------------
/examples/chunks/src/c.js:
--------------------------------------------------------------------------------
1 | require("./styleC.css");
--------------------------------------------------------------------------------
/examples/chunks/src/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delacruz-dev/learn-webpack/34852fbdf4f69d28392a3c58072bfd7c8ed9cd17/examples/chunks/src/image.png
--------------------------------------------------------------------------------
/examples/chunks/src/imageA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delacruz-dev/learn-webpack/34852fbdf4f69d28392a3c58072bfd7c8ed9cd17/examples/chunks/src/imageA.png
--------------------------------------------------------------------------------
/examples/chunks/src/imageB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delacruz-dev/learn-webpack/34852fbdf4f69d28392a3c58072bfd7c8ed9cd17/examples/chunks/src/imageB.png
--------------------------------------------------------------------------------
/examples/chunks/src/imageC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delacruz-dev/learn-webpack/34852fbdf4f69d28392a3c58072bfd7c8ed9cd17/examples/chunks/src/imageC.png
--------------------------------------------------------------------------------
/examples/chunks/src/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: url(image.png);
3 | }
--------------------------------------------------------------------------------
/examples/chunks/src/styleA.css:
--------------------------------------------------------------------------------
1 | .a {
2 | background: url(imageA.png);
3 | }
--------------------------------------------------------------------------------
/examples/chunks/src/styleB.css:
--------------------------------------------------------------------------------
1 | .b {
2 | background: url(imageB.png);
3 | }
--------------------------------------------------------------------------------
/examples/chunks/src/styleC.css:
--------------------------------------------------------------------------------
1 | @import "style.css";
2 | .c {
3 | background: url(imageC.png);
4 | }
--------------------------------------------------------------------------------
/examples/chunks/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
3 | var ExtractTextPlugin = require('extract-text-webpack-plugin');
4 |
5 | module.exports = {
6 | context: __dirname + '/src',
7 | entry: {
8 | A: './a',
9 | B: './b',
10 | C: './c',
11 | },
12 | output: {
13 | path: path.join(__dirname, 'dist'),
14 | filename: '[name].js'
15 | },
16 | module: {
17 | loaders: [{
18 | test: /\.css$/,
19 | loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
20 | }, {
21 | test: /\.png$/,
22 | loader: 'file-loader'
23 | }]
24 | },
25 | plugins: [
26 | new CommonsChunkPlugin('commons', 'commons.js', ['A', 'B']),
27 | new ExtractTextPlugin('[name].css')
28 | ]
29 | };
--------------------------------------------------------------------------------
/examples/development-environment-setup/README.md:
--------------------------------------------------------------------------------
1 | # Setting up a development environment
2 | Another one of the great features that offers the Webpack ecosystem comes when setting up a development environment, using `webpack-dev-server` and its `hot module replacement`.
3 |
4 | This tandem allows us to test our developments without releasing into production and with a very simple configuration. While the `webpack-dev-server` creates a local http server for our pages and static assets, `hot module replacement` keeps track of the changes in the sources and re-generates the bundles(s) on the fly. Since the bundles are kept in memory and are not written into disk, all the changes are doing really fast.
5 |
6 | ## Configuring the webpack dev server
7 | First of all, we've added a new script in our `package.json` to start a local development environment using `webpack-dev-server`. To try it out, hit:
8 | ```
9 | $ npm start
10 | ```
11 |
12 | The Webpack dev server uses the same configuration than the Webpack module bundler by default (although we can provide a different one). The following configuration in our `webpack.config.js` enables the usage of webpack dev server. This is one of the simplest configurations possible, but it is good enough to show its potential.
13 | ```javascript
14 | devServer: {
15 | port: 3000,
16 | stats: { colors: true },
17 | inline: true,
18 | publicPath: '/dist/'
19 | },
20 | ```
21 | Every dev server properties are contained under the `devServer` property in the config file. It has the following settings:
22 |
23 | - `port`: The port in our localhost where the server will start. In the example, we'll be able to access our server introducing the url [http://localhost:3000](http://localhost:3000) in a browser.
24 | - `stats`: It just makes the output in the terminal more reader friendly.
25 | - `inline`: Enables the inline mode, allowing you to navigate directly to [http://localhost:3000](http://localhost:3000) to test your app. Otherwise, you would have to access [http://localhost:3000/webpack-dev-server/](http://localhost:3000/webpack-dev-server/) and your app would be displayed in an iframe. Both options are available in `inline` mode.
26 | - `publicPath`: Sets the URI path to access the generated static assets via client browser.
27 |
28 | ## Configuring the Hot Module Replacement
29 | The hot module replacement works as a plugin for webpack, and as a plugin, we must configure it in its corresponding section of the `webpack.config.js` file.
30 | ```javascript
31 | plugins: [
32 | new webpack.HotModuleReplacementPlugin()
33 | ]
34 | ```
35 | That's it. There is not more relevant configurations for making it work and starting the magic. It just will watch your files for changes and automatically reload the browser window. Since it is incredibly fast, it boosts your development experience to the top level.
36 |
--------------------------------------------------------------------------------
/examples/development-environment-setup/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "learn-webpack",
3 | "version": "0.0.1",
4 | "description": "An example repository for webpack newbies",
5 | "main": "dist/main.js",
6 | "scripts": {
7 | "dist": "webpack",
8 | "start": "webpack-dev-server"
9 | },
10 | "keywords": [
11 | "webpack"
12 | ],
13 | "author": "daniel.delacruz@scmspain.com",
14 | "license": "MIT",
15 | "devDependencies": {
16 | "css-loader": "^0.21.0",
17 | "style-loader": "^0.13.0",
18 | "webpack-dev-server": "^1.12.1",
19 | "webpack": "1.12.2"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/development-environment-setup/src/index.js:
--------------------------------------------------------------------------------
1 | require('./style.css');
2 | require('./moduleA.js');
3 | require('./moduleB.js');
--------------------------------------------------------------------------------
/examples/development-environment-setup/src/moduleA.js:
--------------------------------------------------------------------------------
1 |
2 | var newDiv = document.createElement("div");
3 | var newContent = document.createTextNode("Hi there! I'm module A!");
4 | newDiv.appendChild(newContent);
5 | document.body.appendChild(newDiv);
--------------------------------------------------------------------------------
/examples/development-environment-setup/src/moduleB.js:
--------------------------------------------------------------------------------
1 |
2 | var newDiv = document.createElement("div");
3 | var newContent = document.createTextNode("Hi there! I'm module B!");
4 | newDiv.appendChild(newContent);
5 | document.body.appendChild(newDiv);
--------------------------------------------------------------------------------
/examples/development-environment-setup/src/style.css:
--------------------------------------------------------------------------------
1 | body{
2 | background: pink;
3 | }
--------------------------------------------------------------------------------
/examples/development-environment-setup/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var webpack = require('webpack');
3 |
4 | var APP_PATH = path.join(__dirname, '/src');
5 |
6 | module.exports = {
7 | context: APP_PATH,
8 | entry: './',
9 | output: {
10 | path: path.join(__dirname, 'dist'),
11 | filename: '[name].js',
12 | publicPath: 'http://localhost:3000/dist'
13 | },
14 | module: {
15 | loaders: [
16 | {
17 | test: /\.css$/,
18 | loaders: ['style', 'css'],
19 | include: APP_PATH
20 | }
21 | ]
22 | },
23 | devServer: {
24 | port: 3000,
25 | stats: { colors: true },
26 | inline: true,
27 | publicPath: '/dist/'
28 | },
29 | plugins: [
30 | new webpack.HotModuleReplacementPlugin()
31 | ]
32 | };
--------------------------------------------------------------------------------
/examples/hello-webpack/.gitignore:
--------------------------------------------------------------------------------
1 | bundle.js
2 |
--------------------------------------------------------------------------------
/examples/hello-webpack/README.md:
--------------------------------------------------------------------------------
1 | # Hello World! with Webpack 2
2 |
3 | Webpack can work with just command line interpreter (CLI) commands and also providing a configuration file. I prefer the second approach, since it's hard for me to remember every tool specific commands, and also I like to have versioned my configurations in a file rather than in my head. If you are curious about the possibilities that the Webpack CLI offers, you can always type in your terminal:
4 |
5 | ```sh
6 | > Webpack --help
7 | ```
8 | Anyways, what we are going to see in this example is the simplest configuration possible for a Webpack config file.
9 |
10 | ## Running Webpack as a npm script
11 | If you open the `package.json`, you'll see that there's a `build` script to execute Webpack. Let's try webpack! In your terminal, just type:
12 |
13 | ```sh
14 | > npm run build
15 | ```
16 |
17 | If it doesn't work, please double check that you've installed all the dependencies by executin `yarn` or `npm install`.
18 |
19 | If you already installed everything, the previous command should generate the following output:
20 |
21 | ```sh
22 | > npm run build
23 |
24 | > @ build /learn-Webpack/examples/hello-Webpack
25 | > webpack
26 |
27 | Hash: 1cfdc05ae11fc4058e39
28 | Version: Webpack 2.2.1
29 | Time: 71ms
30 | Asset Size Chunks Chunk Names
31 | bundle.js 2.89 kB 0 [emitted] main
32 | [0] ./src/greeting.js 38 bytes {0} [built]
33 | [1] ./src/index.js 148 bytes {0} [built]
34 | ```
35 |
36 | You should see the resulting `bundle.js` file created under in the root folder. It is a good practice to open it and try to read it. Since version 2 and above, the output contains useful comments to help you to understand what Webpack is doing with your code. As you can see, Webpack introduces some noise in your generated bundle, but this is something we will optimize in the following examples.
37 |
38 | ### Testing your bundle
39 | If you want to test if your generated bundle works in a browser, just open the `index.html` file located at the root of this directory in your prefered web browser, or:
40 |
41 | ```sh
42 | > open index.html
43 | ```
44 |
45 | ## The Webpack configuration file
46 | The Webpack configuration file is the place where Webpack gets all the instructions to know how to handle the dependencies of your application and how to bundle them. It exports a node module with a plain JavaScript Object containing entries for every configuration setting.
47 |
48 | If you don't provide a Webpack configuration file name, Webpack by **default** will look up in the execution directory for a `webpack.config.js` file. In case you want to place this file in a different directory or give it a custom name, you can parameterize it via CLI:
49 |
50 | ```sh
51 | > webpack --config ./some/custom/folder/custom.config.js
52 | ```
53 |
54 | Please notice that the previous command could also be configured as a npm script.
55 |
56 | Let's take a closer look to the only two required configuration entries in the webpack config:
57 |
58 | ### `entry`
59 | It sets the entry point of your application. The starting file to indicate webpack where's your app and which modules does it need to resolve. Webpack look in the specified path. By default, Webpack assumes the file extension if you don't specify it, to be `.js` (JavaScript). Webpack loads JavaScript by default. To load other filetypes, you'll need a dedicated loader. We'll talk about loader in the following examples.
60 |
61 | By default, it will load a `index.js` file if it finds one in the provided path, as **Node.JS** does when requiring modules. In the example, I've written `index` on purpose, to make it more understandable, but I could also have written:
62 |
63 | ```javascript
64 | entry: '.'
65 | ```
66 |
67 | ### `output`
68 | The `output` property is used to set the file name for your bundle. `filename` is the only required setting, but in the following examples we'll see how important is it to shape how your resultant modules look like.
69 |
--------------------------------------------------------------------------------
/examples/hello-webpack/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Webpack example
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/examples/hello-webpack/index.js:
--------------------------------------------------------------------------------
1 | const greeting = require('./src/greeting')
2 |
3 | const element = window.document.createElement('h3')
4 | element.innerHTML = greeting
5 | window.document.body.appendChild(element)
6 |
--------------------------------------------------------------------------------
/examples/hello-webpack/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "src/index.js",
3 | "scripts": {
4 | "build": "webpack"
5 | },
6 | "devDependencies": {
7 | "webpack": "^2.2.1"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/examples/hello-webpack/src/greeting.js:
--------------------------------------------------------------------------------
1 | module.exports = 'Hello, World!'
2 |
--------------------------------------------------------------------------------
/examples/hello-webpack/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | entry: './index.js',
3 | output: {
4 | filename: 'bundle.js'
5 | }
6 | };
7 |
--------------------------------------------------------------------------------
/examples/hello-webpack/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abbrev@1:
6 | version "1.1.0"
7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
8 |
9 | acorn-dynamic-import@^2.0.0:
10 | version "2.0.2"
11 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
12 | dependencies:
13 | acorn "^4.0.3"
14 |
15 | acorn@^4.0.3, acorn@^4.0.4:
16 | version "4.0.11"
17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
18 |
19 | ajv-keywords@^1.1.1:
20 | version "1.5.1"
21 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
22 |
23 | ajv@^4.7.0, ajv@^4.9.1:
24 | version "4.11.5"
25 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd"
26 | dependencies:
27 | co "^4.6.0"
28 | json-stable-stringify "^1.0.1"
29 |
30 | align-text@^0.1.1, align-text@^0.1.3:
31 | version "0.1.4"
32 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
33 | dependencies:
34 | kind-of "^3.0.2"
35 | longest "^1.0.1"
36 | repeat-string "^1.5.2"
37 |
38 | ansi-regex@^2.0.0:
39 | version "2.1.1"
40 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
41 |
42 | anymatch@^1.3.0:
43 | version "1.3.0"
44 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
45 | dependencies:
46 | arrify "^1.0.0"
47 | micromatch "^2.1.5"
48 |
49 | aproba@^1.0.3:
50 | version "1.1.1"
51 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
52 |
53 | are-we-there-yet@~1.1.2:
54 | version "1.1.2"
55 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
56 | dependencies:
57 | delegates "^1.0.0"
58 | readable-stream "^2.0.0 || ^1.1.13"
59 |
60 | arr-diff@^2.0.0:
61 | version "2.0.0"
62 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
63 | dependencies:
64 | arr-flatten "^1.0.1"
65 |
66 | arr-flatten@^1.0.1:
67 | version "1.0.1"
68 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
69 |
70 | array-unique@^0.2.1:
71 | version "0.2.1"
72 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
73 |
74 | arrify@^1.0.0:
75 | version "1.0.1"
76 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
77 |
78 | asn1.js@^4.0.0:
79 | version "4.9.1"
80 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
81 | dependencies:
82 | bn.js "^4.0.0"
83 | inherits "^2.0.1"
84 | minimalistic-assert "^1.0.0"
85 |
86 | asn1@~0.2.3:
87 | version "0.2.3"
88 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
89 |
90 | assert-plus@1.0.0, assert-plus@^1.0.0:
91 | version "1.0.0"
92 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
93 |
94 | assert-plus@^0.2.0:
95 | version "0.2.0"
96 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
97 |
98 | assert@^1.1.1:
99 | version "1.4.1"
100 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
101 | dependencies:
102 | util "0.10.3"
103 |
104 | async-each@^1.0.0:
105 | version "1.0.1"
106 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
107 |
108 | async@^2.1.2:
109 | version "2.1.5"
110 | resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc"
111 | dependencies:
112 | lodash "^4.14.0"
113 |
114 | asynckit@^0.4.0:
115 | version "0.4.0"
116 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
117 |
118 | aws-sign2@~0.6.0:
119 | version "0.6.0"
120 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
121 |
122 | aws4@^1.2.1:
123 | version "1.6.0"
124 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
125 |
126 | balanced-match@^0.4.1:
127 | version "0.4.2"
128 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
129 |
130 | base64-js@^1.0.2:
131 | version "1.2.0"
132 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
133 |
134 | bcrypt-pbkdf@^1.0.0:
135 | version "1.0.1"
136 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
137 | dependencies:
138 | tweetnacl "^0.14.3"
139 |
140 | big.js@^3.1.3:
141 | version "3.1.3"
142 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
143 |
144 | binary-extensions@^1.0.0:
145 | version "1.8.0"
146 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
147 |
148 | block-stream@*:
149 | version "0.0.9"
150 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
151 | dependencies:
152 | inherits "~2.0.0"
153 |
154 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
155 | version "4.11.6"
156 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
157 |
158 | boom@2.x.x:
159 | version "2.10.1"
160 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
161 | dependencies:
162 | hoek "2.x.x"
163 |
164 | brace-expansion@^1.0.0:
165 | version "1.1.6"
166 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
167 | dependencies:
168 | balanced-match "^0.4.1"
169 | concat-map "0.0.1"
170 |
171 | braces@^1.8.2:
172 | version "1.8.5"
173 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
174 | dependencies:
175 | expand-range "^1.8.1"
176 | preserve "^0.2.0"
177 | repeat-element "^1.1.2"
178 |
179 | brorand@^1.0.1:
180 | version "1.1.0"
181 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
182 |
183 | browserify-aes@^1.0.0, browserify-aes@^1.0.4:
184 | version "1.0.6"
185 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
186 | dependencies:
187 | buffer-xor "^1.0.2"
188 | cipher-base "^1.0.0"
189 | create-hash "^1.1.0"
190 | evp_bytestokey "^1.0.0"
191 | inherits "^2.0.1"
192 |
193 | browserify-cipher@^1.0.0:
194 | version "1.0.0"
195 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
196 | dependencies:
197 | browserify-aes "^1.0.4"
198 | browserify-des "^1.0.0"
199 | evp_bytestokey "^1.0.0"
200 |
201 | browserify-des@^1.0.0:
202 | version "1.0.0"
203 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
204 | dependencies:
205 | cipher-base "^1.0.1"
206 | des.js "^1.0.0"
207 | inherits "^2.0.1"
208 |
209 | browserify-rsa@^4.0.0:
210 | version "4.0.1"
211 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
212 | dependencies:
213 | bn.js "^4.1.0"
214 | randombytes "^2.0.1"
215 |
216 | browserify-sign@^4.0.0:
217 | version "4.0.0"
218 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f"
219 | dependencies:
220 | bn.js "^4.1.1"
221 | browserify-rsa "^4.0.0"
222 | create-hash "^1.1.0"
223 | create-hmac "^1.1.2"
224 | elliptic "^6.0.0"
225 | inherits "^2.0.1"
226 | parse-asn1 "^5.0.0"
227 |
228 | browserify-zlib@^0.1.4:
229 | version "0.1.4"
230 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
231 | dependencies:
232 | pako "~0.2.0"
233 |
234 | buffer-shims@^1.0.0:
235 | version "1.0.0"
236 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
237 |
238 | buffer-xor@^1.0.2:
239 | version "1.0.3"
240 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
241 |
242 | buffer@^4.3.0:
243 | version "4.9.1"
244 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
245 | dependencies:
246 | base64-js "^1.0.2"
247 | ieee754 "^1.1.4"
248 | isarray "^1.0.0"
249 |
250 | builtin-modules@^1.0.0:
251 | version "1.1.1"
252 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
253 |
254 | builtin-status-codes@^3.0.0:
255 | version "3.0.0"
256 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
257 |
258 | camelcase@^1.0.2:
259 | version "1.2.1"
260 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
261 |
262 | camelcase@^3.0.0:
263 | version "3.0.0"
264 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
265 |
266 | caseless@~0.12.0:
267 | version "0.12.0"
268 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
269 |
270 | center-align@^0.1.1:
271 | version "0.1.3"
272 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
273 | dependencies:
274 | align-text "^0.1.3"
275 | lazy-cache "^1.0.3"
276 |
277 | chokidar@^1.4.3:
278 | version "1.6.1"
279 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
280 | dependencies:
281 | anymatch "^1.3.0"
282 | async-each "^1.0.0"
283 | glob-parent "^2.0.0"
284 | inherits "^2.0.1"
285 | is-binary-path "^1.0.0"
286 | is-glob "^2.0.0"
287 | path-is-absolute "^1.0.0"
288 | readdirp "^2.0.0"
289 | optionalDependencies:
290 | fsevents "^1.0.0"
291 |
292 | cipher-base@^1.0.0, cipher-base@^1.0.1:
293 | version "1.0.3"
294 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
295 | dependencies:
296 | inherits "^2.0.1"
297 |
298 | cliui@^2.1.0:
299 | version "2.1.0"
300 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
301 | dependencies:
302 | center-align "^0.1.1"
303 | right-align "^0.1.1"
304 | wordwrap "0.0.2"
305 |
306 | cliui@^3.2.0:
307 | version "3.2.0"
308 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
309 | dependencies:
310 | string-width "^1.0.1"
311 | strip-ansi "^3.0.1"
312 | wrap-ansi "^2.0.0"
313 |
314 | co@^4.6.0:
315 | version "4.6.0"
316 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
317 |
318 | code-point-at@^1.0.0:
319 | version "1.1.0"
320 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
321 |
322 | combined-stream@^1.0.5, combined-stream@~1.0.5:
323 | version "1.0.5"
324 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
325 | dependencies:
326 | delayed-stream "~1.0.0"
327 |
328 | concat-map@0.0.1:
329 | version "0.0.1"
330 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
331 |
332 | console-browserify@^1.1.0:
333 | version "1.1.0"
334 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
335 | dependencies:
336 | date-now "^0.1.4"
337 |
338 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
339 | version "1.1.0"
340 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
341 |
342 | constants-browserify@^1.0.0:
343 | version "1.0.0"
344 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
345 |
346 | core-util-is@~1.0.0:
347 | version "1.0.2"
348 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
349 |
350 | create-ecdh@^4.0.0:
351 | version "4.0.0"
352 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
353 | dependencies:
354 | bn.js "^4.1.0"
355 | elliptic "^6.0.0"
356 |
357 | create-hash@^1.1.0, create-hash@^1.1.1:
358 | version "1.1.2"
359 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
360 | dependencies:
361 | cipher-base "^1.0.1"
362 | inherits "^2.0.1"
363 | ripemd160 "^1.0.0"
364 | sha.js "^2.3.6"
365 |
366 | create-hmac@^1.1.0, create-hmac@^1.1.2:
367 | version "1.1.4"
368 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
369 | dependencies:
370 | create-hash "^1.1.0"
371 | inherits "^2.0.1"
372 |
373 | cryptiles@2.x.x:
374 | version "2.0.5"
375 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
376 | dependencies:
377 | boom "2.x.x"
378 |
379 | crypto-browserify@^3.11.0:
380 | version "3.11.0"
381 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
382 | dependencies:
383 | browserify-cipher "^1.0.0"
384 | browserify-sign "^4.0.0"
385 | create-ecdh "^4.0.0"
386 | create-hash "^1.1.0"
387 | create-hmac "^1.1.0"
388 | diffie-hellman "^5.0.0"
389 | inherits "^2.0.1"
390 | pbkdf2 "^3.0.3"
391 | public-encrypt "^4.0.0"
392 | randombytes "^2.0.0"
393 |
394 | dashdash@^1.12.0:
395 | version "1.14.1"
396 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
397 | dependencies:
398 | assert-plus "^1.0.0"
399 |
400 | date-now@^0.1.4:
401 | version "0.1.4"
402 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
403 |
404 | debug@~2.2.0:
405 | version "2.2.0"
406 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
407 | dependencies:
408 | ms "0.7.1"
409 |
410 | decamelize@^1.0.0, decamelize@^1.1.1:
411 | version "1.2.0"
412 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
413 |
414 | deep-extend@~0.4.0:
415 | version "0.4.1"
416 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
417 |
418 | delayed-stream@~1.0.0:
419 | version "1.0.0"
420 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
421 |
422 | delegates@^1.0.0:
423 | version "1.0.0"
424 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
425 |
426 | des.js@^1.0.0:
427 | version "1.0.0"
428 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
429 | dependencies:
430 | inherits "^2.0.1"
431 | minimalistic-assert "^1.0.0"
432 |
433 | diffie-hellman@^5.0.0:
434 | version "5.0.2"
435 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
436 | dependencies:
437 | bn.js "^4.1.0"
438 | miller-rabin "^4.0.0"
439 | randombytes "^2.0.0"
440 |
441 | domain-browser@^1.1.1:
442 | version "1.1.7"
443 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
444 |
445 | ecc-jsbn@~0.1.1:
446 | version "0.1.1"
447 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
448 | dependencies:
449 | jsbn "~0.1.0"
450 |
451 | elliptic@^6.0.0:
452 | version "6.4.0"
453 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
454 | dependencies:
455 | bn.js "^4.4.0"
456 | brorand "^1.0.1"
457 | hash.js "^1.0.0"
458 | hmac-drbg "^1.0.0"
459 | inherits "^2.0.1"
460 | minimalistic-assert "^1.0.0"
461 | minimalistic-crypto-utils "^1.0.0"
462 |
463 | emojis-list@^2.0.0:
464 | version "2.1.0"
465 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
466 |
467 | enhanced-resolve@^3.0.0:
468 | version "3.1.0"
469 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec"
470 | dependencies:
471 | graceful-fs "^4.1.2"
472 | memory-fs "^0.4.0"
473 | object-assign "^4.0.1"
474 | tapable "^0.2.5"
475 |
476 | errno@^0.1.3:
477 | version "0.1.4"
478 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
479 | dependencies:
480 | prr "~0.0.0"
481 |
482 | error-ex@^1.2.0:
483 | version "1.3.1"
484 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
485 | dependencies:
486 | is-arrayish "^0.2.1"
487 |
488 | events@^1.0.0:
489 | version "1.1.1"
490 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
491 |
492 | evp_bytestokey@^1.0.0:
493 | version "1.0.0"
494 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
495 | dependencies:
496 | create-hash "^1.1.1"
497 |
498 | expand-brackets@^0.1.4:
499 | version "0.1.5"
500 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
501 | dependencies:
502 | is-posix-bracket "^0.1.0"
503 |
504 | expand-range@^1.8.1:
505 | version "1.8.2"
506 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
507 | dependencies:
508 | fill-range "^2.1.0"
509 |
510 | extend@~3.0.0:
511 | version "3.0.0"
512 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
513 |
514 | extglob@^0.3.1:
515 | version "0.3.2"
516 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
517 | dependencies:
518 | is-extglob "^1.0.0"
519 |
520 | extsprintf@1.0.2:
521 | version "1.0.2"
522 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
523 |
524 | filename-regex@^2.0.0:
525 | version "2.0.0"
526 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
527 |
528 | fill-range@^2.1.0:
529 | version "2.2.3"
530 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
531 | dependencies:
532 | is-number "^2.1.0"
533 | isobject "^2.0.0"
534 | randomatic "^1.1.3"
535 | repeat-element "^1.1.2"
536 | repeat-string "^1.5.2"
537 |
538 | find-up@^1.0.0:
539 | version "1.1.2"
540 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
541 | dependencies:
542 | path-exists "^2.0.0"
543 | pinkie-promise "^2.0.0"
544 |
545 | for-in@^1.0.1:
546 | version "1.0.2"
547 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
548 |
549 | for-own@^0.1.4:
550 | version "0.1.5"
551 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
552 | dependencies:
553 | for-in "^1.0.1"
554 |
555 | forever-agent@~0.6.1:
556 | version "0.6.1"
557 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
558 |
559 | form-data@~2.1.1:
560 | version "2.1.2"
561 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
562 | dependencies:
563 | asynckit "^0.4.0"
564 | combined-stream "^1.0.5"
565 | mime-types "^2.1.12"
566 |
567 | fs.realpath@^1.0.0:
568 | version "1.0.0"
569 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
570 |
571 | fsevents@^1.0.0:
572 | version "1.1.1"
573 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff"
574 | dependencies:
575 | nan "^2.3.0"
576 | node-pre-gyp "^0.6.29"
577 |
578 | fstream-ignore@~1.0.5:
579 | version "1.0.5"
580 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
581 | dependencies:
582 | fstream "^1.0.0"
583 | inherits "2"
584 | minimatch "^3.0.0"
585 |
586 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
587 | version "1.0.11"
588 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
589 | dependencies:
590 | graceful-fs "^4.1.2"
591 | inherits "~2.0.0"
592 | mkdirp ">=0.5 0"
593 | rimraf "2"
594 |
595 | gauge@~2.7.1:
596 | version "2.7.3"
597 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09"
598 | dependencies:
599 | aproba "^1.0.3"
600 | console-control-strings "^1.0.0"
601 | has-unicode "^2.0.0"
602 | object-assign "^4.1.0"
603 | signal-exit "^3.0.0"
604 | string-width "^1.0.1"
605 | strip-ansi "^3.0.1"
606 | wide-align "^1.1.0"
607 |
608 | get-caller-file@^1.0.1:
609 | version "1.0.2"
610 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
611 |
612 | getpass@^0.1.1:
613 | version "0.1.6"
614 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
615 | dependencies:
616 | assert-plus "^1.0.0"
617 |
618 | glob-base@^0.3.0:
619 | version "0.3.0"
620 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
621 | dependencies:
622 | glob-parent "^2.0.0"
623 | is-glob "^2.0.0"
624 |
625 | glob-parent@^2.0.0:
626 | version "2.0.0"
627 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
628 | dependencies:
629 | is-glob "^2.0.0"
630 |
631 | glob@^7.0.5:
632 | version "7.1.1"
633 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
634 | dependencies:
635 | fs.realpath "^1.0.0"
636 | inflight "^1.0.4"
637 | inherits "2"
638 | minimatch "^3.0.2"
639 | once "^1.3.0"
640 | path-is-absolute "^1.0.0"
641 |
642 | graceful-fs@^4.1.2:
643 | version "4.1.11"
644 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
645 |
646 | har-schema@^1.0.5:
647 | version "1.0.5"
648 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
649 |
650 | har-validator@~4.2.1:
651 | version "4.2.1"
652 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
653 | dependencies:
654 | ajv "^4.9.1"
655 | har-schema "^1.0.5"
656 |
657 | has-flag@^1.0.0:
658 | version "1.0.0"
659 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
660 |
661 | has-unicode@^2.0.0:
662 | version "2.0.1"
663 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
664 |
665 | hash.js@^1.0.0, hash.js@^1.0.3:
666 | version "1.0.3"
667 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
668 | dependencies:
669 | inherits "^2.0.1"
670 |
671 | hawk@~3.1.3:
672 | version "3.1.3"
673 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
674 | dependencies:
675 | boom "2.x.x"
676 | cryptiles "2.x.x"
677 | hoek "2.x.x"
678 | sntp "1.x.x"
679 |
680 | hmac-drbg@^1.0.0:
681 | version "1.0.0"
682 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5"
683 | dependencies:
684 | hash.js "^1.0.3"
685 | minimalistic-assert "^1.0.0"
686 | minimalistic-crypto-utils "^1.0.1"
687 |
688 | hoek@2.x.x:
689 | version "2.16.3"
690 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
691 |
692 | hosted-git-info@^2.1.4:
693 | version "2.3.1"
694 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.3.1.tgz#ac439421605f0beb0ea1349de7d8bb28e50be1dd"
695 |
696 | http-signature@~1.1.0:
697 | version "1.1.1"
698 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
699 | dependencies:
700 | assert-plus "^0.2.0"
701 | jsprim "^1.2.2"
702 | sshpk "^1.7.0"
703 |
704 | https-browserify@0.0.1:
705 | version "0.0.1"
706 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
707 |
708 | ieee754@^1.1.4:
709 | version "1.1.8"
710 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
711 |
712 | indexof@0.0.1:
713 | version "0.0.1"
714 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
715 |
716 | inflight@^1.0.4:
717 | version "1.0.6"
718 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
719 | dependencies:
720 | once "^1.3.0"
721 | wrappy "1"
722 |
723 | inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
724 | version "2.0.3"
725 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
726 |
727 | inherits@2.0.1:
728 | version "2.0.1"
729 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
730 |
731 | ini@~1.3.0:
732 | version "1.3.4"
733 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
734 |
735 | interpret@^1.0.0:
736 | version "1.0.1"
737 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
738 |
739 | invert-kv@^1.0.0:
740 | version "1.0.0"
741 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
742 |
743 | is-arrayish@^0.2.1:
744 | version "0.2.1"
745 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
746 |
747 | is-binary-path@^1.0.0:
748 | version "1.0.1"
749 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
750 | dependencies:
751 | binary-extensions "^1.0.0"
752 |
753 | is-buffer@^1.0.2:
754 | version "1.1.5"
755 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
756 |
757 | is-builtin-module@^1.0.0:
758 | version "1.0.0"
759 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
760 | dependencies:
761 | builtin-modules "^1.0.0"
762 |
763 | is-dotfile@^1.0.0:
764 | version "1.0.2"
765 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
766 |
767 | is-equal-shallow@^0.1.3:
768 | version "0.1.3"
769 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
770 | dependencies:
771 | is-primitive "^2.0.0"
772 |
773 | is-extendable@^0.1.1:
774 | version "0.1.1"
775 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
776 |
777 | is-extglob@^1.0.0:
778 | version "1.0.0"
779 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
780 |
781 | is-fullwidth-code-point@^1.0.0:
782 | version "1.0.0"
783 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
784 | dependencies:
785 | number-is-nan "^1.0.0"
786 |
787 | is-glob@^2.0.0, is-glob@^2.0.1:
788 | version "2.0.1"
789 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
790 | dependencies:
791 | is-extglob "^1.0.0"
792 |
793 | is-number@^2.0.2, is-number@^2.1.0:
794 | version "2.1.0"
795 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
796 | dependencies:
797 | kind-of "^3.0.2"
798 |
799 | is-posix-bracket@^0.1.0:
800 | version "0.1.1"
801 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
802 |
803 | is-primitive@^2.0.0:
804 | version "2.0.0"
805 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
806 |
807 | is-typedarray@~1.0.0:
808 | version "1.0.0"
809 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
810 |
811 | is-utf8@^0.2.0:
812 | version "0.2.1"
813 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
814 |
815 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
816 | version "1.0.0"
817 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
818 |
819 | isobject@^2.0.0:
820 | version "2.1.0"
821 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
822 | dependencies:
823 | isarray "1.0.0"
824 |
825 | isstream@~0.1.2:
826 | version "0.1.2"
827 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
828 |
829 | jodid25519@^1.0.0:
830 | version "1.0.2"
831 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
832 | dependencies:
833 | jsbn "~0.1.0"
834 |
835 | jsbn@~0.1.0:
836 | version "0.1.1"
837 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
838 |
839 | json-loader@^0.5.4:
840 | version "0.5.4"
841 | resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
842 |
843 | json-schema@0.2.3:
844 | version "0.2.3"
845 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
846 |
847 | json-stable-stringify@^1.0.1:
848 | version "1.0.1"
849 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
850 | dependencies:
851 | jsonify "~0.0.0"
852 |
853 | json-stringify-safe@~5.0.1:
854 | version "5.0.1"
855 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
856 |
857 | json5@^0.5.0:
858 | version "0.5.1"
859 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
860 |
861 | jsonify@~0.0.0:
862 | version "0.0.0"
863 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
864 |
865 | jsprim@^1.2.2:
866 | version "1.4.0"
867 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918"
868 | dependencies:
869 | assert-plus "1.0.0"
870 | extsprintf "1.0.2"
871 | json-schema "0.2.3"
872 | verror "1.3.6"
873 |
874 | kind-of@^3.0.2:
875 | version "3.1.0"
876 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
877 | dependencies:
878 | is-buffer "^1.0.2"
879 |
880 | lazy-cache@^1.0.3:
881 | version "1.0.4"
882 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
883 |
884 | lcid@^1.0.0:
885 | version "1.0.0"
886 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
887 | dependencies:
888 | invert-kv "^1.0.0"
889 |
890 | load-json-file@^1.0.0:
891 | version "1.1.0"
892 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
893 | dependencies:
894 | graceful-fs "^4.1.2"
895 | parse-json "^2.2.0"
896 | pify "^2.0.0"
897 | pinkie-promise "^2.0.0"
898 | strip-bom "^2.0.0"
899 |
900 | loader-runner@^2.3.0:
901 | version "2.3.0"
902 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
903 |
904 | loader-utils@^0.2.16:
905 | version "0.2.17"
906 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
907 | dependencies:
908 | big.js "^3.1.3"
909 | emojis-list "^2.0.0"
910 | json5 "^0.5.0"
911 | object-assign "^4.0.1"
912 |
913 | lodash@^4.14.0:
914 | version "4.17.4"
915 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
916 |
917 | longest@^1.0.1:
918 | version "1.0.1"
919 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
920 |
921 | memory-fs@^0.4.0, memory-fs@~0.4.1:
922 | version "0.4.1"
923 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
924 | dependencies:
925 | errno "^0.1.3"
926 | readable-stream "^2.0.1"
927 |
928 | micromatch@^2.1.5:
929 | version "2.3.11"
930 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
931 | dependencies:
932 | arr-diff "^2.0.0"
933 | array-unique "^0.2.1"
934 | braces "^1.8.2"
935 | expand-brackets "^0.1.4"
936 | extglob "^0.3.1"
937 | filename-regex "^2.0.0"
938 | is-extglob "^1.0.0"
939 | is-glob "^2.0.1"
940 | kind-of "^3.0.2"
941 | normalize-path "^2.0.1"
942 | object.omit "^2.0.0"
943 | parse-glob "^3.0.4"
944 | regex-cache "^0.4.2"
945 |
946 | miller-rabin@^4.0.0:
947 | version "4.0.0"
948 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
949 | dependencies:
950 | bn.js "^4.0.0"
951 | brorand "^1.0.1"
952 |
953 | mime-db@~1.26.0:
954 | version "1.26.0"
955 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
956 |
957 | mime-types@^2.1.12, mime-types@~2.1.7:
958 | version "2.1.14"
959 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee"
960 | dependencies:
961 | mime-db "~1.26.0"
962 |
963 | minimalistic-assert@^1.0.0:
964 | version "1.0.0"
965 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
966 |
967 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
968 | version "1.0.1"
969 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
970 |
971 | minimatch@^3.0.0, minimatch@^3.0.2:
972 | version "3.0.3"
973 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
974 | dependencies:
975 | brace-expansion "^1.0.0"
976 |
977 | minimist@0.0.8:
978 | version "0.0.8"
979 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
980 |
981 | minimist@^1.2.0:
982 | version "1.2.0"
983 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
984 |
985 | "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1:
986 | version "0.5.1"
987 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
988 | dependencies:
989 | minimist "0.0.8"
990 |
991 | ms@0.7.1:
992 | version "0.7.1"
993 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
994 |
995 | nan@^2.3.0:
996 | version "2.5.1"
997 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
998 |
999 | node-libs-browser@^2.0.0:
1000 | version "2.0.0"
1001 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
1002 | dependencies:
1003 | assert "^1.1.1"
1004 | browserify-zlib "^0.1.4"
1005 | buffer "^4.3.0"
1006 | console-browserify "^1.1.0"
1007 | constants-browserify "^1.0.0"
1008 | crypto-browserify "^3.11.0"
1009 | domain-browser "^1.1.1"
1010 | events "^1.0.0"
1011 | https-browserify "0.0.1"
1012 | os-browserify "^0.2.0"
1013 | path-browserify "0.0.0"
1014 | process "^0.11.0"
1015 | punycode "^1.2.4"
1016 | querystring-es3 "^0.2.0"
1017 | readable-stream "^2.0.5"
1018 | stream-browserify "^2.0.1"
1019 | stream-http "^2.3.1"
1020 | string_decoder "^0.10.25"
1021 | timers-browserify "^2.0.2"
1022 | tty-browserify "0.0.0"
1023 | url "^0.11.0"
1024 | util "^0.10.3"
1025 | vm-browserify "0.0.4"
1026 |
1027 | node-pre-gyp@^0.6.29:
1028 | version "0.6.33"
1029 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9"
1030 | dependencies:
1031 | mkdirp "~0.5.1"
1032 | nopt "~3.0.6"
1033 | npmlog "^4.0.1"
1034 | rc "~1.1.6"
1035 | request "^2.79.0"
1036 | rimraf "~2.5.4"
1037 | semver "~5.3.0"
1038 | tar "~2.2.1"
1039 | tar-pack "~3.3.0"
1040 |
1041 | nopt@~3.0.6:
1042 | version "3.0.6"
1043 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
1044 | dependencies:
1045 | abbrev "1"
1046 |
1047 | normalize-package-data@^2.3.2:
1048 | version "2.3.6"
1049 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff"
1050 | dependencies:
1051 | hosted-git-info "^2.1.4"
1052 | is-builtin-module "^1.0.0"
1053 | semver "2 || 3 || 4 || 5"
1054 | validate-npm-package-license "^3.0.1"
1055 |
1056 | normalize-path@^2.0.1:
1057 | version "2.0.1"
1058 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
1059 |
1060 | npmlog@^4.0.1:
1061 | version "4.0.2"
1062 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
1063 | dependencies:
1064 | are-we-there-yet "~1.1.2"
1065 | console-control-strings "~1.1.0"
1066 | gauge "~2.7.1"
1067 | set-blocking "~2.0.0"
1068 |
1069 | number-is-nan@^1.0.0:
1070 | version "1.0.1"
1071 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1072 |
1073 | oauth-sign@~0.8.1:
1074 | version "0.8.2"
1075 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1076 |
1077 | object-assign@^4.0.1, object-assign@^4.1.0:
1078 | version "4.1.1"
1079 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1080 |
1081 | object.omit@^2.0.0:
1082 | version "2.0.1"
1083 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
1084 | dependencies:
1085 | for-own "^0.1.4"
1086 | is-extendable "^0.1.1"
1087 |
1088 | once@^1.3.0, once@~1.3.3:
1089 | version "1.3.3"
1090 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
1091 | dependencies:
1092 | wrappy "1"
1093 |
1094 | os-browserify@^0.2.0:
1095 | version "0.2.1"
1096 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
1097 |
1098 | os-locale@^1.4.0:
1099 | version "1.4.0"
1100 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
1101 | dependencies:
1102 | lcid "^1.0.0"
1103 |
1104 | pako@~0.2.0:
1105 | version "0.2.9"
1106 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
1107 |
1108 | parse-asn1@^5.0.0:
1109 | version "5.1.0"
1110 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
1111 | dependencies:
1112 | asn1.js "^4.0.0"
1113 | browserify-aes "^1.0.0"
1114 | create-hash "^1.1.0"
1115 | evp_bytestokey "^1.0.0"
1116 | pbkdf2 "^3.0.3"
1117 |
1118 | parse-glob@^3.0.4:
1119 | version "3.0.4"
1120 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
1121 | dependencies:
1122 | glob-base "^0.3.0"
1123 | is-dotfile "^1.0.0"
1124 | is-extglob "^1.0.0"
1125 | is-glob "^2.0.0"
1126 |
1127 | parse-json@^2.2.0:
1128 | version "2.2.0"
1129 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
1130 | dependencies:
1131 | error-ex "^1.2.0"
1132 |
1133 | path-browserify@0.0.0:
1134 | version "0.0.0"
1135 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
1136 |
1137 | path-exists@^2.0.0:
1138 | version "2.1.0"
1139 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
1140 | dependencies:
1141 | pinkie-promise "^2.0.0"
1142 |
1143 | path-is-absolute@^1.0.0:
1144 | version "1.0.1"
1145 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1146 |
1147 | path-type@^1.0.0:
1148 | version "1.1.0"
1149 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
1150 | dependencies:
1151 | graceful-fs "^4.1.2"
1152 | pify "^2.0.0"
1153 | pinkie-promise "^2.0.0"
1154 |
1155 | pbkdf2@^3.0.3:
1156 | version "3.0.9"
1157 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
1158 | dependencies:
1159 | create-hmac "^1.1.2"
1160 |
1161 | performance-now@^0.2.0:
1162 | version "0.2.0"
1163 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
1164 |
1165 | pify@^2.0.0:
1166 | version "2.3.0"
1167 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1168 |
1169 | pinkie-promise@^2.0.0:
1170 | version "2.0.1"
1171 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1172 | dependencies:
1173 | pinkie "^2.0.0"
1174 |
1175 | pinkie@^2.0.0:
1176 | version "2.0.4"
1177 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1178 |
1179 | preserve@^0.2.0:
1180 | version "0.2.0"
1181 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
1182 |
1183 | process-nextick-args@~1.0.6:
1184 | version "1.0.7"
1185 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1186 |
1187 | process@^0.11.0:
1188 | version "0.11.9"
1189 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
1190 |
1191 | prr@~0.0.0:
1192 | version "0.0.0"
1193 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
1194 |
1195 | public-encrypt@^4.0.0:
1196 | version "4.0.0"
1197 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
1198 | dependencies:
1199 | bn.js "^4.1.0"
1200 | browserify-rsa "^4.0.0"
1201 | create-hash "^1.1.0"
1202 | parse-asn1 "^5.0.0"
1203 | randombytes "^2.0.1"
1204 |
1205 | punycode@1.3.2:
1206 | version "1.3.2"
1207 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
1208 |
1209 | punycode@^1.2.4, punycode@^1.4.1:
1210 | version "1.4.1"
1211 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1212 |
1213 | qs@~6.4.0:
1214 | version "6.4.0"
1215 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
1216 |
1217 | querystring-es3@^0.2.0:
1218 | version "0.2.1"
1219 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
1220 |
1221 | querystring@0.2.0:
1222 | version "0.2.0"
1223 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
1224 |
1225 | randomatic@^1.1.3:
1226 | version "1.1.6"
1227 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
1228 | dependencies:
1229 | is-number "^2.0.2"
1230 | kind-of "^3.0.2"
1231 |
1232 | randombytes@^2.0.0, randombytes@^2.0.1:
1233 | version "2.0.3"
1234 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
1235 |
1236 | rc@~1.1.6:
1237 | version "1.1.7"
1238 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea"
1239 | dependencies:
1240 | deep-extend "~0.4.0"
1241 | ini "~1.3.0"
1242 | minimist "^1.2.0"
1243 | strip-json-comments "~2.0.1"
1244 |
1245 | read-pkg-up@^1.0.1:
1246 | version "1.0.1"
1247 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
1248 | dependencies:
1249 | find-up "^1.0.0"
1250 | read-pkg "^1.0.0"
1251 |
1252 | read-pkg@^1.0.0:
1253 | version "1.1.0"
1254 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
1255 | dependencies:
1256 | load-json-file "^1.0.0"
1257 | normalize-package-data "^2.3.2"
1258 | path-type "^1.0.0"
1259 |
1260 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:
1261 | version "2.2.6"
1262 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816"
1263 | dependencies:
1264 | buffer-shims "^1.0.0"
1265 | core-util-is "~1.0.0"
1266 | inherits "~2.0.1"
1267 | isarray "~1.0.0"
1268 | process-nextick-args "~1.0.6"
1269 | string_decoder "~0.10.x"
1270 | util-deprecate "~1.0.1"
1271 |
1272 | readable-stream@~2.1.4:
1273 | version "2.1.5"
1274 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
1275 | dependencies:
1276 | buffer-shims "^1.0.0"
1277 | core-util-is "~1.0.0"
1278 | inherits "~2.0.1"
1279 | isarray "~1.0.0"
1280 | process-nextick-args "~1.0.6"
1281 | string_decoder "~0.10.x"
1282 | util-deprecate "~1.0.1"
1283 |
1284 | readdirp@^2.0.0:
1285 | version "2.1.0"
1286 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
1287 | dependencies:
1288 | graceful-fs "^4.1.2"
1289 | minimatch "^3.0.2"
1290 | readable-stream "^2.0.2"
1291 | set-immediate-shim "^1.0.1"
1292 |
1293 | regex-cache@^0.4.2:
1294 | version "0.4.3"
1295 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
1296 | dependencies:
1297 | is-equal-shallow "^0.1.3"
1298 | is-primitive "^2.0.0"
1299 |
1300 | repeat-element@^1.1.2:
1301 | version "1.1.2"
1302 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
1303 |
1304 | repeat-string@^1.5.2:
1305 | version "1.6.1"
1306 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1307 |
1308 | request@^2.79.0:
1309 | version "2.81.0"
1310 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
1311 | dependencies:
1312 | aws-sign2 "~0.6.0"
1313 | aws4 "^1.2.1"
1314 | caseless "~0.12.0"
1315 | combined-stream "~1.0.5"
1316 | extend "~3.0.0"
1317 | forever-agent "~0.6.1"
1318 | form-data "~2.1.1"
1319 | har-validator "~4.2.1"
1320 | hawk "~3.1.3"
1321 | http-signature "~1.1.0"
1322 | is-typedarray "~1.0.0"
1323 | isstream "~0.1.2"
1324 | json-stringify-safe "~5.0.1"
1325 | mime-types "~2.1.7"
1326 | oauth-sign "~0.8.1"
1327 | performance-now "^0.2.0"
1328 | qs "~6.4.0"
1329 | safe-buffer "^5.0.1"
1330 | stringstream "~0.0.4"
1331 | tough-cookie "~2.3.0"
1332 | tunnel-agent "^0.6.0"
1333 | uuid "^3.0.0"
1334 |
1335 | require-directory@^2.1.1:
1336 | version "2.1.1"
1337 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
1338 |
1339 | require-main-filename@^1.0.1:
1340 | version "1.0.1"
1341 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
1342 |
1343 | right-align@^0.1.1:
1344 | version "0.1.3"
1345 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
1346 | dependencies:
1347 | align-text "^0.1.1"
1348 |
1349 | rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
1350 | version "2.5.4"
1351 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
1352 | dependencies:
1353 | glob "^7.0.5"
1354 |
1355 | ripemd160@^1.0.0:
1356 | version "1.0.1"
1357 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e"
1358 |
1359 | safe-buffer@^5.0.1:
1360 | version "5.0.1"
1361 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
1362 |
1363 | "semver@2 || 3 || 4 || 5", semver@~5.3.0:
1364 | version "5.3.0"
1365 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
1366 |
1367 | set-blocking@^2.0.0, set-blocking@~2.0.0:
1368 | version "2.0.0"
1369 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1370 |
1371 | set-immediate-shim@^1.0.1:
1372 | version "1.0.1"
1373 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
1374 |
1375 | setimmediate@^1.0.4:
1376 | version "1.0.5"
1377 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
1378 |
1379 | sha.js@^2.3.6:
1380 | version "2.4.8"
1381 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
1382 | dependencies:
1383 | inherits "^2.0.1"
1384 |
1385 | signal-exit@^3.0.0:
1386 | version "3.0.2"
1387 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1388 |
1389 | sntp@1.x.x:
1390 | version "1.0.9"
1391 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
1392 | dependencies:
1393 | hoek "2.x.x"
1394 |
1395 | source-list-map@~0.1.7:
1396 | version "0.1.8"
1397 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
1398 |
1399 | source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3:
1400 | version "0.5.6"
1401 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
1402 |
1403 | spdx-correct@~1.0.0:
1404 | version "1.0.2"
1405 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
1406 | dependencies:
1407 | spdx-license-ids "^1.0.2"
1408 |
1409 | spdx-expression-parse@~1.0.0:
1410 | version "1.0.4"
1411 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
1412 |
1413 | spdx-license-ids@^1.0.2:
1414 | version "1.2.2"
1415 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
1416 |
1417 | sshpk@^1.7.0:
1418 | version "1.11.0"
1419 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77"
1420 | dependencies:
1421 | asn1 "~0.2.3"
1422 | assert-plus "^1.0.0"
1423 | dashdash "^1.12.0"
1424 | getpass "^0.1.1"
1425 | optionalDependencies:
1426 | bcrypt-pbkdf "^1.0.0"
1427 | ecc-jsbn "~0.1.1"
1428 | jodid25519 "^1.0.0"
1429 | jsbn "~0.1.0"
1430 | tweetnacl "~0.14.0"
1431 |
1432 | stream-browserify@^2.0.1:
1433 | version "2.0.1"
1434 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
1435 | dependencies:
1436 | inherits "~2.0.1"
1437 | readable-stream "^2.0.2"
1438 |
1439 | stream-http@^2.3.1:
1440 | version "2.6.3"
1441 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3"
1442 | dependencies:
1443 | builtin-status-codes "^3.0.0"
1444 | inherits "^2.0.1"
1445 | readable-stream "^2.1.0"
1446 | to-arraybuffer "^1.0.0"
1447 | xtend "^4.0.0"
1448 |
1449 | string-width@^1.0.1, string-width@^1.0.2:
1450 | version "1.0.2"
1451 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1452 | dependencies:
1453 | code-point-at "^1.0.0"
1454 | is-fullwidth-code-point "^1.0.0"
1455 | strip-ansi "^3.0.0"
1456 |
1457 | string_decoder@^0.10.25, string_decoder@~0.10.x:
1458 | version "0.10.31"
1459 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
1460 |
1461 | stringstream@~0.0.4:
1462 | version "0.0.5"
1463 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
1464 |
1465 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1466 | version "3.0.1"
1467 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1468 | dependencies:
1469 | ansi-regex "^2.0.0"
1470 |
1471 | strip-bom@^2.0.0:
1472 | version "2.0.0"
1473 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
1474 | dependencies:
1475 | is-utf8 "^0.2.0"
1476 |
1477 | strip-json-comments@~2.0.1:
1478 | version "2.0.1"
1479 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1480 |
1481 | supports-color@^3.1.0:
1482 | version "3.2.3"
1483 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
1484 | dependencies:
1485 | has-flag "^1.0.0"
1486 |
1487 | tapable@^0.2.5, tapable@~0.2.5:
1488 | version "0.2.6"
1489 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
1490 |
1491 | tar-pack@~3.3.0:
1492 | version "3.3.0"
1493 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
1494 | dependencies:
1495 | debug "~2.2.0"
1496 | fstream "~1.0.10"
1497 | fstream-ignore "~1.0.5"
1498 | once "~1.3.3"
1499 | readable-stream "~2.1.4"
1500 | rimraf "~2.5.1"
1501 | tar "~2.2.1"
1502 | uid-number "~0.0.6"
1503 |
1504 | tar@~2.2.1:
1505 | version "2.2.1"
1506 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
1507 | dependencies:
1508 | block-stream "*"
1509 | fstream "^1.0.2"
1510 | inherits "2"
1511 |
1512 | timers-browserify@^2.0.2:
1513 | version "2.0.2"
1514 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
1515 | dependencies:
1516 | setimmediate "^1.0.4"
1517 |
1518 | to-arraybuffer@^1.0.0:
1519 | version "1.0.1"
1520 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
1521 |
1522 | tough-cookie@~2.3.0:
1523 | version "2.3.2"
1524 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
1525 | dependencies:
1526 | punycode "^1.4.1"
1527 |
1528 | tty-browserify@0.0.0:
1529 | version "0.0.0"
1530 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
1531 |
1532 | tunnel-agent@^0.6.0:
1533 | version "0.6.0"
1534 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1535 | dependencies:
1536 | safe-buffer "^5.0.1"
1537 |
1538 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1539 | version "0.14.5"
1540 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1541 |
1542 | uglify-js@^2.7.5:
1543 | version "2.8.13"
1544 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.13.tgz#d0cdf02f3c661484fac601b7e723207b735a374c"
1545 | dependencies:
1546 | source-map "~0.5.1"
1547 | uglify-to-browserify "~1.0.0"
1548 | yargs "~3.10.0"
1549 |
1550 | uglify-to-browserify@~1.0.0:
1551 | version "1.0.2"
1552 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
1553 |
1554 | uid-number@~0.0.6:
1555 | version "0.0.6"
1556 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
1557 |
1558 | url@^0.11.0:
1559 | version "0.11.0"
1560 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
1561 | dependencies:
1562 | punycode "1.3.2"
1563 | querystring "0.2.0"
1564 |
1565 | util-deprecate@~1.0.1:
1566 | version "1.0.2"
1567 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1568 |
1569 | util@0.10.3, util@^0.10.3:
1570 | version "0.10.3"
1571 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
1572 | dependencies:
1573 | inherits "2.0.1"
1574 |
1575 | uuid@^3.0.0:
1576 | version "3.0.1"
1577 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
1578 |
1579 | validate-npm-package-license@^3.0.1:
1580 | version "3.0.1"
1581 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
1582 | dependencies:
1583 | spdx-correct "~1.0.0"
1584 | spdx-expression-parse "~1.0.0"
1585 |
1586 | verror@1.3.6:
1587 | version "1.3.6"
1588 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
1589 | dependencies:
1590 | extsprintf "1.0.2"
1591 |
1592 | vm-browserify@0.0.4:
1593 | version "0.0.4"
1594 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
1595 | dependencies:
1596 | indexof "0.0.1"
1597 |
1598 | watchpack@^1.2.0:
1599 | version "1.3.1"
1600 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
1601 | dependencies:
1602 | async "^2.1.2"
1603 | chokidar "^1.4.3"
1604 | graceful-fs "^4.1.2"
1605 |
1606 | webpack-sources@^0.1.4:
1607 | version "0.1.5"
1608 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750"
1609 | dependencies:
1610 | source-list-map "~0.1.7"
1611 | source-map "~0.5.3"
1612 |
1613 | webpack@^2.2.1:
1614 | version "2.2.1"
1615 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475"
1616 | dependencies:
1617 | acorn "^4.0.4"
1618 | acorn-dynamic-import "^2.0.0"
1619 | ajv "^4.7.0"
1620 | ajv-keywords "^1.1.1"
1621 | async "^2.1.2"
1622 | enhanced-resolve "^3.0.0"
1623 | interpret "^1.0.0"
1624 | json-loader "^0.5.4"
1625 | loader-runner "^2.3.0"
1626 | loader-utils "^0.2.16"
1627 | memory-fs "~0.4.1"
1628 | mkdirp "~0.5.0"
1629 | node-libs-browser "^2.0.0"
1630 | source-map "^0.5.3"
1631 | supports-color "^3.1.0"
1632 | tapable "~0.2.5"
1633 | uglify-js "^2.7.5"
1634 | watchpack "^1.2.0"
1635 | webpack-sources "^0.1.4"
1636 | yargs "^6.0.0"
1637 |
1638 | which-module@^1.0.0:
1639 | version "1.0.0"
1640 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
1641 |
1642 | wide-align@^1.1.0:
1643 | version "1.1.0"
1644 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
1645 | dependencies:
1646 | string-width "^1.0.1"
1647 |
1648 | window-size@0.1.0:
1649 | version "0.1.0"
1650 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
1651 |
1652 | wordwrap@0.0.2:
1653 | version "0.0.2"
1654 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
1655 |
1656 | wrap-ansi@^2.0.0:
1657 | version "2.1.0"
1658 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
1659 | dependencies:
1660 | string-width "^1.0.1"
1661 | strip-ansi "^3.0.1"
1662 |
1663 | wrappy@1:
1664 | version "1.0.2"
1665 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1666 |
1667 | xtend@^4.0.0:
1668 | version "4.0.1"
1669 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
1670 |
1671 | y18n@^3.2.1:
1672 | version "3.2.1"
1673 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
1674 |
1675 | yargs-parser@^4.2.0:
1676 | version "4.2.1"
1677 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
1678 | dependencies:
1679 | camelcase "^3.0.0"
1680 |
1681 | yargs@^6.0.0:
1682 | version "6.6.0"
1683 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
1684 | dependencies:
1685 | camelcase "^3.0.0"
1686 | cliui "^3.2.0"
1687 | decamelize "^1.1.1"
1688 | get-caller-file "^1.0.1"
1689 | os-locale "^1.4.0"
1690 | read-pkg-up "^1.0.1"
1691 | require-directory "^2.1.1"
1692 | require-main-filename "^1.0.1"
1693 | set-blocking "^2.0.0"
1694 | string-width "^1.0.2"
1695 | which-module "^1.0.0"
1696 | y18n "^3.2.1"
1697 | yargs-parser "^4.2.0"
1698 |
1699 | yargs@~3.10.0:
1700 | version "3.10.0"
1701 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
1702 | dependencies:
1703 | camelcase "^1.0.2"
1704 | cliui "^2.1.0"
1705 | decamelize "^1.0.0"
1706 | window-size "0.1.0"
1707 |
--------------------------------------------------------------------------------
/examples/loaders/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-0"]
3 | }
--------------------------------------------------------------------------------
/examples/loaders/README.md:
--------------------------------------------------------------------------------
1 | # Using loaders
2 | Webpack works extending the behavior of the `require()` function in Node.JS. That's why by default it can load any javascript module written in [CommonJS](http://www.commonjs.org/), the Node.JS module system.
3 |
4 | With the usage of loaders, webpack can extend the functionality of the `require()` function to load almost any file type and syntax or, in case you need it, to [create your own loaders](https://webpack.github.io/docs/how-to-write-a-loader.html).
5 |
6 | ## Modules in ECMAScript 2015
7 | In this example you will find a module under the `./src` folder written in [ECMAScript2015 (ES6)](http://www.ecma-international.org/ecma-262/6.0/), the latest version of the JavaScript language standard.
8 | ```javascript
9 | export default class HelloWorld {
10 | salute = () => {
11 | return console.log('Hello World!');
12 | }
13 | }
14 | ```
15 | ES6 uses its own module creation and importing system, as well as a syntax that not every browser is able to understand. The same for other language that compile to JavaScript, as CoffeeScript or Typscript, as well.
16 |
17 | But with the usage of Webpack and the help of an specific loader to understand the new syntax, we can work with our preferred language and yet ensure backwards compatibility most of the browsers and clients.
18 |
19 | ## How does the Babel loader work
20 | In this example we are using the [`babel-loader`](https://github.com/babel/babel-loader), a [Babel](http://babeljs.io/) wrapper to [transpile](https://en.wikipedia.org/wiki/Source-to-source_compiler) ES6 to ES5.
21 |
22 | You will find a new section in the `webpack.config.js` file, the `modules` section. This is the place to include the `loaders` and their configurations. Let's inspect the Babel loader's configuration:
23 | ```javascript
24 | module: {
25 | loaders: [{
26 | test: /\.js$/,
27 | include: __dirname + '/src',
28 | loader: 'babel'
29 | }]
30 | },
31 | ```
32 | Loaders are passed as an array of configuration objects, with the following available properties:
33 |
34 | - `test`: A regular expressions to match the file extensions where the loader will trigger
35 | - `include`: The folders to include in the matching rule. If a folder is not included in a loader, it will not trigger in any of its file, no matter that it matches the file extension. Also, if no folders are included, any folder triggers the rule.
36 | - By analogy, there is also the possibility to add a `exclude` entry with the opposing behavior. This is useful if you only whant to exclude folders as `node_modules`, for instance.
37 | - `loader`: You can pass in a single loader or an array of `loaders` to act one after another. In this case, we are only using babel, to transpile ES6 to ES5.
38 |
39 | When you run `npm run dist` in this example, you should notice that the resulting bundle file does not have ES2015 syntax. This is what Babel does.
40 |
41 | There are webpack loaders for almost any kind of files and languages in the wild: SCSS, LESS, CoffeeScript, ReactJS, images and so on. We will review some of them in the following examples.
42 |
--------------------------------------------------------------------------------
/examples/loaders/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "learn-webpack",
3 | "version": "0.0.1",
4 | "description": "An example repository for webpack newbies",
5 | "main": "src/index.js",
6 | "scripts": {
7 | "dist": "webpack"
8 | },
9 | "keywords": [
10 | "webpack"
11 | ],
12 | "author": "daniel.delacruz@scmspain.com",
13 | "license": "MIT",
14 | "devDependencies": {
15 | "babel-core": "^6.3.15",
16 | "babel-loader": "^6.2.0",
17 | "babel-preset-es2015": "^6.3.13",
18 | "babel-preset-stage-0": "^6.3.13",
19 | "webpack": "^1.12.9"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/loaders/src/index.js:
--------------------------------------------------------------------------------
1 | export default class HelloWorld {
2 | salute = () => {
3 | return console.log('Hello World!');
4 | }
5 | }
--------------------------------------------------------------------------------
/examples/loaders/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | entry: __dirname + '/src',
3 | module: {
4 | loaders: [{
5 | test: /\.js$/,
6 | include: __dirname + '/src',
7 | loader: 'babel'
8 | }]
9 | },
10 | output: {
11 | path: './dist',
12 | filename: 'bundle.js'
13 | }
14 | };
15 |
--------------------------------------------------------------------------------
/examples/multiple-entries/README.md:
--------------------------------------------------------------------------------
1 | # Multiple entries
2 | The true potential of Webpack comes to light when working with [Single Page Applications (SPA)](https://es.wikipedia.org/wiki/Single-page_application). It helps you to pack your code in an optimized manner to avoid packing unnecesary code in a big bundle for your whole application. It can generate separated bundles, with isolated pieces of code and avoiding duplication. By setting *multiple entry points*, you can define a strategy for generating bundles for any isolated section in your SPA.
3 |
4 | We'll see how to do it in this example.
5 |
6 | ## A very simple SPA
7 | We'll work with a hypothetical single page application consisted in three views. One for the home page and a couple for a private are with information about the user and her account settings:
8 | ```
9 | ├── account.js
10 | ├── home.js
11 | └── user.js
12 | ```
13 | ## Multiple entry points
14 | If you inspect the `webpack.config.js` file, you'll notice a new property in it: `context`. It sets the working directory pointing to the `./src` for every `entry` introduced.
15 |
16 | The `entry` property is now a little more complex than in the previous example. Now it contains an object with an entry point for every section we've defined in our SPA:
17 | ```javascript
18 | entry: {
19 | home: "./home",
20 | user: ["./user", "./account"]
21 | }
22 | ```
23 | Every entry will generate a separated bundle, one for the home with the contents of the `home.js` file and another for the `user` section with the contents of a collection of files. In this case, `user.js` and `account.js`.
24 |
25 | ## Output files
26 | The output entry now looks like this:
27 | ```javascript
28 | output: {
29 | path: "./dist",
30 | filename: "[name].bundle.[hash].js"
31 | }
32 | ```
33 | Please notice that, as we said, the `context` property only refers to the entries, not the output files. They will be generated under the `./dist` folder, located at the root of your working folder.
34 |
35 | In this case, we are introducing two interesting elements to the configuration of the filename property:
36 |
37 | - `[name]`: This token will automatically name the bundle as we did in the entry point
38 | - `[hash]`: It will generate a hash with the contents of the bundle. It is useful for releasing into production the new version of the bundle and trigger a cache boost on the client side.
39 |
40 | ## How to try it out
41 | ```
42 | npm install
43 | npm run dist
44 | ```
45 | You should see the following output, two bundle files with their corresponding hash:
46 | ```
47 | Hash: 27878a575fe12989b902
48 | Version: webpack 1.12.9
49 | Time: 54ms
50 | Asset Size Chunks Chunk Names
51 | home.bundle.27878a575fe12989b902.js 1.46 kB 0 [emitted] home
52 | user.bundle.27878a575fe12989b902.js 1.73 kB 1 [emitted] user
53 | [0] ../home.js 71 bytes {0} [built]
54 | [0] multi user 40 bytes {1} [built]
55 | [1] ../user.js 71 bytes {1} [built]
56 | [2] ../account.js 74 bytes {1} [built]
57 | ```
58 |
--------------------------------------------------------------------------------
/examples/multiple-entries/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "learn-webpack",
3 | "version": "0.0.1",
4 | "description": "An example repository for webpack newbies",
5 | "main": "src/index.js",
6 | "scripts": {
7 | "dist": "webpack"
8 | },
9 | "keywords": [
10 | "webpack"
11 | ],
12 | "author": "daniel.delacruz@scmspain.com",
13 | "license": "MIT",
14 | "devDependencies": {
15 | "webpack": "^1.12.2"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/multiple-entries/src/account.js:
--------------------------------------------------------------------------------
1 | module.exports = function(){
2 | console.log('This is the account page');
3 | };
--------------------------------------------------------------------------------
/examples/multiple-entries/src/home.js:
--------------------------------------------------------------------------------
1 | module.exports = function(){
2 | console.log('This is the home page');
3 | };
--------------------------------------------------------------------------------
/examples/multiple-entries/src/user.js:
--------------------------------------------------------------------------------
1 | module.exports = function(){
2 | console.log('This is the user page');
3 | };
--------------------------------------------------------------------------------
/examples/multiple-entries/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | context: './src',
3 | entry: {
4 | home: './home',
5 | user: ['./user', './account']
6 | },
7 | output: {
8 | path: './dist',
9 | filename: '[name].bundle.[hash].js'
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/examples/optimizations-for-production/README.md:
--------------------------------------------------------------------------------
1 | # Example 8: Deploying to production
2 | We don't want to have the same configuration for development and production environments, so there are some changes we would like to do to improve our config file.
3 |
4 | ## Minification
5 |
6 | One more thing: The generated styles and JS bundles are not minified, and this is for sure one thing you may want to include in your application before releasing it to production. For minification, webpack includes an `UglifyPlugin`, which can be configured in the `plugins` section of your config file. We've already included a sample configuration, so just uncomment the following lines in the `webpack.config.js`:
7 |
8 | ```javascript
9 | var webpack = require('webpack');
10 | ...
11 | , new webpack.optimize.UglifyJsPlugin({
12 | compress: {
13 | warnings: false
14 | }
15 | })
16 | ```
17 |
18 | Finally, hit `npm run build` again and see what happens to your generated bundle sizes and code.
19 |
--------------------------------------------------------------------------------
/examples/optimizations-for-production/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "learn-webpack",
3 | "version": "0.0.1",
4 | "description": "An example repository for webpack newbies",
5 | "main": "dist/main.js",
6 | "scripts": {
7 | "start": "webpack-dev-server",
8 | "build": "webpack"
9 | },
10 | "keywords": [
11 | "webpack"
12 | ],
13 | "author": "daniel.delacruz@scmspain.com",
14 | "license": "MIT",
15 | "devDependencies": {
16 | "css-loader": "^0.23.0",
17 | "extract-text-webpack-plugin": "^0.9.1",
18 | "style-loader": "^0.13.0",
19 | "webpack": "^1.12.2",
20 | "webpack-dev-server": "^1.14.0",
21 | "webpack-merge": "^0.3.2"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/examples/optimizations-for-production/src/index.js:
--------------------------------------------------------------------------------
1 | require('./style.css');
2 | require('./moduleA.js');
3 | require('./moduleB.js');
--------------------------------------------------------------------------------
/examples/optimizations-for-production/src/moduleA.js:
--------------------------------------------------------------------------------
1 | var newDiv = document.createElement("div");
2 | var newContent = document.createTextNode("Hi there! I'm module A!");
3 | newDiv.appendChild(newContent);
4 | document.body.appendChild(newDiv);
--------------------------------------------------------------------------------
/examples/optimizations-for-production/src/moduleB.js:
--------------------------------------------------------------------------------
1 | var newDiv = document.createElement("div");
2 | var newContent = document.createTextNode("Hi there! I'm module B!");
3 | newDiv.appendChild(newContent);
4 | document.body.appendChild(newDiv);
--------------------------------------------------------------------------------
/examples/optimizations-for-production/src/style.css:
--------------------------------------------------------------------------------
1 | body{
2 | background: pink;
3 | }
--------------------------------------------------------------------------------
/examples/optimizations-for-production/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var webpack = require('webpack');
3 | var ExtractTextPlugin = require('extract-text-webpack-plugin');
4 | var merge = require('webpack-merge');
5 |
6 | var APP_PATH = path.join(__dirname, '/src');
7 | var TARGET = process.env.npm_lifecycle_event;
8 |
9 | var common = {
10 | context: APP_PATH,
11 | entry: './',
12 | output: {
13 | path: path.join(__dirname, 'dist'),
14 | filename: '[name].js',
15 | publicPath: 'http://localhost:3000/dist'
16 | },
17 | module: { loaders: [] },
18 | plugins: []
19 | };
20 |
21 | if(TARGET === 'start' || !TARGET) {
22 | module.exports = merge(common, {
23 | devServer: {
24 | port: 3000,
25 | stats: { colors: true },
26 | inline: true,
27 | publicPath: '/dist/'
28 | },
29 | module: {
30 | loaders: [{
31 | test: /\.css$/,
32 | loaders: [ 'style-loader', 'css-loader' ],
33 | include: APP_PATH
34 | }]
35 | },
36 | plugins: [
37 | new webpack.HotModuleReplacementPlugin()
38 | ]
39 | });
40 | }
41 |
42 | if(TARGET === 'build') {
43 | module.exports = merge(common, {
44 | module: {
45 | loaders: [{
46 | test: /\.css$/,
47 | loader: ExtractTextPlugin.extract('style-loader', 'css-loader'),
48 | include: APP_PATH
49 | }]
50 | },
51 | plugins: [
52 | new ExtractTextPlugin('[name].css', {
53 | allChunks: true
54 | })
55 | // , new webpack.optimize.UglifyJsPlugin({
56 | // compress: {
57 | // warnings: false
58 | // }
59 | // })
60 | ]
61 | });
62 | }
--------------------------------------------------------------------------------
/examples/styles/README.md:
--------------------------------------------------------------------------------
1 | # Working with styles
2 |
3 | In this scenario we'll set up three working environment for dealing with styles. The `./src` folder contains an `index.js` file with a dependency of the application stylesheet, located in the `index.css` file under the same directory.
4 |
5 | You may notice that we are importing a stylesheet using `require`. Remember that this is the way Webpack works: extending this function and adding extra functionality. We've already seen how Babel works for javascript files and in this example we'll se how some of the most common loders for styles work.
6 |
7 | ## Different webpack.config.js
8 | Before beginning with styles, take a look at the webpack configs. In this example we have three of them, one for every test we are going to illustrate. I thought this example could be a good opportunity to illustrate that we can pass webpack our custom config when executing it, different from the default. This feature can help us when setting up different scenarios for development and release. If you look at the `package.json` file, you'll find the three script entries for every example:
9 | ```javascript
10 | "styles": "webpack --config webpack.styles.config.js",
11 | "extract-text": "webpack --config webpack.extracttext.config.js",
12 | "autoprefixer": "webpack --config webpack.autoprefixer.config.js"
13 | ```
14 |
15 | ## Import stylesheets
16 | In order to be able to import css stylesheets, we need to configure the appropiate loaders. In the `webpack.styles.config.js` file we have the following entry:
17 | ```javascript
18 | loaders: [{
19 | test: /\.css$/,
20 | include: [
21 | __dirname + '/src'
22 | ],
23 | loader: 'style-loader!css-loader'
24 | }]
25 | ```
26 | As you can see, the `test` expression now matches any file with a `.css` extensions, and only that ones included under the `./src` folder. The loaders we are using are `style-loader` and `css-loader`. The latter just picks the contents of the CSS file, while the `style-loader` appends `