From 7ffeac8ac33f76485c9abd0059b6621503d81315 Mon Sep 17 00:00:00 2001 From: Wroud Date: Mon, 22 Jun 2020 11:59:44 +0300 Subject: [PATCH] chore: some build improvements, add supports for Edge --- deploy/build.bat | 2 +- deploy/build.sh | 2 +- webapp/configs/babel.config.js | 16 ++-- webapp/configs/webpack.config.js | 11 +-- webapp/configs/webpack.plugin.config.js | 7 +- webapp/configs/webpack.product.config.js | 19 +---- webapp/configs/webpack.product.dev.config.js | 22 ++---- webapp/package.json | 16 ++-- webapp/packages/product-default/package.json | 2 + .../product-default/src/index.html.ejs | 33 ++++---- webapp/tsconfig.json | 8 +- webapp/yarn.lock | 78 ++++++++++++++++++- 12 files changed, 130 insertions(+), 86 deletions(-) diff --git a/deploy/build.bat b/deploy/build.bat index faa44fba27..14fd114a44 100644 --- a/deploy/build.bat +++ b/deploy/build.bat @@ -37,7 +37,7 @@ cd ..\webapp call yarn call lerna bootstrap -call lerna run build --stream --scope=@cloudbeaver/product-default +call lerna run build --stream --scope=@cloudbeaver/product-default -- -- --mode=production cd ..\deploy diff --git a/deploy/build.sh b/deploy/build.sh index ac878739a4..8b92bbf8d1 100755 --- a/deploy/build.sh +++ b/deploy/build.sh @@ -37,7 +37,7 @@ cd ../webapp yarn lerna run bootstrap -lerna run build --stream --scope=@cloudbeaver/product-default +lerna run build --stream --scope=@cloudbeaver/product-default -- -- --mode=production cd ../deploy diff --git a/webapp/configs/babel.config.js b/webapp/configs/babel.config.js index 6c7ddefcb8..63b4aaa9c1 100644 --- a/webapp/configs/babel.config.js +++ b/webapp/configs/babel.config.js @@ -15,16 +15,18 @@ console.warn = (...args) => { }; module.exports = { + compact: prod, presets: [ - ['@babel/preset-typescript', { isTSX: true, allExtensions: true }], "@babel/preset-react", + ['@babel/preset-typescript', { isTSX: true, allExtensions: true }], [ "@babel/preset-env", { - "targets": { - // "esmodules": true, - browsers: ["last 2 chrome version", "last 2 firefox version"] - } + targets: { + esmodules: true, + }, + modules: false, + // "useBuiltIns": "usage" } ] ], @@ -34,10 +36,10 @@ module.exports = { '@babel/plugin-proposal-optional-chaining', ['@babel/plugin-proposal-decorators', { legacy: true }], ['@babel/plugin-proposal-class-properties', { loose: true }], + ["@babel/plugin-proposal-object-rest-spread", { loose: true, useBuiltIns: true }], 'react-require', - "@babel/proposal-object-rest-spread", 'reshadow/babel', - !prod && [ + /*!prod &&*/ [ "babel-plugin-module-resolver", { alias: { diff --git a/webapp/configs/webpack.config.js b/webapp/configs/webpack.config.js index de80966b1e..444e5f7023 100644 --- a/webapp/configs/webpack.config.js +++ b/webapp/configs/webpack.config.js @@ -1,5 +1,4 @@ const { resolve, join } = require('path'); -var PeerDepsExternalsPlugin = require('peer-deps-externals-webpack-plugin'); const ModuleDependencyWarning = require("webpack/lib/ModuleDependencyWarning"); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); @@ -33,12 +32,6 @@ module.exports = (env, argv) => { const postCssPlugins = [ require('postcss-preset-env')({ stage: 0 }), - // require('@csstools/postcss-sass')({ - // sassOptions: { - // implementation: require('node-sass'), - // includePaths: ['node_modules', resolve('../../node_modules')] - // }, - // }), require('postcss-discard-comments'), require('reshadow/postcss')({ scopeBehaviour: moduleScope }) ]; @@ -93,9 +86,8 @@ module.exports = (env, argv) => { mode: argv.mode || 'development', resolve: { extensions: ['.ts', '.tsx', '.js'], - modules: [join(__dirname, '../node_modules')], + modules: [resolve('node_modules'), join(__dirname, '../node_modules')], alias: { - // "@cloudbeaver": resolve('../../node_modules/@cloudbeaver/'), react: 'preact/compat', react$: 'preact/compat', 'react-dom': 'preact/compat', @@ -150,7 +142,6 @@ module.exports = (env, argv) => { // ], devtool: 'cheap-module-source-map', plugins: [ - new PeerDepsExternalsPlugin(), new IgnoreNotFoundExportPlugin(), new MiniCssExtractPlugin({ // Options similar to the same options in webpackOptions.output diff --git a/webapp/configs/webpack.plugin.config.js b/webapp/configs/webpack.plugin.config.js index b8fc22c825..6b790fffc6 100644 --- a/webapp/configs/webpack.plugin.config.js +++ b/webapp/configs/webpack.plugin.config.js @@ -1,5 +1,6 @@ const merge = require('webpack-merge'); const { resolve, join } = require('path'); +var PeerDepsExternalsPlugin = require('peer-deps-externals-webpack-plugin'); const commonConfig = require('./webpack.config.js'); var main = resolve('src/index.ts'); @@ -11,7 +12,7 @@ module.exports = (env, argv) => merge(commonConfig(env, argv), { filename: 'index.js', chunkFilename: '[name].bundle.js', library: package.name, - libraryTarget: 'umd', + libraryTarget: 'commonjs', path: outputDir, }, optimization: { @@ -22,5 +23,7 @@ module.exports = (env, argv) => merge(commonConfig(env, argv), { // namedModules: false, // concatenateModules: false, }, - plugins: [], + plugins: [ + new PeerDepsExternalsPlugin(), + ], }); diff --git a/webapp/configs/webpack.product.config.js b/webapp/configs/webpack.product.config.js index c9a794abf4..3121d9c0b4 100644 --- a/webapp/configs/webpack.product.config.js +++ b/webapp/configs/webpack.product.config.js @@ -1,7 +1,6 @@ const merge = require('webpack-merge'); const webpack = require('webpack'); -const { resolve, join } = require('path'); -const fs = require('fs'); +const { resolve } = require('path'); const commonConfig = require('./webpack.config.js'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); @@ -9,18 +8,6 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); var main = resolve('src/index.ts'); var outputDir = resolve('lib'); var package = require(resolve("package.json")) -var partsNameRegexp = /^@cloudbeaver\/.+$/ - -var deps = Object.keys(package.dependencies) - .filter(dep => partsNameRegexp.test(dep)) - .map(dep => { - const from = `./node_modules/${dep}/lib` - if (!fs.existsSync(from)) { - return false; - } - - return { from, to: `./${dep}`, force: true } - }) module.exports = (env, argv) => merge(commonConfig(env, argv), { entry: main, @@ -36,6 +23,7 @@ module.exports = (env, argv) => merge(commonConfig(env, argv), { splitChunks: { chunks: 'all', }, + sideEffects: false, minimize: true, namedModules: true, concatenateModules: true, @@ -44,13 +32,12 @@ module.exports = (env, argv) => merge(commonConfig(env, argv), { new CopyWebpackPlugin({ patterns: [ { from: './public', to: '', force: true }, - ].filter(Boolean) + ] }), new webpack.DefinePlugin({ version: JSON.stringify(package.buildVersion), }), new HtmlWebpackPlugin({ template: resolve('src/index.html.ejs'), }), - // new webpack.HotModuleReplacementPlugin(), // enable HMR globally new webpack.NamedModulesPlugin(), ], }); diff --git a/webapp/configs/webpack.product.dev.config.js b/webapp/configs/webpack.product.dev.config.js index 3bba50cac5..7141d79823 100644 --- a/webapp/configs/webpack.product.dev.config.js +++ b/webapp/configs/webpack.product.dev.config.js @@ -1,24 +1,12 @@ const merge = require('webpack-merge'); const webpack = require('webpack'); -const { resolve, join } = require('path'); -const fs = require('fs'); +const { resolve } = require('path'); const commonConfig = require('./webpack.config.js'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; var packageJson = require(resolve("package.json")) -var partsNameRegexp = /^@cloudbeaver\/.+$/ - -var deps = Object.keys(packageJson.dependencies) - .filter(dep => partsNameRegexp.test(dep)) - .map(dep => { - const from = `./node_modules/${dep}/lib` - if (!fs.existsSync(from)) { - return false; - } - - return { from, to: `./${dep}`, force: true } - }) module.exports = (env, argv) => merge(commonConfig(env, argv), { entry: [ @@ -38,14 +26,14 @@ module.exports = (env, argv) => merge(commonConfig(env, argv), { new CopyWebpackPlugin({ patterns: [ { from: './public', to: '', force: true }, - ].filter(Boolean) + ] }), new webpack.DefinePlugin({ - dbeaverPlugins: JSON.stringify(packageJson.dbeaverPlugins), version: JSON.stringify(packageJson.buildVersion), }), new HtmlWebpackPlugin({ template: resolve('src/index.html.ejs'), }), - // new webpack.HotModuleReplacementPlugin(), // enable HMR globally + new webpack.HotModuleReplacementPlugin(), // enable HMR globally new webpack.NamedModulesPlugin(), + // new BundleAnalyzerPlugin() ], }); diff --git a/webapp/package.json b/webapp/package.json index 23a7afd77b..90a2e7278e 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -24,6 +24,13 @@ "@types/react-dom": "^16.9.8", "@typescript-eslint/eslint-plugin": "^2.5.0", "@typescript-eslint/parser": "^2.8.0", + "babel-loader": "^8.0.6", + "babel-plugin-module-resolver": "^4.0.0", + "babel-plugin-react-require": "^3.1.3", + "babel-plugin-transform-typescript-metadata": "^0.3.0", + "copy-webpack-plugin": "^6.0.2", + "css-loader": "^3.2.1", + "declaration-bundler-webpack-plugin": "^1.0.3", "eslint": "^6.6.0", "eslint-config-airbnb-base": "^14.0.0", "eslint-import-resolver-typescript": "^2.0.0", @@ -34,14 +41,6 @@ "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-react": "^7.16.0", "eslint-plugin-react-hooks": "^1.7.0", - "babel-loader": "^8.0.6", - "babel-plugin-module-resolver": "^4.0.0", - "babel-plugin-react-require": "^3.1.3", - "babel-plugin-transform-typescript-metadata": "^0.3.0", - "babel-preset-latest": "^6.24.1", - "copy-webpack-plugin": "^6.0.2", - "css-loader": "^3.2.1", - "declaration-bundler-webpack-plugin": "^1.0.3", "html-webpack-plugin": "^4.3.0", "lerna": "^3.20.2", "mini-css-extract-plugin": "^0.9.0", @@ -62,6 +61,7 @@ "ts-loader": "^7.0.5", "typescript": "^3.8.3", "webpack": "4.43.0", + "webpack-bundle-analyzer": "^3.8.0", "webpack-cli": "3.3.11", "webpack-dev-server": "3.11.0", "webpack-merge": "4.2.2" diff --git a/webapp/packages/product-default/package.json b/webapp/packages/product-default/package.json index 165ce980f0..43caba5ac0 100644 --- a/webapp/packages/product-default/package.json +++ b/webapp/packages/product-default/package.json @@ -9,6 +9,8 @@ "prebuild": "rimraf lib/*", "build": "webpack --config ../../configs/webpack.product.config", "dev": "webpack-dev-server --progress --config=../../configs/webpack.product.dev.config --port=3100", + "analyse": "webpack --config ../../configs/webpack.product.config --profile --json > ./lib/stats.json", + "postanalyse": "webpack-bundle-analyzer ./lib/stats.json", "lint": "eslint ./src/ --ext .ts,.tsx", "lint-fix": "eslint ./src/ --ext .ts,.tsx --fix" }, diff --git a/webapp/packages/product-default/src/index.html.ejs b/webapp/packages/product-default/src/index.html.ejs index 1cb1dcb46c..0a01000589 100644 --- a/webapp/packages/product-default/src/index.html.ejs +++ b/webapp/packages/product-default/src/index.html.ejs @@ -1,22 +1,23 @@ - - - - - - - + + + + + + + + Cloudbeaver diff --git a/webapp/tsconfig.json b/webapp/tsconfig.json index 8454adef51..621a8010f5 100644 --- a/webapp/tsconfig.json +++ b/webapp/tsconfig.json @@ -10,16 +10,14 @@ "allowJs": true, "lib": [ "dom", - "es2015", - "es2016", - "ESNext" + "ES2019" ], "experimentalDecorators": true, "emitDecoratorMetadata": true, "emitDeclarationOnly": true, "jsx": "preserve", - "target": "esnext", - "module": "ESNext", + "target": "ES6", + "module": "none", "moduleResolution": "node", "declaration": true, "declarationMap": true, diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 801541f4f2..004f6ad7c7 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -3013,6 +3013,11 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" @@ -4093,6 +4098,16 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -4561,6 +4576,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== + chokidar@3.4.0, "chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" @@ -4793,7 +4813,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0, commander@~2.20.3: +commander@^2.18.0, commander@^2.20.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -5902,6 +5922,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + electron-to-chromium@^1.3.413: version "1.3.475" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.475.tgz#67688cc82c342f39594a412286e975eda45d8412" @@ -6406,7 +6431,7 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -express@^4.17.1: +express@^4.16.3, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -6642,6 +6667,11 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -7281,6 +7311,14 @@ graphql@^15.x.x: resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.1.0.tgz#b93e28de805294ec08e1630d901db550cb8960a1" integrity sha512-0TVyfOlCGhv/DBczQkJmwXOK6fjWkjzY3Pt7wY8i0gcYXq8aogG3weCsg48m72lywKSeOqedEHvVPOvZvSD51Q== +gzip-size@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -7429,6 +7467,11 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -9870,6 +9913,11 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -13262,6 +13310,11 @@ trim-off-newlines@^1.0.0: dependencies: glob "^7.1.2" +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + ts-invariant@^0.4.0: version "0.4.4" resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" @@ -13747,6 +13800,25 @@ webidl-conversions@^5.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== +webpack-bundle-analyzer@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" + integrity sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + webpack-cli@3.3.11: version "3.3.11" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" @@ -14076,7 +14148,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.2.1: +ws@^6.0.0, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==