diff --git a/.gitignore b/.gitignore index 732a45d..13cccc9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ node_modules coverage lib lib-esm +lib-fesm umd typings docs diff --git a/README.md b/README.md index e066b23..16d7673 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ This npm library starter: - main -> UMD bundle for Node and Browser - module -> transpiled files to ES5 + es2015 modules for tree shaking - es2015 -> raw files transpiled to latest ES standard ( es2017 ) ( this is useful if you wann transpile everthing or just wann ship untranspiled esNext code for evergreen browsers) +- also we provide experimantal **FESM** bundle thanks to Webpack 3 and scope hoisting -> you can find it in `lib-fesm` folder ( scope hoisting is now enabled also within UMD == smaller payload size ) - type definitions are automatically generated and shipped with your package ## Start coding jedi! diff --git a/package.json b/package.json index 75e8e2f..57cd166 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,10 @@ "node": ">=6.9" }, "scripts": { - "cleanup": "shx rm -rf umd lib lib-esm typings coverage docs", + "cleanup": "shx rm -rf umd lib lib-esm lib-fesm typings coverage docs", "prebuild": "npm run cleanup && npm run verify", "build": " tsc && tsc --target es2017 --outDir lib-esm && webpack", + "build:fesm:min": "uglifyjs lib-fesm/index.js --compress --mangle --source-map --output lib-fesm/index.min.js", "docs": "typedoc -p . --theme minimal --target 'es6' --excludeNotExported --excludePrivate --ignoreCompilerErrors --exclude \"**/src/**/__tests__/*.*\" --out docs src/", "test": "jest", "test:watch": "npm test -- --watch", @@ -92,7 +93,7 @@ }, "dependencies": {}, "devDependencies": { - "@types/jest": "19.2.4", + "@types/jest": "20.0.0", "awesome-typescript-loader": "3.1.3", "commitizen": "2.9.6", "cross-var": "1.0.3", @@ -101,18 +102,20 @@ "husky": "0.13.4", "irish-pub": "0.2.0", "jest": "20.0.4", - "lint-staged": "3.6.0", - "prettier": "1.4.2", + "lint-staged": "3.6.1", + "prettier": "1.4.4", "shx": "0.2.2", "standard-version": "4.0.0", "strip-json-comments-cli": "1.0.1", - "ts-jest": "20.0.5", - "tslint": "5.4.2", - "tslint-config-standard": "5.0.2", + "ts-jest": "20.0.6", + "tslint": "5.4.3", + "tslint-config-standard": "6.0.1", "tslint-react": "3.0.0", "typedoc": "0.7.1", "typescript": "2.3.4", - "validate-commit-msg": "2.12.1", - "webpack": "2.6.1" + "uglify-js": "git://github.com/mishoo/UglifyJS2#harmony-v2.8.22", + "uglifyjs-webpack-plugin": "0.4.3", + "validate-commit-msg": "2.12.2", + "webpack": "3.0.0-rc.2" } } diff --git a/webpack.config.js b/webpack.config.js index b9f469c..23f9423 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,21 +1,75 @@ const { resolve } = require('path'); const webpack = require('webpack'); +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); + const packageJSON = require('./package.json'); const packageName = normalizePackageName(packageJSON.name); + +const LIB_NAME = pascalCase(packageName); const PATHS = { entryPoint: resolve(__dirname, 'src/index.ts'), - bundles: resolve(__dirname, 'umd'), -} - -const UMD = { - libName: pascalCase(packageName), -} - -const config = (env) => { - - return { + umd: resolve(__dirname, 'umd'), + fesm: resolve(__dirname, 'lib-fesm') +}; + +const EXTERNALS = { + // lodash: { + // commonjs: "lodash", + // commonjs2: "lodash", + // amd: "lodash", + // root: "_" + // } +}; + +const RULES = { + ts: { + test: /\.tsx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'awesome-typescript-loader', + options: { + // we don't want any declaration file in the bundles + // folder since it wouldn't be of any use ans the source + // map already include everything for debugging + // This cannot be set because -> Option 'declarationDir' cannot be specified without specifying option 'declaration'. + // declaration: false, + } + } + ] + }, + tsNext: { + test: /\.tsx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'awesome-typescript-loader', + options: { + target: 'es2017' + } + } + ] + } +}; + +const PLUGINS = [ + // enable scope hoisting + new webpack.optimize.ModuleConcatenationPlugin(), + // Apply minification only on the second bundle by using a RegEx on the name, which must end with `.min.js` + new UglifyJSPlugin({ + sourceMap: true, + include: /\.min\.js$/ + }), + new webpack.LoaderOptionsPlugin({ + minimize: true + }) +]; + + +const config = env => { + const UMDConfig = { // These are the entry point of our library. We tell webpack to use // the name we assign later, when creating the bundle. We also use // the name to filter the second entry point for applying code @@ -29,10 +83,12 @@ const config = (env) => { // We target a UMD and name it MyLib. When including the bundle in the browser // it will be accessible at `window.MyLib` output: { - path: PATHS.bundles, + path: PATHS.umd, filename: '[name].js', libraryTarget: 'umd', - library: UMD.libName, + library: LIB_NAME, + // libraryExport: UMD.libName, + // will name the AMD module of the UMD build. Otherwise an anonymous define is used. umdNamedDefine: true }, // Add resolve for `tsx` and `ts` files, otherwise Webpack would @@ -40,49 +96,36 @@ const config = (env) => { resolve: { extensions: ['.ts', '.tsx', '.js'] }, + // add here all 3rd party libraries that you will use as peerDependncies + // https://webpack.js.org/guides/author-libraries/#add-externals + externals: EXTERNALS, // Activate source maps for the bundles in order to preserve the original // source when the user debugs the application devtool: 'source-map', - plugins: [ - // Apply minification only on the second bundle by - // using a RegEx on the name, which must end with `.min.js` - // NB: Remember to activate sourceMaps in UglifyJsPlugin - // since they are disabled by default! - new webpack.optimize.UglifyJsPlugin({ - sourceMap: true, - include: /\.min\.js$/, - }), - - new webpack.LoaderOptionsPlugin({ - minimize: true - }), - ], + plugins: PLUGINS, module: { - // Webpack doesn't understand TypeScript files and a loader is needed. - // `node_modules` folder is excluded in order to prevent problems with - // the library dependencies, as well as `__tests__` folders that - // contain the tests for the library - rules: [{ - test: /\.tsx?$/, - exclude: /node_modules/, - use: [{ - loader: 'awesome-typescript-loader', - options: { - // we don't want any declaration file in the bundles - // folder since it wouldn't be of any use ans the source - // map already include everything for debugging - - // This cannot be set because -> Option 'declarationDir' cannot be specified without specifying option 'declaration'. - // declaration: false, - } - }], - }] + rules: [RULES.ts] } - } -} + }; -module.exports = config; + const FESMconfig = Object.assign({}, UMDConfig, { + entry: { + 'index': [PATHS.entryPoint], + 'index.min': [PATHS.entryPoint] + }, + output: { + path: PATHS.fesm, + filename: UMDConfig.output.filename, + }, + module: { + rules: [RULES.tsNext], + }, + }); + return [UMDConfig, FESMconfig]; +}; + +module.exports = config; // helpers @@ -91,7 +134,7 @@ function camelCaseToDash(myStr) { } function dashToCamelCase(myStr) { - return myStr.replace(/-([a-z])/g, (g) => g[1].toUpperCase()); + return myStr.replace(/-([a-z])/g, g => g[1].toUpperCase()); } function toUpperCase(myStr) { @@ -102,7 +145,7 @@ function pascalCase(myStr) { return toUpperCase(dashToCamelCase(myStr)); } -function normalizePackageName(rawPackageName){ +function normalizePackageName(rawPackageName) { const scopeEnd = rawPackageName.indexOf('/') + 1; return rawPackageName.substring(scopeEnd); diff --git a/yarn.lock b/yarn.lock index df66b7e..1a71694 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,37 @@ # yarn lockfile v1 +"@types/babel-core@^6.7.14": + version "6.7.14" + resolved "https://registry.yarnpkg.com/@types/babel-core/-/babel-core-6.7.14.tgz#a08c900a98e8987c1a98d2ea4fa0a1805a7d131f" + dependencies: + "@types/babel-template" "*" + "@types/babel-traverse" "*" + "@types/babel-types" "*" + +"@types/babel-template@*": + version "6.7.14" + resolved "https://registry.yarnpkg.com/@types/babel-template/-/babel-template-6.7.14.tgz#8088a56f9d697d620d3d079c3ef66025b7a08d02" + dependencies: + "@types/babel-types" "*" + "@types/babylon" "*" + +"@types/babel-traverse@*": + version "6.7.17" + resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.7.17.tgz#5212a4edced81f53a6c4fb1fd7a34aa4ff6cf36b" + dependencies: + "@types/babel-types" "*" + +"@types/babel-types@*": + version "6.7.16" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-6.7.16.tgz#e2602896636858a0067971f7ca4bb8678038293f" + +"@types/babylon@*": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.1.tgz#e4d10ab9e43a73703a17c6f41438bede28769340" + dependencies: + "@types/babel-types" "*" + "@types/fs-extra@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-3.0.3.tgz#1d66eb670ebf657e57c0fda014df340c19d8aa0c" @@ -16,9 +47,9 @@ version "9.1.9" resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.1.9.tgz#ed6336955eaf233b75eb7923b9b1f373d045ef01" -"@types/jest@19.2.4": - version "19.2.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-19.2.4.tgz#543651712535962b7dc615e18e4a381fc2687442" +"@types/jest@20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-20.0.0.tgz#f7119f92891e150b33d67505cdd6d95585156133" "@types/lodash@^4.14.37": version "4.14.65" @@ -77,17 +108,24 @@ acorn@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" -ajv-keywords@^1.1.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" +ajv-keywords@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" -ajv@^4.7.0, ajv@^4.9.1: +ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.1.5.tgz#8734931b601f00d4feef7c65738d77d1b65d1f68" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -1512,6 +1550,12 @@ cz-conventional-changelog@2.0.0: right-pad "^1.0.1" word-wrap "^1.0.3" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + dargs@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" @@ -1674,10 +1718,62 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.23" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.23.tgz#7578b51be974207a5487821b56538c224e4e7b38" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + es6-object-assign@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1693,6 +1789,15 @@ escodegen@^1.6.1: optionalDependencies: source-map "~0.2.0" +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -1701,10 +1806,25 @@ esprima@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" +estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" @@ -1713,6 +1833,13 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -1741,9 +1868,9 @@ execa@^0.5.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.6.3.tgz#57b69a594f081759c69e5370f0d17b9cb11658fe" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -2887,13 +3014,13 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lint-staged@3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.6.0.tgz#cda8f0bef16e7928cc14b735186ae12cd662599c" +lint-staged@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.6.1.tgz#24423c8b7bd99d96e15acd1ac8cb392a78e58582" dependencies: app-root-path "^2.0.0" cosmiconfig "^1.1.0" - execa "^0.6.0" + execa "^0.7.0" listr "^0.12.0" lodash.chunk "^4.2.0" minimatch "^3.0.0" @@ -2971,15 +3098,6 @@ loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" @@ -3560,9 +3678,9 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.2.tgz#bcdd95ed1eca434ac7f98ca26ea4d25a2af6a2ac" +prettier@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.4.tgz#a8d1447b14c9bf67e6d420dcadd10fb9a4fad65a" pretty-bytes@^4.0.2: version "4.0.2" @@ -3998,6 +4116,10 @@ source-list-map@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + source-map-support@^0.4.15, source-map-support@^0.4.2, source-map-support@^0.4.4: version "0.4.15" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" @@ -4316,10 +4438,11 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -ts-jest@20.0.5: - version "20.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-20.0.5.tgz#6cb151e718e8739529d0a79459e09f7280fe044f" +ts-jest@20.0.6: + version "20.0.6" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-20.0.6.tgz#39c2810c05d6f6908dac15929dae206b494b73f4" dependencies: + "@types/babel-core" "^6.7.14" babel-core "^6.24.1" babel-plugin-istanbul "^4.1.4" babel-plugin-transform-es2015-modules-commonjs "^6.24.1" @@ -4343,9 +4466,9 @@ tslib@^1.0.0, tslib@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.7.1.tgz#bc8004164691923a79fe8378bbeb3da2017538ec" -tslint-config-standard@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-5.0.2.tgz#e98fd5c412a6b973798366dc2c85508cf0ed740f" +tslint-config-standard@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-6.0.1.tgz#a04ba0a794759e877287056f549b081e47a56d6c" dependencies: tslint-eslint-rules "^4.0.0" @@ -4361,9 +4484,9 @@ tslint-react@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-3.0.0.tgz#00c48ab7f22e91533b62bdef2c162b49447af00a" -tslint@5.4.2: - version "5.4.2" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.4.2.tgz#609b6640cc0424f4a395a9adf68c375563c549c7" +tslint@5.4.3: + version "5.4.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.4.3.tgz#761c8402b80e347b7733a04390a757b253580467" dependencies: babel-code-frame "^6.22.0" colors "^1.1.2" @@ -4451,10 +4574,26 @@ uglify-js@^2.6, uglify-js@^2.8.27: optionalDependencies: uglify-to-browserify "~1.0.0" +"uglify-js@git://github.com/mishoo/UglifyJS2#harmony-v2.8.22": + version "2.8.22" + resolved "git://github.com/mishoo/UglifyJS2#278577f3cb75e72320564805ee91be63e5f9c806" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +uglifyjs-webpack-plugin@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.3.tgz#a672a7d6655f94dfa7e09670d48030f37cc93267" + dependencies: + source-map "^0.5.6" + webpack-sources "^0.2.3" + uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -4484,9 +4623,9 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -validate-commit-msg@2.12.1: - version "2.12.1" - resolved "https://registry.yarnpkg.com/validate-commit-msg/-/validate-commit-msg-2.12.1.tgz#612b61bc9f09f0fee5130de3648870d01cdddf1d" +validate-commit-msg@2.12.2: + version "2.12.2" + resolved "https://registry.yarnpkg.com/validate-commit-msg/-/validate-commit-msg-2.12.2.tgz#6d5015331bf196c22afb880d3f33bcef1deafea6" dependencies: conventional-commit-types "^2.0.0" find-parent-dir "^0.3.0" @@ -4545,21 +4684,29 @@ webpack-sources@^0.2.3: source-list-map "^1.1.1" source-map "~0.5.3" -webpack@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.6.1.tgz#2e0457f0abb1ac5df3ab106c69c672f236785f07" +webpack-sources@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" + dependencies: + source-list-map "^2.0.0" + source-map "~0.5.3" + +webpack@3.0.0-rc.2: + version "3.0.0-rc.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.0.0-rc.2.tgz#20c903580fa9fba8497bc1c6455810d3d397c958" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" - ajv "^4.7.0" - ajv-keywords "^1.1.1" + ajv "^5.1.5" + ajv-keywords "^2.0.0" async "^2.1.2" enhanced-resolve "^3.0.0" + escope "^3.6.0" interpret "^1.0.0" json-loader "^0.5.4" json5 "^0.5.1" loader-runner "^2.3.0" - loader-utils "^0.2.16" + loader-utils "^1.1.0" memory-fs "~0.4.1" mkdirp "~0.5.0" node-libs-browser "^2.0.0" @@ -4568,7 +4715,7 @@ webpack@2.6.1: tapable "~0.2.5" uglify-js "^2.8.27" watchpack "^1.3.1" - webpack-sources "^0.2.3" + webpack-sources "^1.0.1" yargs "^6.0.0" whatwg-encoding@^1.0.1: