feat(docz-bundler-webpack): improve webpack config

This commit is contained in:
Pedro Nauck
2018-04-17 14:45:33 -03:00
parent 1ceac6c4e9
commit 964832a77b
10 changed files with 368 additions and 136 deletions

1
.prettierignore Normal file
View File

@@ -0,0 +1 @@
packages/docz-bundler-webpack/src/config.ts

View File

@@ -8,36 +8,40 @@
"typings": "./dist/index.d.ts",
"license": "MIT",
"scripts": {
"clean": "trash dist",
"compile": "tsc -p tsconfig.json",
"dev": "libundler watch --ts --external all",
"build": "libundler build --ts --external all --compress --sourcemap",
"fix": "run-s fix:*",
"dev": "libundler watch --ts -e all",
"build": "libundler build --ts -e all -c -sm",
"fix:prettier": "prettier \"src/**/*.{ts,tsx}\" --write",
"fix:tslint": "tslint --fix --project ."
"fix:tslint": "yarn run tslint --fix",
"tslint": "tslint --project ."
},
"dependencies": {
"@babel/core": "^7.0.0-beta.44",
"@babel/runtime": "^7.0.0-beta.44",
"babel-polyfill": "^7.0.0-beta.3",
"babel-loader": "^8.0.0-beta.1",
"babel-polyfill": "^7.0.0-beta.3",
"babel-preset-react-app": "^4.0.0-next.b2fd8db8",
"express": "^4.16.3",
"deepmerge": "^2.1.0",
"docz-core": "^0.0.1",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"load-cfg": "^0.0.1",
"docz-core": "^0.0.1",
"react-dev-utils": "^5.0.1",
"react-hot-loader": "^4.0.1",
"thread-loader": "^1.1.5",
"url-loader": "^1.0.1",
"webpack": "^4.5.0",
"webpack-chain": "^4.6.0",
"webpack-dev-middleware": "^3.1.2",
"webpack-dev-server": "^3.1.3"
"webpack-dev-server": "^3.1.3",
"webpackbar": "^2.6.1"
},
"devDependencies": {
"@types/deepmerge": "^2.1.0",
"@types/html-webpack-plugin": "^2.30.3",
"@types/node": "9.6.4",
"@types/webpack": "^4.1.3",
"@types/webpack-chain": "^4.0.2",
"@types/webpack-dev-server": "^2.9.4"
}
}

View File

@@ -1,81 +0,0 @@
import * as path from 'path'
import { Configuration } from 'webpack'
import * as webpack from 'webpack'
import * as HtmlWebpackPlugin from 'html-webpack-plugin'
import * as WebpackDevServer from 'webpack-dev-server'
import { ConfigArgs as Config } from 'docz-core'
import webpackDevServerUtils from 'react-dev-utils/WebpackDevServerUtils'
import { devServerConfig } from './config-devserver'
import * as loaders from './loaders'
export const config = ({ paths, host }: Config) => (): Configuration => ({
mode: 'development',
devtool: '#source-map',
context: paths.root,
entry: [
require.resolve('babel-polyfill'),
require.resolve('react-dev-utils/webpackHotDevClient'),
paths.indexJs,
],
output: {
pathinfo: true,
path: paths.dist,
publicPath: '/',
filename: 'static/js/[name].js',
sourceMapFilename: 'static/js/[name].js.map',
crossOriginLoading: 'anonymous',
devtoolModuleFilenameTemplate: (info: any) =>
path.resolve(info.absoluteResourcePath).replace(/\\/g, '/'),
},
module: {
rules: [
{
oneOf: [
{
test: /\.(js|jsx|mjs)$/,
exclude: /node_modules/,
include: [paths.root, paths.docz],
use: [require.resolve('thread-loader'), loaders.babel],
},
],
},
],
},
resolve: {
extensions: ['.web.js', '.mjs', '.js', '.json', '.web.jsx', '.jsx'],
modules: ['node_modules', paths.root],
alias: {
'@babel/runtime': path.dirname(
require.resolve('@babel/runtime/package.json')
),
},
},
plugins: [
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
inject: true,
template: paths.indexHtml,
}),
],
})
export const compiler = ({ paths, port, host, protocol }: Config) => (
config: Configuration
) => {
const appName = require(paths.packageJson).name
const urls = webpackDevServerUtils.prepareUrls(protocol, host, port)
return webpackDevServerUtils.createCompiler(
webpack,
config,
appName,
urls,
true
)
}
export const server = (config: Config) => (compiler: any): WebpackDevServer =>
new WebpackDevServer(compiler, devServerConfig(config))

View File

@@ -0,0 +1,197 @@
import * as path from 'path'
import * as webpack from 'webpack'
import { Configuration } from 'webpack'
import { ConfigArgs } from 'docz-core'
import { load } from 'load-cfg'
import Webpackbar from 'webpackbar'
import HtmlWebpackPlugin from 'html-webpack-plugin'
import Config from 'webpack-chain'
import merge from 'deepmerge'
const INLINE_LIMIT = 10000
export const createConfig = (args: ConfigArgs) => (): Configuration => {
const { paths, env, debug } = args
const isProd = env === 'production'
const config = new Config()
/**
* general
*/
config.context(paths.root)
config.set('mode', isProd && !debug ? 'production' : 'development')
config.when(debug, cfg => cfg.devtool('source-map'))
config.when(!isProd, cfg => cfg.devtool('cheap-module-eval-source-map'))
config.node.merge({
child_process: 'empty',
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
})
/**
* output
*/
const outputProd = (output: Config.Output) =>
output
.filename('static/js/[name].[chunkhash:8].js')
.sourceMapFilename('static/js/[name].[chunkhash:8].js.map')
.publicPath(paths.servedPath)
const outputDev = (output: Config.Output) =>
output
.filename('static/js/[name].js')
.sourceMapFilename('static/js/[name].js.map')
.publicPath('/')
config.output
.pathinfo(true)
.path(paths.dist)
.when(isProd, outputProd, outputDev )
.crossOriginLoading('anonymous')
/**
* entries
*/
const addHotClientEntry = (entry: Config.EntryPoint) =>
entry.add(require.resolve('react-dev-utils/webpackHotDevClient'))
config
.entry('app')
.when(!isProd, addHotClientEntry)
.add(require.resolve('babel-polyfill'))
.add(paths.indexJs)
/**
* resolve
*/
config.resolve
.set('symlinks', true)
.alias
.set('@babel/runtime', path.dirname(
require.resolve('@babel/runtime/package.json')
))
config.resolve
.extensions
.merge(['.web.js', '.mjs', '.js', '.json', '.web.jsx', '.jsx'])
.end()
.modules
.add('node_modules')
.add(paths.root)
config.resolveLoader
.set('symlinks', true)
.modules
.add('node_modules')
.add(paths.root)
/**
* loaders
*/
const babelrc = merge(load('babel', null), {
babelrc: false,
cacheDirectory: true,
highlightCode: true,
plugins: [require.resolve('react-hot-loader/babel')],
presets: [require.resolve('babel-preset-react-app')],
})
config.module
.rule('js')
.test(/\.js?x$/)
.include
.add(paths.root)
.add(paths.docz)
.end()
.exclude
.add(/node_modules/)
.end()
.use('thread-loader')
.loader(require.resolve('thread-loader'))
.end()
.use('babel-loader')
.loader(require.resolve('babel-loader'))
.options(babelrc)
config.module
.rule('images')
.test(/\.(png|jpe?g|gif)(\?.*)?$/)
.use('url-loader')
.loader(require.resolve('url-loader'))
.options({
limit: INLINE_LIMIT,
name: `static/img/[name].[hash:8].[ext]`,
})
config.module
.rule('svg')
.test(/\.(svg)(\?.*)?$/)
.use('file-loader')
.loader(require.resolve('file-loader'))
.options({
name: `static/img/[name].[hash:8].[ext]`,
})
config.module
.rule('media')
.test(/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/)
.use('url-loader')
.loader(require.resolve('url-loader'))
.options({
limit: INLINE_LIMIT,
name: `static/media/[name].[hash:8].[ext]`,
})
config.module
.rule('fonts')
.test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/i)
.use('url-loader')
.loader(require.resolve('url-loader'))
.options({
limit: INLINE_LIMIT,
name: `static/fonts/[name].[hash:8].[ext]`,
})
/**
* plugins
*/
config.when(!isProd, cfg =>
cfg
.plugin('hot-module-replacement-plugin')
.use(webpack.HotModuleReplacementPlugin)
)
config
.plugin('named-modules-plugin')
.use(webpack.NamedModulesPlugin)
.end()
.plugin('no-emit-errors')
.use(webpack.NoEmitOnErrorsPlugin)
.end()
.plugin('html-webpack-plugin')
.use(HtmlWebpackPlugin, [{
inject: true,
template: paths.indexHtml,
}])
config.when(!debug, cfg =>
cfg
.plugin('webpackbar')
.use(Webpackbar, [{
color: '#41b883',
compiledIn: false,
name: 'Client',
}])
)
return config.toConfig()
}

View File

@@ -2,33 +2,30 @@ import { ConfigArgs } from 'docz-core'
import { Application } from 'express'
import errorOverlayMiddleware from 'react-dev-utils/errorOverlayMiddleware'
export const PROTOCOL = process.env.HTTPS === 'true' ? 'https' : 'http'
export const HOST = process.env.HOST || '0.0.0.0'
export const devServerConfig = ({ paths }: ConfigArgs) => ({
compress: true,
export const devServerConfig = ({ paths, host, protocol }: ConfigArgs) => ({
host,
before(app: Application): void {
app.use(errorOverlayMiddleware())
},
clientLogLevel: 'none',
compress: true,
contentBase: paths.docz,
watchContentBase: true,
hot: true,
quiet: true,
noInfo: true,
publicPath: '/',
https: PROTOCOL === 'https',
host: HOST,
overlay: false,
watchOptions: {
ignored: /node_modules/,
},
stats: {
colors: true,
chunks: false,
chunkModules: false,
},
historyApiFallback: {
disableDotRule: true,
},
before(app: Application) {
app.use(errorOverlayMiddleware())
hot: true,
https: protocol === 'https',
noInfo: true,
overlay: false,
publicPath: '/',
quiet: true,
stats: {
chunkModules: false,
chunks: false,
colors: true,
},
watchContentBase: true,
watchOptions: {
ignored: /node_modules/,
},
})

View File

@@ -1,15 +1,30 @@
import { Configuration } from 'webpack'
import { createBundler, IBundlerCreate } from 'docz-core'
import { ConfigArgs, createBundler, BundlerCreate } from 'docz-core'
import * as webpack from 'webpack'
import * as WebpackDevServer from 'webpack-dev-server'
import WebpackDevServerUtils from 'react-dev-utils/WebpackDevServerUtils'
import { config, compiler, server } from './config.dev'
import { devServerConfig } from './devserver'
import { createConfig as config } from './config'
export const bundler: IBundlerCreate<
export const compiler = ({ paths, port, host, protocol }: ConfigArgs) => (
cfg: Configuration
) => {
const appName = require(paths.packageJson).name
const urls = WebpackDevServerUtils.prepareUrls(protocol, host, port)
return WebpackDevServerUtils.createCompiler(webpack, cfg, appName, urls, true)
}
export const server = (cfg: ConfigArgs) => (comp: any): WebpackDevServer =>
new WebpackDevServer(comp, devServerConfig(cfg))
export const bundler: BundlerCreate<
Configuration,
WebpackDevServer
> = createBundler<Configuration, WebpackDevServer>({
id: 'webpack',
compiler,
config,
server,
compiler,
id: 'webpack',
})

View File

@@ -1,14 +0,0 @@
import { Loader } from 'webpack'
import { load } from 'load-cfg'
import merge from 'deepmerge'
export const babel: Loader = {
loader: require.resolve('babel-loader'),
options: merge(load('babel', null), {
babelrc: false,
cacheDirectory: true,
highlightCode: true,
presets: [require.resolve('babel-preset-react-app')],
plugins: [require.resolve('react-hot-loader/babel')],
}),
}

View File

@@ -1,2 +1,3 @@
declare module 'react-dev-utils/errorOverlayMiddleware'
declare module 'react-dev-utils/WebpackDevServerUtils'
declare module 'webpackbar'

View File

@@ -7,9 +7,11 @@
// TODO: allow devDependencies only in **/*.spec.ts files:
// waiting on https://github.com/palantir/tslint/pull/3708
"no-unused-expression": [true, "allow-fast-null-checks"],
"no-implicit-dependencies": [true, "dev"],
"no-duplicate-imports": false,
"no-submodule-imports": false,
"no-console": false,
// Recommended built-in rules
"no-var-keyword": true,

118
yarn.lock
View File

@@ -1440,6 +1440,12 @@
dependencies:
source-map "^0.6.1"
"@types/webpack-chain@^4.0.2":
version "4.0.2"
resolved "https://registry.npmjs.org/@types/webpack-chain/-/webpack-chain-4.0.2.tgz#f7e91b0bb37ed3f4cf3b092f6733bcb1d60931ed"
dependencies:
"@types/webpack" "*"
"@types/webpack-dev-server@^2.9.4":
version "2.9.4"
resolved "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz#cc3c398330ba87c0f1c7bfd020cfafb7bb895493"
@@ -1522,7 +1528,7 @@ ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
ajv-keywords@^3.1.0:
ajv-keywords@^3.0.0, ajv-keywords@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
@@ -1542,6 +1548,15 @@ ajv@^5.2.3, ajv@^5.3.0:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
ajv@^6.0.1:
version "6.4.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6"
dependencies:
fast-deep-equal "^1.0.0"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
uri-js "^3.0.2"
ajv@^6.1.0:
version "6.3.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.3.0.tgz#1650a41114ef00574cac10b8032d8f4c14812da7"
@@ -2484,6 +2499,15 @@ connect-history-api-fallback@^1.3.0:
version "1.5.0"
resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
consola@^1.2.0:
version "1.3.0"
resolved "https://registry.npmjs.org/consola/-/consola-1.3.0.tgz#b5effe41c4ecdce971d79268d72b8f9bde0a8c7a"
dependencies:
chalk "^2.3.2"
figures "^2.0.0"
lodash "^4.17.5"
std-env "^1.1.0"
console-browserify@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
@@ -2905,6 +2929,10 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
deepmerge@^1.5.2:
version "1.5.2"
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
deepmerge@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.0.tgz#511a54fff405fc346f0240bb270a3e9533a31102"
@@ -3603,6 +3631,13 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
file-loader@^1.1.11:
version "1.1.11"
resolved "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
dependencies:
loader-utils "^1.0.2"
schema-utils "^0.4.5"
filename-regex@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
@@ -4443,7 +4478,7 @@ is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
is-ci@^1.0.10:
is-ci@^1.0.10, is-ci@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
dependencies:
@@ -4575,6 +4610,10 @@ is-number@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
is-number@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/is-number/-/is-number-5.0.0.tgz#c393bc471e65de1a10a6abcb20efeb12d2b88166"
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -5044,7 +5083,7 @@ log-symbols@^2.1.0:
dependencies:
chalk "^2.0.1"
log-update@^2.1.0:
log-update@^2.1.0, log-update@^2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
dependencies:
@@ -5258,6 +5297,10 @@ mime@1.4.1:
version "1.4.1"
resolved "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
mime@^2.0.3:
version "2.3.1"
resolved "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369"
mime@^2.1.0:
version "2.2.0"
resolved "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b"
@@ -5414,6 +5457,10 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
nanoseconds@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/nanoseconds/-/nanoseconds-1.0.1.tgz#596efc62110766be1ede671fedd861f5562318d3"
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -6006,6 +6053,13 @@ pretty-ms@^3.1.0:
parse-ms "^1.0.0"
plur "^2.1.2"
pretty-time@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/pretty-time/-/pretty-time-1.0.0.tgz#544784adecaa2cd7d045ff8a8f1d4791c8e06e23"
dependencies:
is-number "^5.0.0"
nanoseconds "^1.0.0"
private@^0.1.6:
version "0.1.8"
resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
@@ -6098,6 +6152,10 @@ punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
q@^1.4.1, q@^1.5.1:
version "1.5.1"
resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -6737,7 +6795,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
schema-utils@^0.4.2, schema-utils@^0.4.5:
schema-utils@^0.4.2, schema-utils@^0.4.3, schema-utils@^0.4.5:
version "0.4.5"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
dependencies:
@@ -7098,6 +7156,12 @@ static-extend@^0.1.1:
version "1.4.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
std-env@^1.1.0, std-env@^1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/std-env/-/std-env-1.3.0.tgz#8ce754a401a61f1ac49c8eb55f2a8c0c63d54954"
dependencies:
is-ci "^1.1.0"
stream-browserify@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
@@ -7254,6 +7318,17 @@ table@4.0.2:
slice-ansi "1.0.0"
string-width "^2.1.1"
table@^4.0.3:
version "4.0.3"
resolved "https://registry.npmjs.org/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
dependencies:
ajv "^6.0.1"
ajv-keywords "^3.0.0"
chalk "^2.1.0"
lodash "^4.17.4"
slice-ansi "1.0.0"
string-width "^2.1.1"
tapable@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2"
@@ -7656,6 +7731,12 @@ upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
uri-js@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"
dependencies:
punycode "^2.1.0"
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@@ -7664,6 +7745,14 @@ url-join@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a"
url-loader@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz#61bc53f1f184d7343da2728a1289ef8722ea45ee"
dependencies:
loader-utils "^1.1.0"
mime "^2.0.3"
schema-utils "^0.4.3"
url-parse-lax@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
@@ -7799,6 +7888,12 @@ wcwidth@^1.0.0:
dependencies:
defaults "^1.0.3"
webpack-chain@^4.6.0:
version "4.6.0"
resolved "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.6.0.tgz#3ff51bd6241ed78a62691b8da7b9dec3fcc346a0"
dependencies:
deepmerge "^1.5.2"
webpack-dev-middleware@3.1.2, webpack-dev-middleware@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.2.tgz#be4d0c36a4fa7d69d6904093418514caa9df3a40"
@@ -7884,6 +7979,21 @@ webpack@^4.5.0:
watchpack "^1.5.0"
webpack-sources "^1.0.1"
webpackbar@^2.6.1:
version "2.6.1"
resolved "https://registry.npmjs.org/webpackbar/-/webpackbar-2.6.1.tgz#d1aff0665c43635ff35672be2f2463d1176bdb6f"
dependencies:
chalk "^2.3.2"
consola "^1.2.0"
figures "^2.0.0"
loader-utils "^1.1.0"
lodash "^4.17.5"
log-update "^2.3.0"
pretty-time "^1.0.0"
schema-utils "^0.4.5"
std-env "^1.3.0"
table "^4.0.3"
websocket-driver@>=0.5.1:
version "0.7.0"
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"