From dd31f8c1949be471d228b150defaa1ac4aa8a519 Mon Sep 17 00:00:00 2001 From: Raphael Amorim Date: Fri, 3 Nov 2017 03:30:22 -0200 Subject: [PATCH] release: react-tv 0.2.0rc - Simple DOM renderer (ref: #11) - New test architecture (using Jest) - Add node (umd) version - Add minified version - Update .editorconfig to Facebook/react --- .gitignore | 2 +- examples/clock-vanilla/package.json | 13 ++ examples/clock-vanilla/{ => webos}/example.js | 0 examples/clock-vanilla/{ => webos}/index.html | 2 +- package.json | 24 ++- scripts/rollup/build.js | 125 +++++++------- scripts/rollup/header.js | 32 ---- yarn.lock | 156 ++++++++++++++++-- 8 files changed, 238 insertions(+), 116 deletions(-) create mode 100644 examples/clock-vanilla/package.json rename examples/clock-vanilla/{ => webos}/example.js (100%) rename examples/clock-vanilla/{ => webos}/index.html (83%) delete mode 100644 scripts/rollup/header.js diff --git a/.gitignore b/.gitignore index dedf90c..88e0604 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ *.log package-lock.json -build/** +dist/** node_modules cli/generators/app/yarn.lock diff --git a/examples/clock-vanilla/package.json b/examples/clock-vanilla/package.json new file mode 100644 index 0000000..98fb11e --- /dev/null +++ b/examples/clock-vanilla/package.json @@ -0,0 +1,13 @@ +{ + "name": "clock-react-tv", + "version": "1.0.0", + "author": "Raphael Amorim", + "license": "MIT", + "scripts": { + "start": "react-tv run-webos-dev" + }, + "dependencies": { + "react": "^16.0.0", + "react-tv": "^0.1.4-rc.1" + } +} diff --git a/examples/clock-vanilla/example.js b/examples/clock-vanilla/webos/example.js similarity index 100% rename from examples/clock-vanilla/example.js rename to examples/clock-vanilla/webos/example.js diff --git a/examples/clock-vanilla/index.html b/examples/clock-vanilla/webos/index.html similarity index 83% rename from examples/clock-vanilla/index.html rename to examples/clock-vanilla/webos/index.html index af44b57..837fadf 100644 --- a/examples/clock-vanilla/index.html +++ b/examples/clock-vanilla/webos/index.html @@ -8,7 +8,7 @@
- + diff --git a/package.json b/package.json index 5f39e74..fceedfd 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,17 @@ { "name": "react-tv", - "version": "0.2.0", + "version": "0.2.0-rc", "description": "React development for TV (WebOS, Tizen, Orsay)", - "main": "src/ReactTVEntry.js", + "main": "dist/react-tv.umd.js", "bin": { "react-tv": "./cli" }, + "files": [ + "LICENSE", + "README.md", + "cli/", + "build/" + ], "scripts": { "build": "node scripts/rollup/build.js", "test": "yarn flow && jest", @@ -18,28 +24,30 @@ "express": "^4.15.4", "fbjs": "^0.8.4", "fs-extra": "^4.0.1", - "node-replace": "^0.3.1", - "react": "16.0.0-alpha.3", - "react-dom": "16.0.0-alpha.3" + "node-replace": "^0.3.1" }, "devDependencies": { "babel-jest": "20.1.0-delta.1", + "babel-plugin-external-helpers": "^6.22.0", "babel-plugin-transform-flow-strip-types": "^6.22.0", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-2": "^6.24.1", - "babel-register": "^6.26.0", "commitplease": "^3.1.0", "flow-bin": "^0.57.3", "jest": "20.1.0-delta.1", "prettier": "^1.5.3", + "react": "16.0.0-alpha.3", + "react-dom": "16.0.0-alpha.3", "react-fiber-types": "file:src/renderer/types", - "rollup": "^0.41.6", + "rollup": "^0.50.0", "rollup-plugin-babel": "^2.7.1", "rollup-plugin-commonjs": "^8.0.2", "rollup-plugin-flow": "^1.1.1", "rollup-plugin-node-resolve": "^2.0.0", - "rollup-plugin-replace": "^2.0.0" + "rollup-plugin-optimize-js": "^0.0.4", + "rollup-plugin-replace": "^2.0.0", + "rollup-plugin-uglify": "^2.0.1" }, "repository": { "type": "git", diff --git a/scripts/rollup/build.js b/scripts/rollup/build.js index 5ccf1d3..2ec39bd 100644 --- a/scripts/rollup/build.js +++ b/scripts/rollup/build.js @@ -6,12 +6,14 @@ const babel = require('rollup-plugin-babel'); const flow = require('rollup-plugin-flow'); const commonjs = require('rollup-plugin-commonjs'); const resolve = require('rollup-plugin-node-resolve'); +const uglify = require('rollup-plugin-uglify'); const replace = require('rollup-plugin-replace'); +const optimizeJs = require('rollup-plugin-optimize-js'); const chalk = require('chalk'); const REACT_TV_VERSION = require('../../package.json').version; -const Header = require('./header'); +let tasks = []; function stripEnvVariables(production) { return { @@ -20,70 +22,79 @@ function stripEnvVariables(production) { }; } -function getBanner(filename, moduleType) { - return Header.getHeader(filename, REACT_TV_VERSION); -} +function createBundle({ entryPath, bundleType, destName }) { + entryPath = path.resolve(entryPath); + const logKey = chalk.white.bold(entryPath) + chalk.dim(` (${REACT_TV_VERSION})`); + console.log(`${chalk.blue(bundleType)} ${logKey} -> dist/${destName}`); -function runWaterfall(promiseFactories) { - if (promiseFactories.length === 0) { - return Promise.resolve(); - } + let plugins = [ + flow(), + babel({ + babelrc: false, + exclude: 'node_modules/**', + externalHelpers: true, + presets: [ + [ 'env', { 'modules': false } ], + 'react', + 'stage-2' + ], + plugins: [ + 'transform-flow-strip-types', + 'external-helpers' + ] + }) + ] - const head = promiseFactories[0]; - const tail = promiseFactories.slice(1); + if (bundleType.indexOf('PROD') >= 0) + plugins = plugins.concat([ + uglify(), + optimizeJs(), + replace(stripEnvVariables()) + ]) - const nextPromiseFactory = head; - const nextPromise = nextPromiseFactory(); - if (!nextPromise || typeof nextPromise.then !== 'function') { - throw new Error('runWaterfall() received something that is not a Promise.'); - } + plugins = plugins.concat([ + commonjs(), + resolve({ + jsnext: true, + main: true, + browser: true, + }) + ]); - return nextPromise.then(() => { - return runWaterfall(tail); - }); + rollup({ + input: entryPath, + plugins: plugins, + external: ['react'], + sourcemap: false, + }).then(bundle => { + tasks.push( + bundle.write({ + format: (bundleType === 'PROD-UMD') ? 'umd' : 'iife', + name: 'ReactTV', + file: `dist/${destName}`, + }) + ) + }) } -function createBundle({ entryPath, bundleType }) { - console.log(`${chalk.bgGreen.white(REACT_TV_VERSION)}`); - - entryPath = path.resolve(entryPath); - const logKey = chalk.white.bold(entryPath) + chalk.dim(` (${bundleType.toLowerCase()})`); - console.log(`${chalk.bgYellow.black(' BUILDING ')} ${logKey}`); +createBundle({ + entryPath: 'src/ReactTVEntry.js', + bundleType: 'DEV', + destName: 'react-tv.js', +}); - rollup({ - entry: entryPath, - plugins: [ - flow(), - babel({ - babelrc: false, - exclude: 'node_modules/**', - presets: [ - [ 'env', { 'modules': false } ], - 'react', - 'stage-2' - ], - plugins: [ - 'transform-flow-strip-types' - ] - }), - commonjs(), - resolve({ - jsnext: true, - }), - replace(stripEnvVariables()) - ] - }).then(bundle => Promise.all([ - bundle.write({ - banner: getBanner('react-tv.js'), - format: 'iife', - moduleName: 'ReactTV', - sourceMap: 'inline', - dest: 'build/react-tv.js', - }) - ])).catch(error => console.log(error)); -} +createBundle({ + entryPath: 'src/ReactTVEntry.js', + bundleType: 'PROD', + destName: 'react-tv.min.js', +}); createBundle({ entryPath: 'src/ReactTVEntry.js', - bundleType: 'DEV' + bundleType: 'PROD-UMD', + destName: 'react-tv.umd.js', +}); + +Promise.all(tasks).catch(error => { + Promise.reject(error); }); diff --git a/scripts/rollup/header.js b/scripts/rollup/header.js deleted file mode 100644 index ff7205b..0000000 --- a/scripts/rollup/header.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -function getProvidesHeader(hasteFinalName) { - return `/** - * Copyright (c) 2017-present, Raphael Amorim. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @noflow - * @providesModule ${hasteFinalName} - * @preventMunge - */ -`; -} - -function getHeader(filename, version) { - return `/** @license React-TV v${version} - * ${filename} - * - * Copyright (c) 2017-present, Raphael Amorim. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -`; -} - -module.exports = { - getProvidesHeader, - getHeader, -}; diff --git a/yarn.lock b/yarn.lock index 5ce460e..070e845 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,22 @@ acorn-globals@^3.1.0: dependencies: acorn "^4.0.4" +acorn-jsx@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn-object-spread@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68" + dependencies: + acorn "^3.1.0" + +acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -914,6 +930,19 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" +buble@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/buble/-/buble-0.16.0.tgz#1773e7b5a383f5c722af6b1b16b2ba49cb866a98" + dependencies: + acorn "^3.3.0" + acorn-jsx "^3.0.1" + acorn-object-spread "^1.0.0" + chalk "^1.1.3" + magic-string "^0.14.0" + minimist "^1.2.0" + os-homedir "^1.0.1" + vlq "^0.2.2" + builtin-modules@^1.0.0, builtin-modules@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1023,6 +1052,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + commitplease@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/commitplease/-/commitplease-3.1.0.tgz#2ae3d31b238cbfaa645752fae1cf6bd857a4aa6e" @@ -1036,6 +1069,14 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +concat-stream@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -1673,7 +1714,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2230,6 +2271,10 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + lodash@^4.14.0, lodash@^4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -2244,6 +2289,18 @@ loose-envify@^1.0.0, loose-envify@^1.1.0: dependencies: js-tokens "^3.0.0" +magic-string@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" + dependencies: + vlq "^0.2.1" + +magic-string@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.16.0.tgz#970ebb0da7193301285fb1aa650f39bdd81eb45a" + dependencies: + vlq "^0.2.1" + magic-string@^0.22.4: version "0.22.4" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff" @@ -2463,6 +2520,16 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" +optimize-js@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/optimize-js/-/optimize-js-1.0.3.tgz#4326af8657c4a5ff32daf726631754f72ab7fdbc" + dependencies: + acorn "^3.3.0" + concat-stream "^1.5.1" + estree-walker "^0.3.0" + magic-string "^0.16.0" + yargs "^4.8.1" + optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -2474,7 +2541,7 @@ optionator@^0.8.1: type-check "~0.3.2" wordwrap "~1.0.0" -os-homedir@^1.0.0: +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -2676,13 +2743,6 @@ react-dom@16.0.0-alpha.3: "react-fiber-types@file:src/renderer/types": version "16.0.0-alpha.3" -react-test-renderer@16.0.0-alpha.3: - version "16.0.0-alpha.3" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.0.0-alpha.3.tgz#ee2db3966ff26d3b9fa1d088939b1231ab33426e" - dependencies: - fbjs "^0.8.9" - object-assign "^4.1.0" - react@16.0.0-alpha.3: version "16.0.0-alpha.3" resolved "https://registry.yarnpkg.com/react/-/react-16.0.0-alpha.3.tgz#addfd7ae9d801fd20c6244142354ae0cb7b1fe00" @@ -2706,7 +2766,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.6, readable-stream@^2.1.4: +readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -2869,6 +2929,13 @@ rollup-plugin-babel@^2.7.1: object-assign "^4.1.0" rollup-pluginutils "^1.5.0" +rollup-plugin-buble@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.16.0.tgz#3c66e2f4703527f5d27a4054f97d5eef463c5bb8" + dependencies: + buble "^0.16.0" + rollup-pluginutils "^2.0.1" + rollup-plugin-commonjs@^8.0.2: version "8.2.4" resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.4.tgz#435b01fb591cb508dc740196cec8b60f10132e78" @@ -2894,6 +2961,12 @@ rollup-plugin-node-resolve@^2.0.0: builtin-modules "^1.1.0" resolve "^1.1.6" +rollup-plugin-optimize-js@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/rollup-plugin-optimize-js/-/rollup-plugin-optimize-js-0.0.4.tgz#f0e2d40670c8a8ba1382949551963093ed471c02" + dependencies: + optimize-js "1.0.3" + rollup-plugin-replace@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.0.0.tgz#19074089c8ed57184b8cc64e967a03d095119277" @@ -2902,6 +2975,12 @@ rollup-plugin-replace@^2.0.0: minimatch "^3.0.2" rollup-pluginutils "^2.0.1" +rollup-plugin-uglify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz#67b37ad1efdafbd83af4c36b40c189ee4866c969" + dependencies: + uglify-js "^3.0.9" + rollup-pluginutils@^1.5.0, rollup-pluginutils@^1.5.1: version "1.5.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" @@ -2916,11 +2995,9 @@ rollup-pluginutils@^2.0.1: estree-walker "^0.3.0" micromatch "^2.3.11" -rollup@^0.41.6: - version "0.41.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" - dependencies: - source-map-support "^0.4.0" +rollup@^0.50.0: + version "0.50.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.50.0.tgz#4c158f4e780e6cb33ff0dbfc184a52cc58cd5f3b" safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" @@ -3015,7 +3092,7 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -source-map-support@^0.4.0, source-map-support@^0.4.15: +source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: @@ -3031,6 +3108,10 @@ source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + spawnback@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/spawnback/-/spawnback-1.0.0.tgz#f73662f7e54d95367eca74d6426c677dd7ea686f" @@ -3229,6 +3310,10 @@ type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.15" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" @@ -3242,6 +3327,13 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.0.9: + version "3.1.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.6.tgz#918832602036e95d2318e11f27ee8461a8592c5d" + dependencies: + commander "~2.11.0" + source-map "~0.6.1" + 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" @@ -3293,7 +3385,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vlq@^0.2.1: +vlq@^0.2.1, vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" @@ -3355,6 +3447,10 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -3397,12 +3493,38 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" dependencies: camelcase "^3.0.0" +yargs@^4.8.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + yargs@^7.0.2: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"