build & serve

This commit is contained in:
Evan You
2017-12-29 19:26:15 -05:00
parent d6af38b3e1
commit e9e237e3f4
19 changed files with 717 additions and 224 deletions
@@ -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 -2
View File
@@ -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'
+11 -8
View File
@@ -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)'
}
+19 -137
View File
@@ -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)
}
}
+20 -12
View File
@@ -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()])
+4 -4
View File
@@ -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)])
}
+4 -12
View File
@@ -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')
}])
}
})
}
+103 -1
View File
@@ -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', '.*']
}]])
}
})
}
+40
View File
@@ -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 => {}
*/
}
}
+3
View File
@@ -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",
+2 -2
View File
@@ -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 => {
+7 -1
View File
@@ -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
}
+3
View File
@@ -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)
}
+1
View File
@@ -59,4 +59,5 @@ async function run () {
run().catch(err => {
stopSpinner(false) // do not persist
error(err)
process.exit(1)
})
+282 -34
View File
@@ -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"