mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-04-22 20:38:55 -05:00
build & serve
This commit is contained in:
@@ -18,4 +18,7 @@ const service = new Service()
|
||||
const args = require('minimist')(process.argv.slice(2))
|
||||
const command = args._[0]
|
||||
|
||||
service.run(command, args)
|
||||
service.run(command, args).catch(err => {
|
||||
error(err)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
@@ -2,7 +2,7 @@ module.exports = (generatorAPI, options) => {
|
||||
generatorAPI.render('./template')
|
||||
generatorAPI.extendPackage({
|
||||
scripts: {
|
||||
'dev': 'vue-cli-service serve' + (
|
||||
'dev': 'vue-cli-service dev' + (
|
||||
// only auto open browser on MacOS where applescript
|
||||
// can avoid dupilcate window opens
|
||||
process.platform === 'darwin'
|
||||
@@ -10,7 +10,7 @@ module.exports = (generatorAPI, options) => {
|
||||
: ''
|
||||
),
|
||||
'build': 'vue-cli-service build',
|
||||
'start': 'vue-cli-service serve --prod'
|
||||
'start': 'vue-cli-service serve'
|
||||
},
|
||||
dependencies: {
|
||||
'vue': '^2.5.13'
|
||||
|
||||
@@ -9,6 +9,8 @@ const Config = require('webpack-chain')
|
||||
const PluginAPI = require('./PluginAPI')
|
||||
const { info, warn, error } = require('@vue/cli-shared-utils')
|
||||
|
||||
const defaultOptions = require('./defaults')
|
||||
|
||||
module.exports = class Service {
|
||||
constructor () {
|
||||
this.webpackConfig = new Config()
|
||||
@@ -20,7 +22,7 @@ module.exports = class Service {
|
||||
const pkg = getPkg.sync()
|
||||
this.pkg = pkg.pkg || {}
|
||||
this.context = path.dirname(pkg.path)
|
||||
this.projectOptions = this.loadProjectConfig()
|
||||
this.projectOptions = Object.assign(defaultOptions, this.loadProjectConfig())
|
||||
debug('vue:project-config')(this.projectOptions)
|
||||
|
||||
// load base .env
|
||||
@@ -67,8 +69,9 @@ module.exports = class Service {
|
||||
|
||||
resolvePlugins () {
|
||||
const builtInPlugins = [
|
||||
'./commands/serve',
|
||||
'./commands/dev',
|
||||
'./commands/build',
|
||||
'./commands/serve',
|
||||
'./commands/inspect',
|
||||
'./commands/help',
|
||||
// config plugins are order sensitive
|
||||
@@ -98,7 +101,7 @@ module.exports = class Service {
|
||||
args._.shift() // remove command itself
|
||||
}
|
||||
const { fn } = command
|
||||
return fn(args)
|
||||
return Promise.resolve(fn(args))
|
||||
}
|
||||
|
||||
resolveWebpackConfig () {
|
||||
@@ -133,12 +136,12 @@ module.exports = class Service {
|
||||
}
|
||||
}
|
||||
|
||||
// package['vue-cli']
|
||||
pkgConfig = this.pkg['vue-cli']
|
||||
// package.vue
|
||||
pkgConfig = this.pkg.vue
|
||||
if (pkgConfig && typeof pkgConfig !== 'object') {
|
||||
error(
|
||||
`Error loading vue-cli config in ${chalk.bold(`package.json`)}: ` +
|
||||
`the "vue-cli" field should be an object.`
|
||||
`the "vue" field should be an object.`
|
||||
)
|
||||
pkgConfig = null
|
||||
}
|
||||
@@ -146,14 +149,14 @@ module.exports = class Service {
|
||||
if (fileConfig) {
|
||||
if (pkgConfig) {
|
||||
warn(
|
||||
`"vue-cli" field in ${chalk.bold(`package.json`)} ignored ` +
|
||||
`"vue" field in ${chalk.bold(`package.json`)} ignored ` +
|
||||
`due to presence of ${chalk.bold('vue.config.js')}.`
|
||||
)
|
||||
}
|
||||
info(`Using project config in ${chalk.bold('vue.config.js')}.`)
|
||||
return fileConfig
|
||||
} else if (pkgConfig) {
|
||||
info(`Using project config from "vue-cli" field in ${chalk.bold(`package.json`)}.`)
|
||||
info(`Using project config from "vue" field in ${chalk.bold(`package.json`)}.`)
|
||||
return pkgConfig
|
||||
} else {
|
||||
return {}
|
||||
|
||||
@@ -1,23 +1,70 @@
|
||||
// TODO handle alternative build targets
|
||||
|
||||
const defaults = {
|
||||
mode: 'production',
|
||||
target: 'app',
|
||||
extractCSS: true,
|
||||
sourceMap: true,
|
||||
cssSourceMap: false
|
||||
target: 'app'
|
||||
}
|
||||
|
||||
module.exports = (api, options) => {
|
||||
api.registerCommand('build', {
|
||||
description: 'build for production',
|
||||
usage: 'vue-cli-service build',
|
||||
usage: 'vue-cli-service build [options]',
|
||||
options: {
|
||||
'--mode': `specify env mode (default: ${defaults.mode})`,
|
||||
'--target': `app | library | web-component (default: ${defaults.target})`,
|
||||
'--extractCSS': `extract component CSS into one file. (default: ${defaults.extractCSS})`,
|
||||
'--sourceMap': `generate source map (default: ${defaults.sourceMap})`,
|
||||
'--cssSourceMap': `generate source map for CSS (default: ${defaults.cssSourceMap})`
|
||||
'--target': `app | library | web-component (default: ${defaults.target})`
|
||||
}
|
||||
}, args => {
|
||||
api.setMode(args.mode || defaults.mode)
|
||||
|
||||
const chalk = require('chalk')
|
||||
const rimraf = require('rimraf')
|
||||
const webpack = require('webpack')
|
||||
const {
|
||||
done,
|
||||
info,
|
||||
hasYarn,
|
||||
logWithSpinner,
|
||||
stopSpinner
|
||||
} = require('@vue/cli-shared-utils')
|
||||
|
||||
console.log()
|
||||
logWithSpinner(`Building for production...`)
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const targetDir = api.resolve(options.outputDir)
|
||||
rimraf(targetDir, err => {
|
||||
if (err) {
|
||||
return reject(err)
|
||||
}
|
||||
const webpackConfig = api.resolveWebpackConfig()
|
||||
webpack(webpackConfig, (err, stats) => {
|
||||
stopSpinner(false)
|
||||
if (err) {
|
||||
return reject(err)
|
||||
}
|
||||
process.stdout.write(stats.toString({
|
||||
colors: true,
|
||||
modules: false,
|
||||
// TODO set this to true if using TS
|
||||
children: false,
|
||||
chunks: false,
|
||||
chunkModules: false
|
||||
}) + '\n\n')
|
||||
|
||||
if (stats.hasErrors()) {
|
||||
return reject(`Build failed with errors.`)
|
||||
}
|
||||
|
||||
done(`Build complete. The ${chalk.cyan(options.outputDir)} directory is ready to be deployed.\n`)
|
||||
const previewCommand = chalk.cyan(`${hasYarn ? 'yarn' : 'npm'} start`)
|
||||
info(`You can preview the production app by running ${previewCommand}.\n`)
|
||||
if (options.base === '/') {
|
||||
info(`The app is built assuming that it will be deployed at the root of a domain.`)
|
||||
info(`If you intend to deploy it under a subpath, update the ${chalk.green('base')} option`)
|
||||
info(`in your project config (${chalk.cyan(`vue.config.js`)} or ${chalk.green('"vue"')} field in ${chalk.cyan(`package.json`)}).\n`)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
const {
|
||||
info,
|
||||
error,
|
||||
hasYarn,
|
||||
clearConsole
|
||||
} = require('@vue/cli-shared-utils')
|
||||
|
||||
const defaults = {
|
||||
mode: 'development',
|
||||
host: '0.0.0.0',
|
||||
port: 8080,
|
||||
https: false
|
||||
}
|
||||
|
||||
module.exports = (api, options) => {
|
||||
api.registerCommand('dev', {
|
||||
description: 'start development server',
|
||||
usage: 'vue-cli-service dev [options]',
|
||||
options: {
|
||||
'--open': `open browser on server start`,
|
||||
'--mode': `specify env mode (default: ${defaults.mode})`,
|
||||
'--host': `specify host (default: ${defaults.host})`,
|
||||
'--port': `specify port (default: ${defaults.port})`,
|
||||
'--https': `use https (default: ${defaults.https})`
|
||||
}
|
||||
}, args => {
|
||||
clearConsole()
|
||||
info('Starting development server...')
|
||||
|
||||
api.setMode(args.mode || defaults.mode)
|
||||
|
||||
const chalk = require('chalk')
|
||||
const webpack = require('webpack')
|
||||
const WebpackDevServer = require('webpack-dev-server')
|
||||
const portfinder = require('portfinder')
|
||||
const openBrowser = require('../util/openBrowser')
|
||||
const prepareURLs = require('../util/prepareURLs')
|
||||
const prepareProxy = require('../util/prepareProxy')
|
||||
const overlayMiddleware = require('@vue/cli-overlay/middleware')
|
||||
|
||||
const projectDevServerOptions = options.devServer || {}
|
||||
const useHttps = args.https || projectDevServerOptions.https || defaults.https
|
||||
const host = args.host || process.env.HOST || projectDevServerOptions.host || defaults.host
|
||||
portfinder.basePort = args.port || process.env.PORT || projectDevServerOptions.port || defaults.port
|
||||
|
||||
portfinder.getPort((err, port) => {
|
||||
if (err) {
|
||||
return error(err)
|
||||
}
|
||||
|
||||
const webpackConfig = api.resolveWebpackConfig()
|
||||
|
||||
const urls = prepareURLs(
|
||||
useHttps ? 'https' : 'http',
|
||||
host,
|
||||
port
|
||||
)
|
||||
|
||||
// inject dev/hot client
|
||||
addDevClientToEntry(webpackConfig, [
|
||||
// dev server client
|
||||
`webpack-dev-server/client/?${urls.localUrlForBrowser}`,
|
||||
// hmr client
|
||||
projectDevServerOptions.hotOnly
|
||||
? 'webpack/hot/dev-server'
|
||||
: 'webpack/hot/only-dev-server',
|
||||
// custom overlay client
|
||||
`@vue/cli-overlay/dist/client`
|
||||
])
|
||||
|
||||
const compiler = webpack(webpackConfig)
|
||||
|
||||
// log instructions & open browser on first compilation complete
|
||||
let isFirstCompile = true
|
||||
compiler.plugin('done', stats => {
|
||||
if (stats.hasErrors()) {
|
||||
return
|
||||
}
|
||||
|
||||
console.log([
|
||||
` App running at:`,
|
||||
` - Local: ${chalk.cyan(urls.localUrlForTerminal)}`,
|
||||
` - Network: ${chalk.cyan(urls.lanUrlForTerminal)}`
|
||||
].join('\n'))
|
||||
console.log()
|
||||
|
||||
if (isFirstCompile) {
|
||||
isFirstCompile = false
|
||||
const buildCommand = hasYarn ? `yarn build` : `npm run build`
|
||||
console.log([
|
||||
` Note that the development build is not optimized.`,
|
||||
` To create a production build, run ${chalk.cyan(buildCommand)}.`
|
||||
].join('\n'))
|
||||
console.log()
|
||||
|
||||
if (args.open || projectDevServerOptions.open) {
|
||||
openBrowser(urls.localUrlForBrowser)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const proxySettings = prepareProxy(
|
||||
projectDevServerOptions.proxy,
|
||||
api.resolve('public')
|
||||
)
|
||||
|
||||
const server = new WebpackDevServer(compiler, Object.assign({
|
||||
clientLogLevel: 'none',
|
||||
historyApiFallback: {
|
||||
disableDotRule: true
|
||||
},
|
||||
contentBase: api.resolve('public'),
|
||||
watchContentBase: true,
|
||||
hot: true,
|
||||
quiet: true,
|
||||
compress: true,
|
||||
publicPath: webpackConfig.output.publicPath
|
||||
}, projectDevServerOptions, {
|
||||
https: useHttps,
|
||||
proxy: proxySettings,
|
||||
before (app) {
|
||||
// overlay
|
||||
app.use(overlayMiddleware())
|
||||
// allow other plugins to register middlewares, e.g. PWA
|
||||
api.service.devServerConfigFns.forEach(fn => fn(app))
|
||||
// apply in project middlewares
|
||||
projectDevServerOptions.before && projectDevServerOptions.before(app)
|
||||
}
|
||||
}))
|
||||
|
||||
server.listen(port, host, err => {
|
||||
if (err) {
|
||||
return error(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function addDevClientToEntry (config, devClient) {
|
||||
const { entry } = config
|
||||
if (typeof entry === 'object' && !Array.isArray(entry)) {
|
||||
Object.keys(entry).forEach((key) => {
|
||||
entry[key] = devClient.concat(entry[key])
|
||||
})
|
||||
} else if (typeof entry === 'function') {
|
||||
config.entry = entry(devClient)
|
||||
} else {
|
||||
config.entry = devClient.concat(entry)
|
||||
}
|
||||
}
|
||||
@@ -53,6 +53,10 @@ module.exports = (api, options) => {
|
||||
}`)
|
||||
}
|
||||
}
|
||||
if (opts.details) {
|
||||
console.log()
|
||||
console.log(opts.details.split('\n').map(line => ` ${line}`).join('\n'))
|
||||
}
|
||||
console.log()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module.exports = (api, options) => {
|
||||
api.registerCommand('inspect', {
|
||||
description: 'inspect internal webpack config',
|
||||
usage: 'vue-cli-service inspect [...keys]',
|
||||
usage: 'vue-cli-service inspect [options] [...keys]',
|
||||
options: {
|
||||
'--env': 'specify NODE_ENV (default: development)'
|
||||
}
|
||||
|
||||
@@ -1,146 +1,28 @@
|
||||
const { info, error, hasYarn, clearConsole } = require('@vue/cli-shared-utils')
|
||||
|
||||
const defaults = {
|
||||
mode: 'development',
|
||||
host: '0.0.0.0',
|
||||
port: 8080,
|
||||
https: false
|
||||
}
|
||||
const chalk = require('chalk')
|
||||
|
||||
module.exports = (api, options) => {
|
||||
api.registerCommand('serve', {
|
||||
description: 'start development server',
|
||||
usage: 'vue-cli-service serve',
|
||||
options: {
|
||||
'--open': `open browser on server start`,
|
||||
'--mode': `specify env mode (default: ${defaults.mode})`,
|
||||
'--host': `specify host (default: ${defaults.host})`,
|
||||
'--port': `specify port (default: ${defaults.port})`,
|
||||
'--https': `use https (default: ${defaults.https})`
|
||||
}
|
||||
description: `start static server in ${chalk.cyan(options.outputDir)}`,
|
||||
usage: 'vue-cli-service serve [options]',
|
||||
details: `For all options, see ${
|
||||
chalk.cyan(`https://github.com/zeit/serve/blob/master/lib/options.js`)
|
||||
}`
|
||||
}, args => {
|
||||
clearConsole()
|
||||
info('Starting development server...')
|
||||
const fs = require('fs')
|
||||
const serve = require('serve')
|
||||
const { error, hasYarn } = require('@vue/cli-shared-utils')
|
||||
|
||||
api.setMode(args.mode || defaults.mode)
|
||||
|
||||
const chalk = require('chalk')
|
||||
const webpack = require('webpack')
|
||||
const WebpackDevServer = require('webpack-dev-server')
|
||||
const portfinder = require('portfinder')
|
||||
const openBrowser = require('../util/openBrowser')
|
||||
const prepareURLs = require('../util/prepareURLs')
|
||||
const prepareProxy = require('../util/prepareProxy')
|
||||
const overlayMiddleware = require('@vue/cli-overlay/middleware')
|
||||
|
||||
const projectDevServerOptions = options.devServer || {}
|
||||
const useHttps = args.https || projectDevServerOptions.https || defaults.https
|
||||
const host = args.host || process.env.HOST || projectDevServerOptions.host || defaults.host
|
||||
portfinder.basePort = args.port || process.env.PORT || projectDevServerOptions.port || defaults.port
|
||||
|
||||
portfinder.getPort((err, port) => {
|
||||
if (err) {
|
||||
return error(err)
|
||||
}
|
||||
|
||||
const webpackConfig = api.resolveWebpackConfig()
|
||||
|
||||
const urls = prepareURLs(
|
||||
useHttps ? 'https' : 'http',
|
||||
host,
|
||||
port
|
||||
const outputDir = api.resolve(options.outputDir)
|
||||
if (!fs.existsSync(outputDir)) {
|
||||
error(
|
||||
`Build directory ${chalk.gray(outputDir)} does not exist. ` +
|
||||
`Run ${chalk.cyan(hasYarn ? 'yarn build' : 'npm run build')} first.`
|
||||
)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
// inject dev/hot client
|
||||
addDevClientToEntry(webpackConfig, [
|
||||
// dev server client
|
||||
`webpack-dev-server/client/?${urls.localUrlForBrowser}`,
|
||||
// hmr client
|
||||
projectDevServerOptions.hotOnly
|
||||
? 'webpack/hot/dev-server'
|
||||
: 'webpack/hot/only-dev-server',
|
||||
// custom overlay client
|
||||
`@vue/cli-overlay/dist/client`
|
||||
])
|
||||
|
||||
const compiler = webpack(webpackConfig)
|
||||
|
||||
// log instructions & open browser on first compilation complete
|
||||
let isFirstCompile = true
|
||||
compiler.plugin('done', stats => {
|
||||
if (stats.hasErrors()) {
|
||||
return
|
||||
}
|
||||
|
||||
console.log([
|
||||
` App running at:`,
|
||||
` - Local: ${chalk.cyan(urls.localUrlForTerminal)}`,
|
||||
` - Network: ${chalk.cyan(urls.lanUrlForTerminal)}`
|
||||
].join('\n'))
|
||||
console.log()
|
||||
|
||||
if (isFirstCompile) {
|
||||
isFirstCompile = false
|
||||
const buildCommand = hasYarn ? `yarn build` : `npm run build`
|
||||
console.log([
|
||||
` Note that the development build is not optimized.`,
|
||||
` To create a production build, run ${chalk.cyan(buildCommand)}.`
|
||||
].join('\n'))
|
||||
console.log()
|
||||
|
||||
if (args.open || projectDevServerOptions.open) {
|
||||
openBrowser(urls.localUrlForBrowser)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const proxySettings = prepareProxy(
|
||||
projectDevServerOptions.proxy,
|
||||
api.resolve('public')
|
||||
)
|
||||
|
||||
const server = new WebpackDevServer(compiler, Object.assign({
|
||||
clientLogLevel: 'none',
|
||||
historyApiFallback: {
|
||||
disableDotRule: true
|
||||
},
|
||||
contentBase: api.resolve('public'),
|
||||
watchContentBase: true,
|
||||
hot: true,
|
||||
quiet: true,
|
||||
compress: true,
|
||||
publicPath: webpackConfig.output.publicPath
|
||||
}, projectDevServerOptions, {
|
||||
https: useHttps,
|
||||
proxy: proxySettings,
|
||||
before (app) {
|
||||
// overlay
|
||||
app.use(overlayMiddleware())
|
||||
// allow other plugins to register middlewares, e.g. PWA
|
||||
api.service.devServerConfigFns.forEach(fn => fn(app))
|
||||
// apply in project middlewares
|
||||
projectDevServerOptions.before && projectDevServerOptions.before(app)
|
||||
}
|
||||
}))
|
||||
|
||||
server.listen(port, host, err => {
|
||||
if (err) {
|
||||
return error(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
return serve(outputDir, Object.assign({}, args, {
|
||||
single: true
|
||||
}))
|
||||
})
|
||||
}
|
||||
|
||||
function addDevClientToEntry (config, devClient) {
|
||||
const { entry } = config
|
||||
if (typeof entry === 'object' && !Array.isArray(entry)) {
|
||||
Object.keys(entry).forEach((key) => {
|
||||
entry[key] = devClient.concat(entry[key])
|
||||
})
|
||||
} else if (typeof entry === 'function') {
|
||||
config.entry = entry(devClient)
|
||||
} else {
|
||||
config.entry = devClient.concat(entry)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
const webpack = require('webpack')
|
||||
const resolveLocal = require('../util/resolveLocal')
|
||||
const resolveClientEnv = require('../util/resolveClientEnv')
|
||||
const TimeFixPlugin = require('../util/TimeFixPlugin')
|
||||
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin')
|
||||
|
||||
module.exports = (api, options) => {
|
||||
api.chainWebpack(webpackConfig => {
|
||||
const webpack = require('webpack')
|
||||
const resolveLocal = require('../util/resolveLocal')
|
||||
const resolveClientEnv = require('../util/resolveClientEnv')
|
||||
const HTMLPlugin = require('html-webpack-plugin')
|
||||
const TimeFixPlugin = require('../util/TimeFixPlugin')
|
||||
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin')
|
||||
|
||||
webpackConfig
|
||||
.context(api.service.context)
|
||||
.entry('app')
|
||||
.add('./src/main.js')
|
||||
.end()
|
||||
.output
|
||||
.path(api.resolve('dist'))
|
||||
.path(api.resolve(options.outputDir))
|
||||
.filename('[name].js')
|
||||
.publicPath('/')
|
||||
.publicPath(options.base)
|
||||
|
||||
webpackConfig.resolve
|
||||
.set('symlinks', true)
|
||||
@@ -53,7 +54,7 @@ module.exports = (api, options) => {
|
||||
.loader('url-loader')
|
||||
.options({
|
||||
limit: 10000,
|
||||
name: 'public/img/[name].[hash:7].[ext]'
|
||||
name: `${options.staticDir}/img/[name].[hash:8].[ext]`
|
||||
})
|
||||
|
||||
// do not base64-inline SVGs.
|
||||
@@ -64,7 +65,7 @@ module.exports = (api, options) => {
|
||||
.use('file-loader')
|
||||
.loader('file-loader')
|
||||
.options({
|
||||
name: 'public/img/[name].[hash:7].[ext]'
|
||||
name: `${options.staticDir}/img/[name].[hash:8].[ext]`
|
||||
})
|
||||
|
||||
webpackConfig.module
|
||||
@@ -74,7 +75,7 @@ module.exports = (api, options) => {
|
||||
.loader('url-loader')
|
||||
.options({
|
||||
limit: 10000,
|
||||
name: 'public/media/[name].[hash:7].[ext]'
|
||||
name: `${options.staticDir}/media/[name].[hash:8].[ext]`
|
||||
})
|
||||
|
||||
webpackConfig.module
|
||||
@@ -84,7 +85,7 @@ module.exports = (api, options) => {
|
||||
.loader('url-loader')
|
||||
.options({
|
||||
limit: 10000,
|
||||
name: 'public/fonts/[name].[hash:7].[ext]'
|
||||
name: `${options.staticDir}/fonts/[name].[hash:8].[ext]`
|
||||
})
|
||||
|
||||
webpackConfig.node
|
||||
@@ -101,6 +102,13 @@ module.exports = (api, options) => {
|
||||
child_process: 'empty'
|
||||
})
|
||||
|
||||
// TODO handle publicPath in template
|
||||
webpackConfig
|
||||
.plugin('html')
|
||||
.use(HTMLPlugin, [{
|
||||
template: api.resolve('public/index.html')
|
||||
}])
|
||||
|
||||
webpackConfig
|
||||
.plugin('define')
|
||||
.use(webpack.DefinePlugin, [resolveClientEnv()])
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||
const CSSLoaderResolver = require('../util/CSSLoaderResolver')
|
||||
|
||||
module.exports = (api, options) => {
|
||||
api.chainWebpack(webpackConfig => {
|
||||
const CSSLoaderResolver = require('../util/CSSLoaderResolver')
|
||||
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||
|
||||
const isProd = process.env.NODE_ENV === 'production'
|
||||
const extract = isProd && options.extractCSS !== false
|
||||
const resolver = new CSSLoaderResolver({
|
||||
@@ -70,7 +70,7 @@ module.exports = (api, options) => {
|
||||
webpackConfig
|
||||
.plugin('extract-css')
|
||||
.use(ExtractTextPlugin, [Object.assign({
|
||||
filename: '[name].[contenthash:7].css',
|
||||
filename: '[name].[contenthash:8].css',
|
||||
allChunks: true
|
||||
}, userOptions)])
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
const webpack = require('webpack')
|
||||
const HTMLPlugin = require('html-webpack-plugin')
|
||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
||||
const WatchMissingNodeModulesPlugin = require('../util/WatchMissingNodeModulesPlugin')
|
||||
|
||||
module.exports = api => {
|
||||
api.chainWebpack(webpackConfig => {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
const webpack = require('webpack')
|
||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
||||
const WatchMissingNodeModulesPlugin = require('../util/WatchMissingNodeModulesPlugin')
|
||||
|
||||
webpackConfig
|
||||
.devtool('cheap-module-source-map')
|
||||
|
||||
@@ -28,13 +27,6 @@ module.exports = api => {
|
||||
webpackConfig
|
||||
.plugin('watch-missing')
|
||||
.use(WatchMissingNodeModulesPlugin, [api.resolve('node_modules')])
|
||||
|
||||
// TODO handle publicPath in template
|
||||
webpackConfig
|
||||
.plugin('html')
|
||||
.use(HTMLPlugin, [{
|
||||
template: api.resolve('public/index.html')
|
||||
}])
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,7 +1,109 @@
|
||||
module.exports = api => {
|
||||
module.exports = (api, options) => {
|
||||
api.chainWebpack(webpackConfig => {
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
const webpack = require('webpack')
|
||||
const CopyPlugin = require('copy-webpack-plugin')
|
||||
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
|
||||
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
|
||||
|
||||
webpackConfig
|
||||
.devtool('source-map')
|
||||
.output
|
||||
.filename(`${options.staticDir}/js/[name].[chunkhash:8].js`)
|
||||
.chunkFilename(`${options.staticDir}/js/[id].[chunkhash:8].js`)
|
||||
|
||||
// keep module.id stable when vendor modules does not change
|
||||
webpackConfig
|
||||
.plugin('hash-module-ids')
|
||||
.use(webpack.HashedModuleIdsPlugin)
|
||||
|
||||
// enable scope hoisting / tree shaking
|
||||
webpackConfig
|
||||
.plugin('module-concatenation')
|
||||
.use(webpack.optimize.ModuleConcatenationPlugin)
|
||||
|
||||
// minify HTML
|
||||
webpackConfig
|
||||
.plugin('html')
|
||||
.tap(([options]) => [Object.assign(options, {
|
||||
minify: {
|
||||
removeComments: true,
|
||||
collapseWhitespace: true,
|
||||
removeAttributeQuotes: true
|
||||
// more options:
|
||||
// https://github.com/kangax/html-minifier#options-quick-reference
|
||||
},
|
||||
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
|
||||
chunksSortMode: 'dependency'
|
||||
})])
|
||||
|
||||
// optimize CSS (dedupe)
|
||||
webpackConfig
|
||||
.plugin('optimize-css')
|
||||
.use(OptimizeCSSPlugin, [
|
||||
options.productionSourceMap && options.cssSourceMap
|
||||
? { safe: true, map: { inline: false }}
|
||||
: { safe: true }
|
||||
])
|
||||
|
||||
// minify JS
|
||||
webpackConfig
|
||||
.plugin('uglifyjs')
|
||||
.use(UglifyJSPlugin, [{
|
||||
uglifyOptions: {
|
||||
compress: {
|
||||
warnings: false
|
||||
}
|
||||
},
|
||||
sourceMap: options.productionSourceMap,
|
||||
parallel: true
|
||||
}])
|
||||
|
||||
// extract vendor libs into its own chunk for better caching, since they
|
||||
// are more likely to stay the same.
|
||||
webpackConfig
|
||||
.plugin('split-vendor')
|
||||
.use(webpack.optimize.CommonsChunkPlugin, [{
|
||||
name: 'vendor',
|
||||
minChunks (module) {
|
||||
// any required modules inside node_modules are extracted to vendor
|
||||
return (
|
||||
module.resource &&
|
||||
/\.js$/.test(module.resource) &&
|
||||
module.resource.indexOf(`node_modules`) > -1
|
||||
)
|
||||
}
|
||||
}])
|
||||
|
||||
// extract webpack runtime and module manifest to its own file in order to
|
||||
// prevent vendor hash from being updated whenever app bundle is updated
|
||||
webpackConfig
|
||||
.plugin('split-manifest')
|
||||
.use(webpack.optimize.CommonsChunkPlugin, [{
|
||||
name: 'manifest',
|
||||
minChunks: Infinity
|
||||
}])
|
||||
|
||||
// This instance extracts shared chunks from code splitted chunks and bundles them
|
||||
// in a separate chunk, similar to the vendor chunk
|
||||
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
|
||||
webpackConfig
|
||||
.plugin('split-vendor-async')
|
||||
.use(webpack.optimize.CommonsChunkPlugin, [{
|
||||
name: 'app',
|
||||
async: 'vendor-async',
|
||||
children: true,
|
||||
minChunks: 3
|
||||
}])
|
||||
|
||||
// copy static assets in public/
|
||||
webpackConfig
|
||||
.plugin('copy')
|
||||
.use(CopyPlugin, [[{
|
||||
from: api.resolve('public'),
|
||||
to: api.resolve(options.outputDir),
|
||||
ignore: ['index.html', '.*']
|
||||
}]])
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
module.exports = {
|
||||
// project deployment base
|
||||
base: '/',
|
||||
|
||||
// where to output built files
|
||||
outputDir: 'dist',
|
||||
|
||||
// where to generate static assets under outputDir
|
||||
staticDir: 'static',
|
||||
|
||||
// boolean, use full build?
|
||||
compiler: false,
|
||||
|
||||
// apply css modules to CSS files that doesn't end with .mdoule.css?
|
||||
cssModules: false,
|
||||
|
||||
// vue-loader options
|
||||
vueLoaderOptions: {},
|
||||
|
||||
// sourceMap for production build?
|
||||
productionSourceMap: true,
|
||||
|
||||
// enable css source map?
|
||||
cssSourceMap: false,
|
||||
|
||||
// boolean | Object, extract css?
|
||||
extractCSS: true,
|
||||
|
||||
devServer: {
|
||||
/*
|
||||
open: process.platform === 'darwin',
|
||||
host: '0.0.0.0',
|
||||
port: 8080,
|
||||
https: false,
|
||||
hotOnly: false,
|
||||
proxy: null, // string | Object
|
||||
before: app => {}
|
||||
*/
|
||||
}
|
||||
}
|
||||
@@ -26,6 +26,7 @@
|
||||
"address": "^1.0.3",
|
||||
"case-sensitive-paths-webpack-plugin": "^2.1.1",
|
||||
"chalk": "^2.3.0",
|
||||
"copy-webpack-plugin": "^4.3.1",
|
||||
"cross-spawn": "^5.1.0",
|
||||
"css-loader": "^0.28.7",
|
||||
"dotenv": "^4.0.0",
|
||||
@@ -42,7 +43,9 @@
|
||||
"portfinder": "^1.0.13",
|
||||
"postcss-loader": "^2.0.9",
|
||||
"read-pkg-up": "^3.0.0",
|
||||
"rimraf": "^2.6.2",
|
||||
"semver": "^5.4.1",
|
||||
"serve": "^6.4.3",
|
||||
"string.prototype.padend": "^3.0.0",
|
||||
"uglifyjs-webpack-plugin": "^1.1.4",
|
||||
"url-loader": "^0.6.2",
|
||||
|
||||
@@ -18,8 +18,8 @@ exports.info = msg => {
|
||||
console.log(format(chalk.bgBlue.black(' INFO '), msg))
|
||||
}
|
||||
|
||||
exports.success = msg => {
|
||||
console.log(format(chalk.bgGreen.black(' OK '), msg))
|
||||
exports.done = msg => {
|
||||
console.log(format(chalk.bgGreen.black(' DONE '), msg))
|
||||
}
|
||||
|
||||
exports.warn = msg => {
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
const ora = require('ora')
|
||||
const chalk = require('chalk')
|
||||
|
||||
const spinner = ora()
|
||||
let lastMsg
|
||||
let lastMsg = null
|
||||
|
||||
exports.logWithSpinner = (symbol, msg) => {
|
||||
if (!msg) {
|
||||
msg = symbol
|
||||
symbol = chalk.green('✔')
|
||||
}
|
||||
if (lastMsg) {
|
||||
spinner.stopAndPersist({
|
||||
symbol: lastMsg.symbol,
|
||||
@@ -27,4 +32,5 @@ exports.stopSpinner = (persist) => {
|
||||
} else {
|
||||
spinner.stop()
|
||||
}
|
||||
lastMsg = null
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@ module.exports = class Generator {
|
||||
}, {})
|
||||
this.pkg.dependencies = sortDeps(this.pkg.dependencies)
|
||||
this.pkg.devDependencies = sortDeps(this.pkg.devDependencies)
|
||||
|
||||
// TODO sort pkg keys
|
||||
|
||||
debug('vue:cli-pkg')(this.pkg)
|
||||
}
|
||||
|
||||
|
||||
@@ -59,4 +59,5 @@ async function run () {
|
||||
run().catch(err => {
|
||||
stopSpinner(false) // do not persist
|
||||
error(err)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
@@ -70,7 +70,7 @@ add-stream@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
|
||||
|
||||
address@^1.0.3:
|
||||
address@^1.0.1, address@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
|
||||
|
||||
@@ -110,6 +110,12 @@ amdefine@>=0.0.4:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||
|
||||
ansi-align@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
|
||||
dependencies:
|
||||
string-width "^2.0.0"
|
||||
|
||||
ansi-escapes@^1.0.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
|
||||
@@ -165,6 +171,10 @@ aproba@^1.0.3, aproba@^1.1.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||
|
||||
arch@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.0.tgz#3613aa46149064b3c1f0607919bf1d4786e82889"
|
||||
|
||||
are-we-there-yet@~1.1.2:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
|
||||
@@ -178,6 +188,16 @@ argparse@^1.0.7:
|
||||
dependencies:
|
||||
sprintf-js "~1.0.2"
|
||||
|
||||
args@3.0.8:
|
||||
version "3.0.8"
|
||||
resolved "https://registry.yarnpkg.com/args/-/args-3.0.8.tgz#2f425ab639c69d74ff728f3d7c6e93b97b91af7c"
|
||||
dependencies:
|
||||
camelcase "4.1.0"
|
||||
chalk "2.1.0"
|
||||
mri "1.1.0"
|
||||
pkginfo "0.4.1"
|
||||
string-similarity "1.2.0"
|
||||
|
||||
arr-diff@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
|
||||
@@ -888,6 +908,12 @@ base64-js@^1.0.2:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
|
||||
|
||||
basic-auth@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba"
|
||||
dependencies:
|
||||
safe-buffer "5.1.1"
|
||||
|
||||
batch@0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
|
||||
@@ -916,7 +942,7 @@ block-stream@*:
|
||||
dependencies:
|
||||
inherits "~2.0.0"
|
||||
|
||||
bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0:
|
||||
bluebird@3.5.1, bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
||||
|
||||
@@ -972,6 +998,18 @@ boom@5.x.x:
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
|
||||
boxen@1.3.0, boxen@^1.2.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
|
||||
dependencies:
|
||||
ansi-align "^2.0.0"
|
||||
camelcase "^4.0.0"
|
||||
chalk "^2.0.1"
|
||||
cli-boxes "^1.0.0"
|
||||
string-width "^2.0.0"
|
||||
term-size "^1.2.0"
|
||||
widest-line "^2.0.0"
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
|
||||
@@ -1109,7 +1147,7 @@ bytes@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
|
||||
cacache@^10.0.0:
|
||||
cacache@^10.0.0, cacache@^10.0.1:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.1.tgz#3e05f6e616117d9b54665b1b20c8aeb93ea5d36f"
|
||||
dependencies:
|
||||
@@ -1155,6 +1193,10 @@ camelcase-keys@^2.0.0:
|
||||
camelcase "^2.0.0"
|
||||
map-obj "^1.0.0"
|
||||
|
||||
camelcase@4.1.0, camelcase@^4.0.0, camelcase@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
|
||||
|
||||
camelcase@^1.0.2:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
|
||||
@@ -1167,10 +1209,6 @@ camelcase@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
|
||||
|
||||
camelcase@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
|
||||
|
||||
caniuse-api@^1.5.2:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
|
||||
@@ -1207,6 +1245,22 @@ center-align@^0.1.1:
|
||||
align-text "^0.1.3"
|
||||
lazy-cache "^1.0.3"
|
||||
|
||||
chalk@2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
|
||||
dependencies:
|
||||
ansi-styles "^3.1.0"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^4.0.0"
|
||||
|
||||
chalk@2.3.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
|
||||
dependencies:
|
||||
ansi-styles "^3.1.0"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^4.0.0"
|
||||
|
||||
chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||
@@ -1217,14 +1271,6 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
|
||||
dependencies:
|
||||
ansi-styles "^3.1.0"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^4.0.0"
|
||||
|
||||
chardet@^0.4.0:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
|
||||
@@ -1275,6 +1321,10 @@ clean-css@4.1.x:
|
||||
dependencies:
|
||||
source-map "0.5.x"
|
||||
|
||||
cli-boxes@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
|
||||
|
||||
cli-cursor@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
|
||||
@@ -1306,6 +1356,13 @@ cli-width@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
||||
|
||||
clipboardy@1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.2.tgz#2ce320b9ed9be1514f79878b53ff9765420903e2"
|
||||
dependencies:
|
||||
arch "^2.1.0"
|
||||
execa "^0.8.0"
|
||||
|
||||
cliui@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
|
||||
@@ -1425,7 +1482,7 @@ compressible@~2.0.11:
|
||||
dependencies:
|
||||
mime-db ">= 1.30.0 < 2"
|
||||
|
||||
compression@^1.5.2:
|
||||
compression@^1.5.2, compression@^1.6.2:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db"
|
||||
dependencies:
|
||||
@@ -1449,6 +1506,17 @@ concat-stream@^1.4.10, concat-stream@^1.5.0, concat-stream@^1.6.0:
|
||||
readable-stream "^2.2.2"
|
||||
typedarray "^0.0.6"
|
||||
|
||||
configstore@^3.0.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
|
||||
dependencies:
|
||||
dot-prop "^4.1.0"
|
||||
graceful-fs "^4.1.2"
|
||||
make-dir "^1.0.0"
|
||||
unique-string "^1.0.0"
|
||||
write-file-atomic "^2.0.0"
|
||||
xdg-basedir "^3.0.0"
|
||||
|
||||
connect-history-api-fallback@^1.3.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
|
||||
@@ -1481,7 +1549,7 @@ content-type-parser@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
|
||||
|
||||
content-type@~1.0.4:
|
||||
content-type@1.0.4, content-type@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
|
||||
@@ -1653,6 +1721,21 @@ copy-concurrently@^1.0.0:
|
||||
rimraf "^2.5.4"
|
||||
run-queue "^1.0.0"
|
||||
|
||||
copy-webpack-plugin@^4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302"
|
||||
dependencies:
|
||||
cacache "^10.0.1"
|
||||
find-cache-dir "^1.0.0"
|
||||
globby "^7.1.1"
|
||||
is-glob "^4.0.0"
|
||||
loader-utils "^0.2.15"
|
||||
lodash "^4.3.0"
|
||||
minimatch "^3.0.4"
|
||||
p-limit "^1.0.0"
|
||||
pify "^3.0.0"
|
||||
serialize-javascript "^1.4.0"
|
||||
|
||||
core-js@^2.4.0, core-js@^2.5.0:
|
||||
version "2.5.3"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
|
||||
@@ -1751,6 +1834,10 @@ crypto-browserify@^3.11.0:
|
||||
randombytes "^2.0.0"
|
||||
randomfill "^1.0.3"
|
||||
|
||||
crypto-random-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
|
||||
|
||||
css-color-names@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
|
||||
@@ -1869,6 +1956,10 @@ d@1:
|
||||
dependencies:
|
||||
es5-ext "^0.10.9"
|
||||
|
||||
dargs@5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829"
|
||||
|
||||
dargs@^4.0.1:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
|
||||
@@ -1900,7 +1991,7 @@ de-indent@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
|
||||
|
||||
debug@2.6.9, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8:
|
||||
debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
dependencies:
|
||||
@@ -2027,6 +2118,13 @@ detect-node@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
|
||||
|
||||
detect-port@1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.2.tgz#57a44533632d8bc74ad255676866ca43f96c7469"
|
||||
dependencies:
|
||||
address "^1.0.1"
|
||||
debug "^2.6.0"
|
||||
|
||||
diff@3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
|
||||
@@ -2140,6 +2238,12 @@ dot-prop@^3.0.0:
|
||||
dependencies:
|
||||
is-obj "^1.0.0"
|
||||
|
||||
dot-prop@^4.1.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
|
||||
dependencies:
|
||||
is-obj "^1.0.0"
|
||||
|
||||
dotenv@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
|
||||
@@ -2686,6 +2790,10 @@ fileset@^2.0.2:
|
||||
glob "^7.0.3"
|
||||
minimatch "^3.0.3"
|
||||
|
||||
filesize@3.5.11:
|
||||
version "3.5.11"
|
||||
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
|
||||
|
||||
fill-range@^2.1.0:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
|
||||
@@ -2810,6 +2918,14 @@ from2@^2.1.0:
|
||||
inherits "^2.0.1"
|
||||
readable-stream "^2.0.0"
|
||||
|
||||
fs-extra@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
|
||||
@@ -2973,6 +3089,12 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global-dirs@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
|
||||
dependencies:
|
||||
ini "^1.3.4"
|
||||
|
||||
globals@^11.0.1:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4"
|
||||
@@ -3045,7 +3167,7 @@ handle-thing@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
|
||||
|
||||
handlebars@^4.0.2, handlebars@^4.0.3:
|
||||
handlebars@4.0.11, handlebars@^4.0.2, handlebars@^4.0.3:
|
||||
version "4.0.11"
|
||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
|
||||
dependencies:
|
||||
@@ -3332,6 +3454,10 @@ ignore@^3.3.3, ignore@^3.3.5:
|
||||
version "3.3.7"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
|
||||
|
||||
import-lazy@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
|
||||
|
||||
import-local@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8"
|
||||
@@ -3376,7 +3502,7 @@ inherits@2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
|
||||
|
||||
ini@^1.3.2, ini@~1.3.0:
|
||||
ini@^1.3.2, ini@^1.3.4, ini@~1.3.0:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
|
||||
@@ -3438,7 +3564,7 @@ invert-kv@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||
|
||||
ip@^1.1.0, ip@^1.1.5:
|
||||
ip@1.1.5, ip@^1.1.0, ip@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
|
||||
|
||||
@@ -3544,6 +3670,17 @@ is-glob@^4.0.0:
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-installed-globally@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
|
||||
dependencies:
|
||||
global-dirs "^0.1.0"
|
||||
is-path-inside "^1.0.0"
|
||||
|
||||
is-npm@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
|
||||
|
||||
is-number@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
|
||||
@@ -3620,7 +3757,7 @@ is-retry-allowed@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
|
||||
|
||||
is-stream@^1.0.0, is-stream@^1.1.0:
|
||||
is-stream@1.1.0, is-stream@^1.0.0, is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
|
||||
@@ -4165,6 +4302,12 @@ last-call-webpack-plugin@^2.1.2:
|
||||
lodash "^4.17.4"
|
||||
webpack-sources "^1.0.1"
|
||||
|
||||
latest-version@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
|
||||
dependencies:
|
||||
package-json "^4.0.0"
|
||||
|
||||
lazy-cache@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
|
||||
@@ -4347,7 +4490,7 @@ 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:
|
||||
loader-utils@^0.2.15, loader-utils@^0.2.16:
|
||||
version "0.2.17"
|
||||
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
|
||||
dependencies:
|
||||
@@ -4552,6 +4695,21 @@ methods@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
|
||||
micro-compress@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micro-compress/-/micro-compress-1.0.0.tgz#53f5a80b4ad0320ca165a559b6e3df145d4f704f"
|
||||
dependencies:
|
||||
compression "^1.6.2"
|
||||
|
||||
micro@9.0.2:
|
||||
version "9.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micro/-/micro-9.0.2.tgz#fa51f12d09fa29bdf9767d6eac43414ae3fb6068"
|
||||
dependencies:
|
||||
content-type "1.0.4"
|
||||
is-stream "1.1.0"
|
||||
mri "1.1.0"
|
||||
raw-body "2.3.2"
|
||||
|
||||
micromatch@^2.1.5, micromatch@^2.3.11:
|
||||
version "2.3.11"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
|
||||
@@ -4585,7 +4743,7 @@ mime-db@~1.30.0:
|
||||
version "1.30.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
|
||||
|
||||
mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7:
|
||||
mime-types@2.1.17, mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7:
|
||||
version "2.1.17"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
|
||||
dependencies:
|
||||
@@ -4709,6 +4867,10 @@ move-concurrently@^1.0.1:
|
||||
rimraf "^2.5.4"
|
||||
run-queue "^1.0.3"
|
||||
|
||||
mri@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a"
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
@@ -4819,6 +4981,10 @@ node-pre-gyp@^0.6.39:
|
||||
tar "^2.2.1"
|
||||
tar-pack "^3.4.0"
|
||||
|
||||
node-version@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.0.tgz#f437d7ba407e65e2c4eaef8887b1718ba523d4f0"
|
||||
|
||||
nodent-runtime@^3.0.3:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/nodent-runtime/-/nodent-runtime-3.2.0.tgz#8b79500a1274176d732b60284c7a7d10d9e44180"
|
||||
@@ -4972,7 +5138,11 @@ open-in-editor@^2.0.0:
|
||||
clap "^1.1.3"
|
||||
os-homedir "~1.0.2"
|
||||
|
||||
opn@^5.1.0:
|
||||
openssl-self-signed-certificate@1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz#9d3a4776b1a57e9847350392114ad2f915a83dd4"
|
||||
|
||||
opn@5.1.0, opn@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519"
|
||||
dependencies:
|
||||
@@ -5064,7 +5234,7 @@ p-finally@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||
|
||||
p-limit@^1.1.0:
|
||||
p-limit@^1.0.0, p-limit@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
|
||||
|
||||
@@ -5078,7 +5248,7 @@ p-map@^1.1.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
|
||||
|
||||
package-json@^4.0.1:
|
||||
package-json@^4.0.0, package-json@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
|
||||
dependencies:
|
||||
@@ -5195,6 +5365,12 @@ path-to-regexp@0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
||||
|
||||
path-type@3.0.0, path-type@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
|
||||
dependencies:
|
||||
pify "^3.0.0"
|
||||
|
||||
path-type@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
||||
@@ -5209,12 +5385,6 @@ path-type@^2.0.0:
|
||||
dependencies:
|
||||
pify "^2.0.0"
|
||||
|
||||
path-type@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
|
||||
dependencies:
|
||||
pify "^3.0.0"
|
||||
|
||||
pbkdf2@^3.0.3:
|
||||
version "3.0.14"
|
||||
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
|
||||
@@ -5257,6 +5427,10 @@ pkg-dir@^2.0.0:
|
||||
dependencies:
|
||||
find-up "^2.1.0"
|
||||
|
||||
pkginfo@0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff"
|
||||
|
||||
pluralize@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
|
||||
@@ -6164,7 +6338,13 @@ selfsigned@^1.9.1:
|
||||
dependencies:
|
||||
node-forge "0.6.33"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1:
|
||||
semver-diff@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
|
||||
dependencies:
|
||||
semver "^5.0.3"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||
|
||||
@@ -6211,6 +6391,32 @@ serve-static@1.13.1:
|
||||
parseurl "~1.3.2"
|
||||
send "0.16.1"
|
||||
|
||||
serve@^6.4.3:
|
||||
version "6.4.3"
|
||||
resolved "https://registry.yarnpkg.com/serve/-/serve-6.4.3.tgz#ae44de08a6e5a0b6179252663c40a472ec0f1160"
|
||||
dependencies:
|
||||
args "3.0.8"
|
||||
basic-auth "2.0.0"
|
||||
bluebird "3.5.1"
|
||||
boxen "1.3.0"
|
||||
chalk "2.3.0"
|
||||
clipboardy "1.2.2"
|
||||
dargs "5.1.0"
|
||||
detect-port "1.2.2"
|
||||
filesize "3.5.11"
|
||||
fs-extra "5.0.0"
|
||||
handlebars "4.0.11"
|
||||
ip "1.1.5"
|
||||
micro "9.0.2"
|
||||
micro-compress "1.0.0"
|
||||
mime-types "2.1.17"
|
||||
node-version "1.1.0"
|
||||
openssl-self-signed-certificate "1.1.6"
|
||||
opn "5.1.0"
|
||||
path-type "3.0.0"
|
||||
send "0.16.1"
|
||||
update-notifier "2.3.0"
|
||||
|
||||
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
@@ -6499,6 +6705,12 @@ string-length@^2.0.0:
|
||||
astral-regex "^1.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
|
||||
string-similarity@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.2.0.tgz#d75153cb383846318b7a39a8d9292bb4db4e9c30"
|
||||
dependencies:
|
||||
lodash "^4.13.1"
|
||||
|
||||
string-width@^1.0.1, string-width@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
@@ -6710,6 +6922,12 @@ tempfile@^1.1.1:
|
||||
os-tmpdir "^1.0.0"
|
||||
uuid "^2.0.1"
|
||||
|
||||
term-size@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
|
||||
dependencies:
|
||||
execa "^0.7.0"
|
||||
|
||||
test-exclude@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26"
|
||||
@@ -6916,6 +7134,12 @@ unique-slug@^2.0.0:
|
||||
dependencies:
|
||||
imurmurhash "^0.1.4"
|
||||
|
||||
unique-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
|
||||
dependencies:
|
||||
crypto-random-string "^1.0.0"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
|
||||
@@ -6928,6 +7152,20 @@ unzip-response@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
|
||||
|
||||
update-notifier@2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
|
||||
dependencies:
|
||||
boxen "^1.2.1"
|
||||
chalk "^2.0.1"
|
||||
configstore "^3.0.0"
|
||||
import-lazy "^2.1.0"
|
||||
is-installed-globally "^0.1.0"
|
||||
is-npm "^1.0.0"
|
||||
latest-version "^3.0.0"
|
||||
semver-diff "^2.0.0"
|
||||
xdg-basedir "^3.0.0"
|
||||
|
||||
upper-case@^1.1.1:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
|
||||
@@ -7268,6 +7506,12 @@ wide-align@^1.1.0:
|
||||
dependencies:
|
||||
string-width "^1.0.2"
|
||||
|
||||
widest-line@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273"
|
||||
dependencies:
|
||||
string-width "^2.1.1"
|
||||
|
||||
window-size@0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
|
||||
@@ -7338,6 +7582,10 @@ write@^0.2.1:
|
||||
dependencies:
|
||||
mkdirp "^0.5.1"
|
||||
|
||||
xdg-basedir@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
||||
|
||||
xml-char-classes@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
|
||||
|
||||
Reference in New Issue
Block a user