├── template ├── .eslintignore ├── static │ └── icons │ │ ├── 128.png │ │ ├── 16.png │ │ └── 48.png ├── .gitignore ├── src │ ├── content │ │ └── index.js │ ├── background │ │ └── index.js │ ├── devtools │ │ ├── index.js │ │ ├── panel.js │ │ └── root.vue │ ├── tab │ │ ├── index.js │ │ └── root.vue │ ├── options │ │ ├── index.js │ │ └── root.vue │ ├── popup │ │ ├── index.js │ │ └── root.vue │ ├── _locales │ │ ├── zh_TW │ │ │ └── messages.js │ │ └── en │ │ │ └── messages.js │ ├── ext │ │ └── storage.js │ └── manifest.js ├── .postcssrc.js ├── build │ ├── page.ejs │ ├── webpack.dev.js │ ├── webpack.prod.js │ ├── tools.js │ └── webpack.base.js ├── .babelrc ├── .eslintrc.js ├── plugins │ └── GenerateLocaleJsonPlugin.js └── package.json ├── .gitignore ├── package.json ├── LICENSE ├── meta.js ├── README.md ├── utils └── index.js └── yarn.lock /template/.eslintignore: -------------------------------------------------------------------------------- 1 | dist/*.js 2 | -------------------------------------------------------------------------------- /template/static/icons/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ALiangLiang/vue-webpack-chrome-extension-template/HEAD/template/static/icons/128.png -------------------------------------------------------------------------------- /template/static/icons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ALiangLiang/vue-webpack-chrome-extension-template/HEAD/template/static/icons/16.png -------------------------------------------------------------------------------- /template/static/icons/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ALiangLiang/vue-webpack-chrome-extension-template/HEAD/template/static/icons/48.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # IDE 2 | .vscode 3 | 4 | # dependencies 5 | node_modules 6 | template/package-lock.json 7 | template/yarn.lock 8 | 9 | # logs 10 | npm-debug.log 11 | -------------------------------------------------------------------------------- /template/.gitignore: -------------------------------------------------------------------------------- 1 | # IDE 2 | .vscode 3 | 4 | # dependencies 5 | node_modules 6 | 7 | # logs 8 | npm-debug.log 9 | 10 | # Backpack build 11 | dist 12 | extension.zip 13 | -------------------------------------------------------------------------------- /template/src/content/index.js: -------------------------------------------------------------------------------- 1 | {{#if components.locales}} 2 | const __ = chrome.i18n.getMessage 3 | console.log(__('content')) 4 | {{/if}} 5 | {{#unless components.locales}} 6 | console.log('content-script!') 7 | {{/unless}} 8 | -------------------------------------------------------------------------------- /template/src/background/index.js: -------------------------------------------------------------------------------- 1 | {{#if components.locales}} 2 | const __ = chrome.i18n.getMessage 3 | console.log(__('background')) 4 | {{/if}} 5 | {{#unless components.locales}} 6 | console.log('background!') 7 | {{/unless}} 8 | -------------------------------------------------------------------------------- /template/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /template/src/devtools/index.js: -------------------------------------------------------------------------------- 1 | chrome.devtools.panels.create('panel', 'img/logo.png', 'pages/panel.html', function (panel) { 2 | {{#if components.locales}} 3 | const __ = chrome.i18n.getMessage 4 | console.log(__('devtools')) 5 | {{/if}} 6 | {{#unless components.locales}} 7 | console.log('devtools') 8 | {{/unless}} 9 | }) 10 | -------------------------------------------------------------------------------- /template/src/tab/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import root from './root.vue' 3 | Vue.config.productionTip = false 4 | 5 | {{#if components.locales}} 6 | // used in Vue rendering 7 | Vue.prototype.__ = chrome.i18n.getMessage 8 | 9 | {{/if}} 10 | new Vue({ // eslint-disable-line no-new 11 | el: '#root', 12 | render: h => h(root) 13 | }) 14 | -------------------------------------------------------------------------------- /template/src/options/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import root from './root.vue' 3 | Vue.config.productionTip = false 4 | 5 | {{#if components.locales}} 6 | // used in Vue rendering 7 | Vue.prototype.__ = chrome.i18n.getMessage 8 | 9 | {{/if}} 10 | new Vue({ // eslint-disable-line no-new 11 | el: '#root', 12 | render: h => h(root) 13 | }) 14 | -------------------------------------------------------------------------------- /template/src/devtools/panel.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import root from './root.vue' 3 | Vue.config.productionTip = false 4 | 5 | {{#if components.locales}} 6 | // used in Vue rendering 7 | Vue.prototype.__ = chrome.i18n.getMessage 8 | 9 | {{/if}} 10 | /* eslint-disable no-new */ 11 | new Vue({ 12 | el: '#root', 13 | render: h => h(root) 14 | }) 15 | -------------------------------------------------------------------------------- /template/build/page.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%= htmlWebpackPlugin.options.title %> 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /template/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-runtime"], 12 | "env": { 13 | "test": { 14 | "presets": ["env", "stage-2"], 15 | "plugins": ["istanbul"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /template/src/popup/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import root from './root.vue' 3 | import ElementUI from 'element-ui' 4 | import 'element-ui/lib/theme-chalk/index.css' 5 | 6 | Vue.config.productionTip = false 7 | 8 | {{#if components.locales}} 9 | // used in Vue rendering 10 | Vue.prototype.__ = chrome.i18n.getMessage 11 | 12 | {{/if}} 13 | Vue.use(ElementUI) 14 | 15 | new Vue({ // eslint-disable-line no-new 16 | el: '#root', 17 | render: h => h(root) 18 | }) 19 | -------------------------------------------------------------------------------- /template/src/_locales/zh_TW/messages.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @see {@link https://developer.chrome.com/extensions/i18n} 3 | */ 4 | module.exports = { 5 | extName: { message: 'Vue Chrome 擴充套件' }, 6 | extDescription: { message: 'Vue.js Chrome 擴充套件模板' }, 7 | 8 | background: { message: '背景(Background)' }, 9 | content: { message: '內容腳本(Content Script)' }, 10 | devtools: { message: '從回呼函數來的訊息(from callback)' }, 11 | options: { message: '選項(Options)' }, 12 | popup: { message: '新的頁籤(Tab)' }, 13 | tab: { message: '頁籤(Tab)' } 14 | } 15 | -------------------------------------------------------------------------------- /template/src/_locales/en/messages.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @see {@link https://developer.chrome.com/extensions/i18n} 3 | */ 4 | module.exports = { 5 | extName: { message: 'Vue Chrome Extension' }, 6 | extDescription: { message: 'Vue.js Chrome Extension Template' }, 7 | 8 | background: { message: 'background!' }, 9 | content: { message: 'content-script!' }, 10 | devtools: { message: 'devtools' }, 11 | fromCallback: { message: 'hello from callback' }, 12 | options: { message: 'options' }, 13 | popup: { message: 'New tab' }, 14 | tab: { message: 'tab' } 15 | } 16 | -------------------------------------------------------------------------------- /template/src/ext/storage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage} 3 | */ 4 | export default { 5 | get (key) { 6 | try { 7 | return JSON.parse(localStorage.getItem(key)) 8 | } catch (e) {} 9 | }, 10 | set (key, val) { 11 | try { 12 | localStorage.setItem(key, JSON.stringify(val)) 13 | } catch (e) {} 14 | }, 15 | remove (key) { 16 | try { 17 | localStorage.removeItem(key) 18 | } catch (e) {} 19 | }, 20 | clear () { 21 | try { 22 | localStorage.clear() 23 | } catch (e) {} 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /template/build/webpack.dev.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack') 2 | const merge = require('webpack-merge') 3 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 4 | const baseWebpack = require('./webpack.base') 5 | const { styleLoaders } = require('./tools') 6 | 7 | module.exports = merge(baseWebpack, { 8 | watch: true, 9 | module: { rules: styleLoaders({ sourceMap: false }) }, 10 | devtool: '#cheap-module-source-map', 11 | plugins: [ 12 | new webpack.NoEmitOnErrorsPlugin(), 13 | new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"development"' }), 14 | new FriendlyErrorsPlugin() 15 | ] 16 | }) 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-webpack-chrome-extension-template", 3 | "version": "1.0.1", 4 | "description": "Template for quick creation of Chrome extension on Vuejs hot reloading when developing.", 5 | "author": "ALiangLiang", 6 | "repository": { 7 | "type": "git", 8 | "url": "git://github.com/ALiangLiang/vue-webpack-chrome-extension-template.git" 9 | }, 10 | "bugs": { 11 | "url": "https://github.com/ALiangLiang/vue-webpack-chrome-extension-template/issues" 12 | }, 13 | "keywords": [ 14 | "vue", 15 | "webpack", 16 | "webpack-boilerplate", 17 | "template", 18 | "chrome-extension", 19 | "vuejs2" 20 | ], 21 | "license": "MIT", 22 | "devDependencies": { 23 | "vue-cli": "^2.9.3" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /template/src/tab/root.vue: -------------------------------------------------------------------------------- 1 | 11 | 32 | 37 | -------------------------------------------------------------------------------- /template/src/options/root.vue: -------------------------------------------------------------------------------- 1 | 11 | 32 | 37 | -------------------------------------------------------------------------------- /template/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | globals: { 10 | "chrome": true 11 | // chrome: true 12 | }, 13 | env: { 14 | browser: true, 15 | }, 16 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md 17 | extends: 'standard', 18 | // required to lint *.vue files 19 | plugins: [ 20 | 'html' 21 | ], 22 | // add your custom rules here 23 | 'rules': { 24 | // allow paren-less arrow functions 25 | 'arrow-parens': 0, 26 | // allow async-await 27 | 'generator-star-spacing': 0, 28 | // allow debugger during development 29 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /template/src/devtools/root.vue: -------------------------------------------------------------------------------- 1 | 11 | 32 | 37 | -------------------------------------------------------------------------------- /template/build/webpack.prod.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack') 2 | const merge = require('webpack-merge') 3 | const ZipPlugin = require('zip-webpack-plugin') 4 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 5 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 6 | const baseWebpack = require('./webpack.base') 7 | const { styleLoaders } = require('./tools') 8 | 9 | module.exports = merge(baseWebpack, { 10 | module: { rules: styleLoaders({ extract: true, sourceMap: true }) }, 11 | plugins: [ 12 | new webpack.NoEmitOnErrorsPlugin(), 13 | new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"' }), 14 | new OptimizeCSSPlugin({ cssProcessorOptions: { safe: true } }), 15 | new ExtractTextPlugin({ filename: 'css/[name].[contenthash].css' }), 16 | new webpack.HashedModuleIdsPlugin(), 17 | new ZipPlugin({ 18 | path: '..', 19 | filename: 'extension.zip' 20 | }) 21 | ] 22 | }) 23 | -------------------------------------------------------------------------------- /template/src/popup/root.vue: -------------------------------------------------------------------------------- 1 | 13 | 38 | 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 阿良良 ALiangLiang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /template/build/tools.js: -------------------------------------------------------------------------------- 1 | const { resolve } = require('path') 2 | const { extract } = require('extract-text-webpack-plugin') 3 | const HtmlWebpackPlugin = require('html-webpack-plugin') 4 | 5 | exports.htmlPage = (title, filename, chunks, template) => new HtmlWebpackPlugin({ 6 | title, 7 | hash: true, 8 | cache: true, 9 | inject: 'body', 10 | filename: './pages/' + filename + '.html', 11 | template: template || resolve(__dirname, './page.ejs'), 12 | appMountId: 'app', 13 | chunks 14 | }) 15 | 16 | exports.cssLoaders = (options = {}) => { 17 | let loaders = {} 18 | let prePprocessors = { 19 | css: {}, 20 | postcss: {}, 21 | less: { loader: 'less' }, 22 | sass: { loader: 'sass', options: { indentedSyntax: true } }, 23 | scss: { loader: 'sass' }, 24 | stylus: { loader: 'stylus' }, 25 | styl: { loader: 'stylus' } 26 | } 27 | for (let key in prePprocessors) { 28 | let loader = [{ 29 | loader: 'css-loader', 30 | options: { minimize: process.env.NODE_ENV === 'production' } 31 | }] 32 | if (prePprocessors[key].loader) { 33 | loader.push({ 34 | loader: prePprocessors[key].loader + '-loader', 35 | options: Object.assign({}, prePprocessors[key].options, { sourceMap: options.sourceMap }) 36 | }) 37 | } 38 | if (options.extract) { 39 | loaders[key] = extract({ use: loader, fallback: 'vue-style-loader' }) 40 | } else { 41 | loaders[key] = ['vue-style-loader'].concat(loader) 42 | } 43 | } 44 | return loaders 45 | } 46 | 47 | exports.styleLoaders = function (options) { 48 | const output = [] 49 | const loaders = exports.cssLoaders(options) 50 | for (const extension in loaders) { 51 | const loader = loaders[extension] 52 | output.push({ 53 | test: new RegExp('\\.' + extension + '$'), 54 | use: loader 55 | }) 56 | } 57 | return output 58 | } 59 | -------------------------------------------------------------------------------- /template/plugins/GenerateLocaleJsonPlugin.js: -------------------------------------------------------------------------------- 1 | const { lstatSync, readdirSync, readFileSync } = require('fs') 2 | const { join, parse } = require('path') 3 | const Module = require('module') 4 | 5 | const isDirectory = (source) => lstatSync(source).isDirectory() 6 | const getDirectories = (source) => 7 | readdirSync(source).map(name => join(source, name)).filter(isDirectory) 8 | 9 | module.exports = class GenerateLocaleJsonPlugin { 10 | constructor ({ _locales }) { 11 | this.__localesPath = _locales 12 | this._locales = [] 13 | } 14 | 15 | compile (comp) { 16 | const dirsPath = getDirectories(this.__localesPath) 17 | dirsPath.forEach((dirPath) => { 18 | try { 19 | const localeName = parse(dirPath).base 20 | const filename = join(this.__localesPath, localeName, 'messages.js') 21 | const code = readFileSync(filename, 'utf8') 22 | const mod = new Module(filename) 23 | mod.filename = filename 24 | mod._compile(code, filename) 25 | mod.paths = Module._nodeModulePaths(filename) 26 | this._locales.push({ 27 | localeName, 28 | content: mod.exports, 29 | src: join(dirPath, 'messages.js') 30 | }) 31 | } catch (err) { 32 | console.error(err) 33 | } 34 | }) 35 | } 36 | 37 | generate (comp, done) { 38 | if (!this._locales.length) return done() 39 | 40 | for (let locale of this._locales) { 41 | comp.fileDependencies.push(locale.src) 42 | const source = JSON.stringify(locale.content) 43 | comp.assets[join('_locales', locale.localeName, 'messages.json')] = { 44 | source: () => source, 45 | size: () => source.length 46 | } 47 | } 48 | 49 | return done() 50 | } 51 | 52 | apply (compiler) { 53 | compiler.plugin('compile', (comp) => this.compile(comp)) 54 | compiler.plugin('emit', (comp, done) => this.generate(comp, done)) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{ name }}", 3 | "version": "1.0.0", 4 | "description": "{{ description }}", 5 | "author": "{{ author }}", 6 | "license": "MIT", 7 | "private": false, 8 | "dependencies": { 9 | "element-ui": "^2.0.1", 10 | "lodash": "^4.17.4", 11 | "vue": "^2.5.2", 12 | "vue-router": "^3.0.1" 13 | }, 14 | "scripts": { 15 | "lint": "eslint --ext .js,.vue src", 16 | "dev": "webpack --config ./build/webpack.dev.js --hide-modules", 17 | "build": "webpack --config ./build/webpack.prod.js -p --progress --hide-modules --colors" 18 | }, 19 | "devDependencies": { 20 | "babel-core": "^6.26.0", 21 | "babel-eslint": "^8.2.2", 22 | "babel-loader": "^7.1.2", 23 | "babel-plugin-transform-runtime": "^6.23.0", 24 | "babel-preset-env": "^1.6.1", 25 | "babel-preset-stage-2": "^6.24.1", 26 | "clean-webpack-plugin": "^0.1.18", 27 | "copy-webpack-plugin": "^4.4.1", 28 | "css-loader": "^0.28.9", 29 | "eslint": "^4.18.1", 30 | "eslint-config-standard": "^11.0.0", 31 | "eslint-friendly-formatter": "^3.0.0", 32 | "eslint-loader": "^1.9.0", 33 | "eslint-plugin-html": "^4.0.2", 34 | "eslint-plugin-import": "^2.8.0", 35 | "eslint-plugin-node": "^6.0.0", 36 | "eslint-plugin-promise": "^3.6.0", 37 | "eslint-plugin-standard": "^3.0.1", 38 | "extract-text-webpack-plugin": "^3.0.2", 39 | "file-loader": "^1.1.8", 40 | "friendly-errors-webpack-plugin": "^1.6.1", 41 | "html-webpack-plugin": "^2.30.1", 42 | "node-sass": "^4.7.2", 43 | "optimize-css-assets-webpack-plugin": "^3.2.0", 44 | "pug": "^2.0.0-rc.4", 45 | "pug-loader": "^2.3.0", 46 | "sass-loader": "^6.0.6", 47 | "url-loader": "^0.6.2", 48 | "vue-loader": "^14.1.1", 49 | "vue-template-compiler": "^2.5.13", 50 | "wcer": "^1.0.3", 51 | "webpack": "^3.8.1", 52 | "webpack-merge": "^4.1.1", 53 | "zip-webpack-plugin": "^2.1.0" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /template/src/manifest.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @see {@link https://developer.chrome.com/extensions/manifest} 3 | */ 4 | module.exports = { 5 | {{#if components.locales}} 6 | name: '__MSG_extName__', // Vue Extension 7 | description: '__MSG_extDescription__', // Vue.js Webpack Chrome Extension Template 8 | {{/if}} 9 | {{#unless components.locales}} 10 | name: '{{ name }}', 11 | description: '{{ description }}', 12 | {{/unless}} 13 | author: '{{ author }}', 14 | version: '1.0.0', 15 | icons: { 16 | '16': 'icons/16.png', 17 | '128': 'icons/128.png' 18 | }, 19 | /** 20 | * @see {@link https://developer.chrome.com/extensions/declare_permissions} 21 | */ 22 | permissions: [ 23 | '', 24 | '*://*/*', 25 | 'activeTab', 26 | 'tabs', 27 | 'background', 28 | 'unlimitedStorage', 29 | 'storage' 30 | ], 31 | browser_action: { 32 | default_title: 'title', 33 | {{#if components.popupTab}} 34 | default_popup: 'pages/popup.html' 35 | {{/if}} 36 | }, 37 | {{#if components.background}} 38 | background: { 39 | persistent: false, 40 | page: 'pages/background.html' 41 | }, 42 | {{/if}} 43 | {{#if components.devtool}} 44 | devtools_page: 'pages/devtools.html', 45 | {{/if}} 46 | {{#if components.optionPage}} 47 | options_page: 'pages/options.html', 48 | {{/if}} 49 | {{#if components.contentScript}} 50 | content_scripts: [{ 51 | js: [ 52 | 'js/manifest.js', 53 | 'js/vendor.js', 54 | 'js/content.js' 55 | ], 56 | run_at: 'document_end', 57 | matches: [''], 58 | all_frames: true 59 | }], 60 | {{/if}} 61 | {{#if components.locales}} 62 | default_locale: 'en', 63 | {{/if}} 64 | manifest_version: 2, 65 | content_security_policy: "script-src 'self'; object-src 'self'", 66 | web_accessible_resources: [ 67 | {{#if components.devtool}} 68 | 'panel.html', 69 | {{/if}} 70 | {{#if components.contentScript}} 71 | 'js/content.js' 72 | {{/if}} 73 | ] 74 | } 75 | -------------------------------------------------------------------------------- /meta.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const { 3 | sortDependencies, 4 | installDependencies, 5 | printMessage 6 | } = require('./utils') 7 | 8 | module.exports = { 9 | helpers: { 10 | 'raw-helper': function (options) { 11 | return options.fn() 12 | } 13 | }, 14 | prompts: { 15 | name: { 16 | type: 'string', 17 | required: true, 18 | default: 'vue-webpack-chrome-extension-template', 19 | message: 'Project name' 20 | }, 21 | description: { 22 | type: 'string', 23 | required: true, 24 | label: 'Project description', 25 | default: 'A Chrome extension project with Vue.js' 26 | }, 27 | author: { 28 | type: 'string', 29 | label: 'Author' 30 | }, 31 | components: { 32 | type: 'checkbox', 33 | message: 'Select components', 34 | name: 'components', 35 | default: [ 'background', 'contentScript', 'optionPage', 'popupTab' ], 36 | choices: [ 37 | { name: 'background (https://developer.chrome.com/extensions/background_pages)', value: 'background', short: 'background' }, 38 | { name: 'content script (https://developer.chrome.com/extensions/content_scripts)', value: 'contentScript', short: 'content script' }, 39 | { name: 'option page (https://developer.chrome.com/extensions/options)', value: 'optionPage', short: 'option page' }, 40 | { name: 'popup and tab', value: 'popupTab' }, 41 | { name: 'locales (https://developer.chrome.com/extensions/i18n)', value: 'locales', short: 'locales' }, 42 | { name: 'devtool (https://developer.chrome.com/extensions/devtools)', value: 'devtool', short: 'devtool' } 43 | ] 44 | }, 45 | autoInstall: { 46 | type: 'list', 47 | message: 48 | 'Should we run `npm install` for you after the project has been created? (recommended)', 49 | choices: [ 50 | { name: 'Yes, use NPM', value: 'npm', short: 'npm' }, 51 | { name: 'Yes, use Yarn', value: 'yarn', short: 'yarn' }, 52 | { name: 'No, I will handle that myself', value: false, short: 'no' } 53 | ] 54 | } 55 | }, 56 | filters: { 57 | 'node_modules/**': 'false', 58 | 'dist/**': 'false', 59 | 'src/_locales/**': 'components.locales', 60 | 'src/background/**': 'components.background', 61 | 'src/content/**': 'components.contentScript', 62 | 'src/devtools/**': 'components.devtool', 63 | 'src/options/**': 'components.optionPage', 64 | 'src/popup/**': 'components.popupTab', 65 | 'src/tab/**': 'components.popupTab', 66 | 'package-lock.json': 'autoInstall === "npm"', 67 | 'yarn.lock': 'autoInstall === "yarn"' 68 | }, 69 | complete: function (data, { chalk }) { 70 | const green = chalk.green 71 | 72 | sortDependencies(data, green) 73 | 74 | const cwd = path.join(process.cwd(), data.inPlace ? '' : data.destDirName) 75 | 76 | if (data.autoInstall) { 77 | installDependencies(cwd, data.autoInstall, green) 78 | .then(() => { 79 | printMessage(data, green) 80 | }) 81 | .catch(e => { 82 | console.log(chalk.red('Error:'), e) 83 | }) 84 | } else { 85 | printMessage(data, chalk) 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue.js Webpack Chrome Extension Template 2 | 3 | [![npm](https://img.shields.io/npm/v/vue-webpack-chrome-extension-template.svg)](https://www.npmjs.com/package/vue-webpack-chrome-extension-template) 4 | 5 | > Template for quick creation of Chrome extension on Vuejs hot reloading when developing. 6 | 7 | ## Installation: 8 | 9 | This boilerplate was built as a template for [vue-cli](https://github.com/vuejs/vue-cli) and includes options to customize your final scaffolded app. 10 | 11 | ```bash 12 | # install vue-cli 13 | $ npm install -g vue-cli 14 | # create a new project using the template 15 | $ vue init ALiangLiang/vue-webpack-chrome-extension-template my-project 16 | # install dependencies and go! 17 | $ cd my-project 18 | $ npm install # or yarn 19 | $ npm run dev # or yarn dev 20 | ``` 21 | 22 | ## Structure 23 | 24 | ```bash 25 | . 26 | ├── build # core scripts 27 | │   ├── page.ejs # html page boilerplate of background, options, etc. 28 | │   ├── tools.js # util scripts 29 | │   ├── webpack.base.js # base webpack configure file 30 | │   ├── webpack.dev.js # configure file on developing, would merge into base 31 | │   └── webpack.prod.js # configure file on build, would merge into base 32 | ├── plugins # special webpack plugins for Chrome extension 33 | │   ├── GenerateLocaleJsonPlugin.js # Transform locale message."js" to "json" 34 | │   └── GenerateManifestJsonPlugin.js # Transform your manifest."js" to "json" 35 | ├── dist # your runtime code. generate by program. 36 | ├── src # your source code 37 | │   ├── _locales # Implement internationalization across your whole extension (https://developer.chrome.com/extensions/i18n) 38 | │   ├── background # Background work of your extension (https://developer.chrome.com/extensions/background_pages) 39 | │   ├── content # Run in the context of web pages (https://developer.chrome.com/extensions/content_scripts) 40 | │   ├── devtools # It can add new UI panels and sidebars, interact with the inspected page, get information about network requests, and more. (https://developer.chrome.com/extensions/devtools) 41 | │   ├── ext # Shared scripts 42 | │   ├── options # To allow users to customize the behavior of your extension, you may wish to provide an options page. (https://developer.chrome.com/extensions/options) 43 | │   ├── popup # The page (window) that will be displayed when the icon is clicked 44 | │   ├── tab # Your application will work in a separate tab 45 | │   └── manifest.js # Descriptions of the application, its rights and possibilities (https://developer.chrome.com/extensions/manifest) 46 | ├── static # static assets, would copy into dist directly. 47 | │   └── icons # icons 48 | ├── extension.zip # extension package. used to upload to web store. 49 | ├── package.json # build scripts and dependencies 50 | ├── package-lock.json # npm lockfile, should be commit into git 51 | └── yarn.lock # yarn lockfile, should be commit into git 52 | ``` 53 | 54 | ## Pre-install 55 | 56 | * vue 57 | * vue-router 58 | * lodash - Javascript util library 59 | * element-ui - Style Framework for Vue.js 60 | 61 | ## License 62 | 63 | MIT 64 | -------------------------------------------------------------------------------- /utils/index.js: -------------------------------------------------------------------------------- 1 | // Shameless copy from https://github.com/vuejs-templates/webpack/blob/b65484714b660aff66eb9f70b6a32487de44b78d/utils/index.js 2 | const path = require('path') 3 | const fs = require('fs') 4 | const spawn = require('child_process').spawn 5 | 6 | const lintStyles = ['standard', 'airbnb'] 7 | 8 | /** 9 | * Sorts dependencies in package.json alphabetically. 10 | * They are unsorted because they were grouped for the handlebars helpers 11 | * @param {object} data Data from questionnaire 12 | */ 13 | exports.sortDependencies = function sortDependencies (data) { 14 | const packageJsonFile = path.join( 15 | data.inPlace ? '' : data.destDirName, 16 | 'package.json' 17 | ) 18 | const packageJson = JSON.parse(fs.readFileSync(packageJsonFile)) 19 | packageJson.devDependencies = sortObject(packageJson.devDependencies) 20 | packageJson.dependencies = sortObject(packageJson.dependencies) 21 | fs.writeFileSync(packageJsonFile, JSON.stringify(packageJson, null, 2) + '\n') 22 | } 23 | 24 | /** 25 | * Runs `npm install` in the project directory 26 | * @param {string} cwd Path of the created project directory 27 | * @param {object} data Data from questionnaire 28 | */ 29 | exports.installDependencies = function installDependencies ( 30 | cwd, 31 | executable = 'npm', 32 | color 33 | ) { 34 | console.log(`\n\n# ${color('Installing project dependencies ...')}`) 35 | console.log('# ========================\n') 36 | return runCommand(executable, ['install'], { 37 | cwd 38 | }) 39 | } 40 | 41 | /** 42 | * Runs `npm run lint -- --fix` in the project directory 43 | * @param {string} cwd Path of the created project directory 44 | * @param {object} data Data from questionnaire 45 | */ 46 | exports.runLintFix = function runLintFix (cwd, data, color) { 47 | if (data.lint && lintStyles.indexOf(data.lintConfig) !== -1) { 48 | console.log( 49 | `\n\n${color( 50 | 'Running eslint --fix to comply with chosen preset rules...' 51 | )}` 52 | ) 53 | console.log('# ========================\n') 54 | const args = 55 | data.autoInstall === 'npm' 56 | ? ['run', 'lint', '--', '--fix'] 57 | : ['run', 'lint', '--fix'] 58 | return runCommand(data.autoInstall, args, { 59 | cwd 60 | }) 61 | } 62 | return Promise.resolve() 63 | } 64 | 65 | /** 66 | * Prints the final message with instructions of necessary next steps. 67 | * @param {Object} data Data from questionnaire. 68 | */ 69 | exports.printMessage = function printMessage (data, { green, yellow }) { 70 | const message = ` 71 | # ${green('Project initialization finished!')} 72 | # ======================== 73 | 74 | To get started: 75 | 76 | ${yellow( 77 | `${data.inPlace ? '' : `cd ${data.destDirName}\n `}${installMsg( 78 | data 79 | )}${lintMsg(data)}npm run dev` 80 | )} 81 | ` 82 | console.log(message) 83 | } 84 | 85 | /** 86 | * If the user will have to run lint --fix themselves, it returns a string 87 | * containing the instruction for this step. 88 | * @param {Object} data Data from questionnaire. 89 | */ 90 | function lintMsg (data) { 91 | return !data.autoInstall && 92 | data.lint && 93 | lintStyles.indexOf(data.lintConfig) !== -1 94 | ? 'npm run lint -- --fix (or for yarn: yarn run lint --fix)\n ' 95 | : '' 96 | } 97 | 98 | /** 99 | * If the user will have to run `npm install` or `yarn` themselves, it returns a string 100 | * containing the instruction for this step. 101 | * @param {Object} data Data from the questionnaire 102 | */ 103 | function installMsg (data) { 104 | return !data.autoInstall ? 'npm install (or if using yarn: yarn)\n ' : '' 105 | } 106 | 107 | /** 108 | * Spawns a child process and runs the specified command 109 | * By default, runs in the CWD and inherits stdio 110 | * Options are the same as node's child_process.spawn 111 | * @param {string} cmd 112 | * @param {array} args 113 | * @param {object} options 114 | */ 115 | function runCommand (cmd, args, options) { 116 | return new Promise((resolve, reject) => { 117 | const spwan = spawn( 118 | cmd, 119 | args, 120 | Object.assign( 121 | { 122 | cwd: process.cwd(), 123 | stdio: 'inherit', 124 | shell: true 125 | }, 126 | options 127 | ) 128 | ) 129 | 130 | spwan.on('exit', () => { 131 | resolve() 132 | }) 133 | }) 134 | } 135 | 136 | function sortObject (object) { 137 | // Based on https://github.com/yarnpkg/yarn/blob/v1.3.2/src/config.js#L79-L85 138 | const sortedObject = {} 139 | Object.keys(object) 140 | .sort() 141 | .forEach(item => { 142 | sortedObject[item] = object[item] 143 | }) 144 | return sortedObject 145 | } 146 | // End Shameless copy 147 | -------------------------------------------------------------------------------- /template/build/webpack.base.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const webpack = require('webpack') 3 | const CleanWebpackPlugin = require('clean-webpack-plugin') 4 | const ChromeReloadPlugin = require('wcer') 5 | const CopyWebpackPlugin = require('copy-webpack-plugin') 6 | {{#if components.locales}} 7 | const GenerateLocaleJsonPlugin = require('../plugins/GenerateLocaleJsonPlugin') 8 | {{/if}} 9 | const { cssLoaders, htmlPage } = require('./tools') 10 | 11 | const rootDir = path.resolve(__dirname, '..') 12 | 13 | let resolve = (dir) => path.join(rootDir, 'src', dir) 14 | 15 | module.exports = { 16 | entry: { 17 | {{#if components.popupTab}} 18 | popup: resolve('./popup'), 19 | tab: resolve('./tab'), 20 | {{/if}} 21 | {{#if components.optionPage}} 22 | options: resolve('./options'), 23 | {{/if}} 24 | {{#if components.contentScript}} 25 | content: resolve('./content'), 26 | {{/if}} 27 | {{#if components.devtool}} 28 | devtools: resolve('./devtools'), 29 | panel: resolve('./devtools/panel'), 30 | {{/if}} 31 | {{#if components.background}} 32 | background: resolve('./background'), 33 | {{/if}} 34 | }, 35 | output: { 36 | path: path.join(rootDir, 'dist'), 37 | publicPath: '/', 38 | filename: 'js/[name].js', 39 | chunkFilename: 'js/[id].[name].js?[hash]', 40 | library: '[name]' 41 | }, 42 | resolve: { 43 | extensions: ['.js', '.vue', '.json'], 44 | alias: { 45 | 'vue$': 'vue/dist/vue.esm.js', 46 | '@': resolve('src') 47 | } 48 | }, 49 | module: { 50 | rules: [{ 51 | test: /\.(js|vue)$/, 52 | loader: 'eslint-loader', 53 | enforce: 'pre', 54 | include: [ path.join(rootDir, 'src') ], 55 | options: { formatter: require('eslint-friendly-formatter') } 56 | }, { 57 | test: /\.vue$/, 58 | loader: 'vue-loader', 59 | options: { 60 | extractCSS: true, 61 | loaders: { 62 | ...cssLoaders(), 63 | js: { loader: 'babel-loader' } 64 | }, 65 | transformToRequire: { 66 | video: 'src', 67 | source: 'src', 68 | img: 'src', 69 | image: 'xlink:href' 70 | } 71 | } 72 | }, { 73 | test: /\.js$/, 74 | loader: 'babel-loader', 75 | include: [ 76 | path.join(rootDir, 'src'), 77 | // https://github.com/sagalbot/vue-select/issues/71#issuecomment-229453096 78 | path.join(rootDir, 'node_modules', 'element-ui', 'src', 'utils') 79 | ] 80 | }, { 81 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 82 | loader: 'url-loader', 83 | options: { 84 | limit: 10000, 85 | name: 'img/[name].[hash:7].[ext]' 86 | } 87 | }, { 88 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 89 | loader: 'url-loader', 90 | options: { 91 | limit: 10000, 92 | name: 'media/[name].[hash:7].[ext]' 93 | } 94 | }, { 95 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 96 | loader: 'url-loader', 97 | options: { 98 | limit: 10000, 99 | name: 'fonts/[name].[hash:7].[ext]' 100 | } 101 | }] 102 | }, 103 | plugins: [ 104 | new CleanWebpackPlugin(['*'], { root: path.join(rootDir, 'dist') }), 105 | // Customize your extension structure. 106 | {{#if components.popupTab}} 107 | htmlPage('home', 'app', ['manifest', 'vendor', 'tab']), 108 | htmlPage('popup', 'popup', ['manifest', 'vendor', 'popup']), 109 | {{/if}} 110 | {{#if components.devtool}} 111 | htmlPage('panel', 'panel', ['manifest', 'vendor', 'panel']), 112 | htmlPage('devtools', 'devtools', ['manifest', 'vendor', 'devtools']), 113 | {{/if}} 114 | {{#if components.optionPage}} 115 | htmlPage('options', 'options', ['manifest', 'vendor', 'options']), 116 | {{/if}} 117 | {{#if components.background}} 118 | htmlPage('background', 'background', ['manifest', 'vendor', 'background']), 119 | {{/if}} 120 | // End customize 121 | new CopyWebpackPlugin([{ from: path.join(rootDir, 'static') }]), 122 | new ChromeReloadPlugin({ 123 | port: 9090, 124 | manifest: path.join(rootDir, 'src', 'manifest.js') 125 | }), 126 | {{#if components.locales}} 127 | new GenerateLocaleJsonPlugin({ 128 | _locales: path.join(rootDir, 'src', '_locales') 129 | }), 130 | {{/if}} 131 | new webpack.optimize.CommonsChunkPlugin({ 132 | name: 'vendor', 133 | minChunks: function (module) { 134 | return ( 135 | module.resource && 136 | /\.js$/.test(module.resource) && 137 | module.resource.indexOf( 138 | path.join(__dirname, '../node_modules') 139 | ) === 0 140 | ) 141 | } 142 | }), 143 | new webpack.optimize.CommonsChunkPlugin({ 144 | name: 'manifest', 145 | chunks: ['vendor'] 146 | }) 147 | ], 148 | performance: { hints: false } 149 | } 150 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | absolute@0.0.1: 6 | version "0.0.1" 7 | resolved "https://registry.yarnpkg.com/absolute/-/absolute-0.0.1.tgz#c22822f87e1c939f579887504d9c109c4173829d" 8 | 9 | ajv@^5.1.0: 10 | version "5.5.2" 11 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 12 | dependencies: 13 | co "^4.6.0" 14 | fast-deep-equal "^1.0.0" 15 | fast-json-stable-stringify "^2.0.0" 16 | json-schema-traverse "^0.3.0" 17 | 18 | align-text@^0.1.1, align-text@^0.1.3: 19 | version "0.1.4" 20 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 21 | dependencies: 22 | kind-of "^3.0.2" 23 | longest "^1.0.1" 24 | repeat-string "^1.5.2" 25 | 26 | amdefine@>=0.0.4: 27 | version "1.0.1" 28 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 29 | 30 | ansi-escapes@^3.0.0: 31 | version "3.0.0" 32 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" 33 | 34 | ansi-red@^0.1.1: 35 | version "0.1.1" 36 | resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" 37 | dependencies: 38 | ansi-wrap "0.1.0" 39 | 40 | ansi-regex@^2.0.0: 41 | version "2.1.1" 42 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 43 | 44 | ansi-regex@^3.0.0: 45 | version "3.0.0" 46 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 47 | 48 | ansi-styles@^2.2.1: 49 | version "2.2.1" 50 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 51 | 52 | ansi-styles@^3.2.0: 53 | version "3.2.0" 54 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 55 | dependencies: 56 | color-convert "^1.9.0" 57 | 58 | ansi-wrap@0.1.0: 59 | version "0.1.0" 60 | resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" 61 | 62 | argparse@^1.0.7: 63 | version "1.0.10" 64 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 65 | dependencies: 66 | sprintf-js "~1.0.2" 67 | 68 | array-differ@^1.0.0: 69 | version "1.0.0" 70 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 71 | 72 | array-union@^1.0.1: 73 | version "1.0.2" 74 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 75 | dependencies: 76 | array-uniq "^1.0.1" 77 | 78 | array-uniq@^1.0.1: 79 | version "1.0.3" 80 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 81 | 82 | arrify@^1.0.0: 83 | version "1.0.1" 84 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 85 | 86 | asn1@~0.2.3: 87 | version "0.2.3" 88 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 89 | 90 | assert-plus@1.0.0, assert-plus@^1.0.0: 91 | version "1.0.0" 92 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 93 | 94 | async@^1.4.0: 95 | version "1.5.2" 96 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 97 | 98 | async@^2.4.0: 99 | version "2.6.0" 100 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" 101 | dependencies: 102 | lodash "^4.14.0" 103 | 104 | asynckit@^0.4.0: 105 | version "0.4.0" 106 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 107 | 108 | aws-sign2@~0.7.0: 109 | version "0.7.0" 110 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 111 | 112 | aws4@^1.6.0: 113 | version "1.6.0" 114 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 115 | 116 | balanced-match@^1.0.0: 117 | version "1.0.0" 118 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 119 | 120 | base64-js@0.0.8: 121 | version "0.0.8" 122 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" 123 | 124 | bcrypt-pbkdf@^1.0.0: 125 | version "1.0.1" 126 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 127 | dependencies: 128 | tweetnacl "^0.14.3" 129 | 130 | bl@^1.0.0: 131 | version "1.2.1" 132 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" 133 | dependencies: 134 | readable-stream "^2.0.5" 135 | 136 | bluebird@^3.1.1: 137 | version "3.5.1" 138 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 139 | 140 | boom@4.x.x: 141 | version "4.3.1" 142 | resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" 143 | dependencies: 144 | hoek "4.x.x" 145 | 146 | boom@5.x.x: 147 | version "5.2.0" 148 | resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" 149 | dependencies: 150 | hoek "4.x.x" 151 | 152 | brace-expansion@^1.1.7: 153 | version "1.1.11" 154 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 155 | dependencies: 156 | balanced-match "^1.0.0" 157 | concat-map "0.0.1" 158 | 159 | buffer-crc32@~0.2.3: 160 | version "0.2.13" 161 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 162 | 163 | buffer@^3.0.1: 164 | version "3.6.0" 165 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" 166 | dependencies: 167 | base64-js "0.0.8" 168 | ieee754 "^1.1.4" 169 | isarray "^1.0.0" 170 | 171 | builtins@^1.0.3: 172 | version "1.0.3" 173 | resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" 174 | 175 | camelcase@^1.0.2: 176 | version "1.2.1" 177 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 178 | 179 | capture-stack-trace@^1.0.0: 180 | version "1.0.0" 181 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" 182 | 183 | caseless@~0.12.0: 184 | version "0.12.0" 185 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 186 | 187 | caw@^2.0.0: 188 | version "2.0.1" 189 | resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" 190 | dependencies: 191 | get-proxy "^2.0.0" 192 | isurl "^1.0.0-alpha5" 193 | tunnel-agent "^0.6.0" 194 | url-to-options "^1.0.1" 195 | 196 | center-align@^0.1.1: 197 | version "0.1.3" 198 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 199 | dependencies: 200 | align-text "^0.1.3" 201 | lazy-cache "^1.0.3" 202 | 203 | chalk@^1.1.3: 204 | version "1.1.3" 205 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 206 | dependencies: 207 | ansi-styles "^2.2.1" 208 | escape-string-regexp "^1.0.2" 209 | has-ansi "^2.0.0" 210 | strip-ansi "^3.0.0" 211 | supports-color "^2.0.0" 212 | 213 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: 214 | version "2.3.1" 215 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" 216 | dependencies: 217 | ansi-styles "^3.2.0" 218 | escape-string-regexp "^1.0.5" 219 | supports-color "^5.2.0" 220 | 221 | chardet@^0.4.0: 222 | version "0.4.2" 223 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" 224 | 225 | cli-cursor@^2.1.0: 226 | version "2.1.0" 227 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 228 | dependencies: 229 | restore-cursor "^2.0.0" 230 | 231 | cli-spinners@^1.0.1: 232 | version "1.1.0" 233 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" 234 | 235 | cli-width@^2.0.0: 236 | version "2.2.0" 237 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 238 | 239 | cliui@^2.1.0: 240 | version "2.1.0" 241 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 242 | dependencies: 243 | center-align "^0.1.1" 244 | right-align "^0.1.1" 245 | wordwrap "0.0.2" 246 | 247 | clone@^1.0.2: 248 | version "1.0.3" 249 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" 250 | 251 | co-from-stream@~0.0.0: 252 | version "0.0.0" 253 | resolved "https://registry.yarnpkg.com/co-from-stream/-/co-from-stream-0.0.0.tgz#1a5cd8ced77263946094fa39f2499a63297bcaf9" 254 | dependencies: 255 | co-read "0.0.1" 256 | 257 | co-fs-extra@^1.2.1: 258 | version "1.2.1" 259 | resolved "https://registry.yarnpkg.com/co-fs-extra/-/co-fs-extra-1.2.1.tgz#3b6ad77cf2614530f677b1cf62664f5ba756b722" 260 | dependencies: 261 | co-from-stream "~0.0.0" 262 | fs-extra "~0.26.5" 263 | thunkify-wrap "~1.0.4" 264 | 265 | co-read@0.0.1: 266 | version "0.0.1" 267 | resolved "https://registry.yarnpkg.com/co-read/-/co-read-0.0.1.tgz#f81b3eb8a86675fec51e3d883a7f564e873c9389" 268 | 269 | co@3.1.0, co@~3.1.0: 270 | version "3.1.0" 271 | resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" 272 | 273 | co@^4.6.0: 274 | version "4.6.0" 275 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 276 | 277 | coffee-script@1.12.7, coffee-script@^1.12.4: 278 | version "1.12.7" 279 | resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" 280 | 281 | color-convert@^1.9.0: 282 | version "1.9.1" 283 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 284 | dependencies: 285 | color-name "^1.1.1" 286 | 287 | color-name@^1.1.1: 288 | version "1.1.3" 289 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 290 | 291 | combined-stream@1.0.6, combined-stream@~1.0.5: 292 | version "1.0.6" 293 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" 294 | dependencies: 295 | delayed-stream "~1.0.0" 296 | 297 | commander@^2.6.0, commander@^2.9.0: 298 | version "2.14.1" 299 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" 300 | 301 | commander@~2.8.1: 302 | version "2.8.1" 303 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" 304 | dependencies: 305 | graceful-readlink ">= 1.0.0" 306 | 307 | concat-map@0.0.1: 308 | version "0.0.1" 309 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 310 | 311 | config-chain@^1.1.11: 312 | version "1.1.11" 313 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" 314 | dependencies: 315 | ini "^1.3.4" 316 | proto-list "~1.2.1" 317 | 318 | consolidate@^0.14.0: 319 | version "0.14.5" 320 | resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.14.5.tgz#5a25047bc76f73072667c8cb52c989888f494c63" 321 | dependencies: 322 | bluebird "^3.1.1" 323 | 324 | core-util-is@1.0.2, core-util-is@~1.0.0: 325 | version "1.0.2" 326 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 327 | 328 | create-error-class@^3.0.0: 329 | version "3.0.2" 330 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 331 | dependencies: 332 | capture-stack-trace "^1.0.0" 333 | 334 | cryptiles@3.x.x: 335 | version "3.1.2" 336 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" 337 | dependencies: 338 | boom "5.x.x" 339 | 340 | dashdash@^1.12.0: 341 | version "1.14.1" 342 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 343 | dependencies: 344 | assert-plus "^1.0.0" 345 | 346 | decamelize@^1.0.0: 347 | version "1.2.0" 348 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 349 | 350 | decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: 351 | version "4.1.1" 352 | resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" 353 | dependencies: 354 | file-type "^5.2.0" 355 | is-stream "^1.1.0" 356 | tar-stream "^1.5.2" 357 | 358 | decompress-tarbz2@^4.0.0: 359 | version "4.1.1" 360 | resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" 361 | dependencies: 362 | decompress-tar "^4.1.0" 363 | file-type "^6.1.0" 364 | is-stream "^1.1.0" 365 | seek-bzip "^1.0.5" 366 | unbzip2-stream "^1.0.9" 367 | 368 | decompress-targz@^4.0.0: 369 | version "4.1.1" 370 | resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" 371 | dependencies: 372 | decompress-tar "^4.1.1" 373 | file-type "^5.2.0" 374 | is-stream "^1.1.0" 375 | 376 | decompress-unzip@^4.0.1: 377 | version "4.0.1" 378 | resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" 379 | dependencies: 380 | file-type "^3.8.0" 381 | get-stream "^2.2.0" 382 | pify "^2.3.0" 383 | yauzl "^2.4.2" 384 | 385 | decompress@^4.0.0: 386 | version "4.2.0" 387 | resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" 388 | dependencies: 389 | decompress-tar "^4.0.0" 390 | decompress-tarbz2 "^4.0.0" 391 | decompress-targz "^4.0.0" 392 | decompress-unzip "^4.0.1" 393 | graceful-fs "^4.1.10" 394 | make-dir "^1.0.0" 395 | pify "^2.3.0" 396 | strip-dirs "^2.0.0" 397 | 398 | delayed-stream@~1.0.0: 399 | version "1.0.0" 400 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 401 | 402 | download-git-repo@^1.0.1: 403 | version "1.0.2" 404 | resolved "https://registry.yarnpkg.com/download-git-repo/-/download-git-repo-1.0.2.tgz#0b93a62057e41e2f21b1a06c95e7b26362b108ff" 405 | dependencies: 406 | download "^5.0.3" 407 | git-clone "^0.1.0" 408 | rimraf "^2.6.1" 409 | 410 | download@^5.0.3: 411 | version "5.0.3" 412 | resolved "https://registry.yarnpkg.com/download/-/download-5.0.3.tgz#63537f977f99266a30eb8a2a2fbd1f20b8000f7a" 413 | dependencies: 414 | caw "^2.0.0" 415 | decompress "^4.0.0" 416 | filenamify "^2.0.0" 417 | get-stream "^3.0.0" 418 | got "^6.3.0" 419 | mkdirp "^0.5.1" 420 | pify "^2.3.0" 421 | 422 | duplexer3@^0.1.4: 423 | version "0.1.4" 424 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 425 | 426 | ecc-jsbn@~0.1.1: 427 | version "0.1.1" 428 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 429 | dependencies: 430 | jsbn "~0.1.0" 431 | 432 | enable@1: 433 | version "1.3.2" 434 | resolved "https://registry.yarnpkg.com/enable/-/enable-1.3.2.tgz#9eba6837d16d0982b59f87d889bf754443d52931" 435 | 436 | end-of-stream@^1.0.0: 437 | version "1.4.1" 438 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 439 | dependencies: 440 | once "^1.4.0" 441 | 442 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 443 | version "1.0.5" 444 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 445 | 446 | esprima@^4.0.0: 447 | version "4.0.0" 448 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 449 | 450 | extend-shallow@^2.0.1: 451 | version "2.0.1" 452 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 453 | dependencies: 454 | is-extendable "^0.1.0" 455 | 456 | extend@~3.0.1: 457 | version "3.0.1" 458 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 459 | 460 | external-editor@^2.0.4: 461 | version "2.1.0" 462 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" 463 | dependencies: 464 | chardet "^0.4.0" 465 | iconv-lite "^0.4.17" 466 | tmp "^0.0.33" 467 | 468 | extsprintf@1.3.0: 469 | version "1.3.0" 470 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 471 | 472 | extsprintf@^1.2.0: 473 | version "1.4.0" 474 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 475 | 476 | fast-deep-equal@^1.0.0: 477 | version "1.0.0" 478 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 479 | 480 | fast-json-stable-stringify@^2.0.0: 481 | version "2.0.0" 482 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 483 | 484 | fd-slicer@~1.0.1: 485 | version "1.0.1" 486 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" 487 | dependencies: 488 | pend "~1.2.0" 489 | 490 | figures@^2.0.0: 491 | version "2.0.0" 492 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 493 | dependencies: 494 | escape-string-regexp "^1.0.5" 495 | 496 | file-type@^3.8.0: 497 | version "3.9.0" 498 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 499 | 500 | file-type@^5.2.0: 501 | version "5.2.0" 502 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" 503 | 504 | file-type@^6.1.0: 505 | version "6.2.0" 506 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" 507 | 508 | filename-reserved-regex@^2.0.0: 509 | version "2.0.0" 510 | resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" 511 | 512 | filenamify@^2.0.0: 513 | version "2.0.0" 514 | resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.0.0.tgz#bd162262c0b6e94bfbcdcf19a3bbb3764f785695" 515 | dependencies: 516 | filename-reserved-regex "^2.0.0" 517 | strip-outer "^1.0.0" 518 | trim-repeated "^1.0.0" 519 | 520 | forever-agent@~0.6.1: 521 | version "0.6.1" 522 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 523 | 524 | form-data@~2.3.1: 525 | version "2.3.2" 526 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" 527 | dependencies: 528 | asynckit "^0.4.0" 529 | combined-stream "1.0.6" 530 | mime-types "^2.1.12" 531 | 532 | fs-extra@~0.26.5: 533 | version "0.26.7" 534 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" 535 | dependencies: 536 | graceful-fs "^4.1.2" 537 | jsonfile "^2.1.0" 538 | klaw "^1.0.0" 539 | path-is-absolute "^1.0.0" 540 | rimraf "^2.2.8" 541 | 542 | fs.realpath@^1.0.0: 543 | version "1.0.0" 544 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 545 | 546 | get-proxy@^2.0.0: 547 | version "2.1.0" 548 | resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" 549 | dependencies: 550 | npm-conf "^1.1.0" 551 | 552 | get-stream@^2.2.0: 553 | version "2.3.1" 554 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" 555 | dependencies: 556 | object-assign "^4.0.1" 557 | pinkie-promise "^2.0.0" 558 | 559 | get-stream@^3.0.0: 560 | version "3.0.0" 561 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 562 | 563 | getpass@^0.1.1: 564 | version "0.1.7" 565 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 566 | dependencies: 567 | assert-plus "^1.0.0" 568 | 569 | git-clone@^0.1.0: 570 | version "0.1.0" 571 | resolved "https://registry.yarnpkg.com/git-clone/-/git-clone-0.1.0.tgz#0d76163778093aef7f1c30238f2a9ef3f07a2eb9" 572 | 573 | glob@^7.0.5: 574 | version "7.1.2" 575 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 576 | dependencies: 577 | fs.realpath "^1.0.0" 578 | inflight "^1.0.4" 579 | inherits "2" 580 | minimatch "^3.0.4" 581 | once "^1.3.0" 582 | path-is-absolute "^1.0.0" 583 | 584 | got@^6.3.0: 585 | version "6.7.1" 586 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 587 | dependencies: 588 | create-error-class "^3.0.0" 589 | duplexer3 "^0.1.4" 590 | get-stream "^3.0.0" 591 | is-redirect "^1.0.0" 592 | is-retry-allowed "^1.0.0" 593 | is-stream "^1.0.0" 594 | lowercase-keys "^1.0.0" 595 | safe-buffer "^5.0.1" 596 | timed-out "^4.0.0" 597 | unzip-response "^2.0.1" 598 | url-parse-lax "^1.0.0" 599 | 600 | graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: 601 | version "4.1.11" 602 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 603 | 604 | "graceful-readlink@>= 1.0.0": 605 | version "1.0.1" 606 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 607 | 608 | gray-matter@^2.0.0: 609 | version "2.1.1" 610 | resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.1.tgz#3042d9adec2a1ded6a7707a9ed2380f8a17a430e" 611 | dependencies: 612 | ansi-red "^0.1.1" 613 | coffee-script "^1.12.4" 614 | extend-shallow "^2.0.1" 615 | js-yaml "^3.8.1" 616 | toml "^2.3.2" 617 | 618 | handlebars@^4.0.5: 619 | version "4.0.11" 620 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" 621 | dependencies: 622 | async "^1.4.0" 623 | optimist "^0.6.1" 624 | source-map "^0.4.4" 625 | optionalDependencies: 626 | uglify-js "^2.6" 627 | 628 | har-schema@^2.0.0: 629 | version "2.0.0" 630 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 631 | 632 | har-validator@~5.0.3: 633 | version "5.0.3" 634 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" 635 | dependencies: 636 | ajv "^5.1.0" 637 | har-schema "^2.0.0" 638 | 639 | has-ansi@^2.0.0: 640 | version "2.0.0" 641 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 642 | dependencies: 643 | ansi-regex "^2.0.0" 644 | 645 | has-flag@^3.0.0: 646 | version "3.0.0" 647 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 648 | 649 | has-generators@^1.0.1: 650 | version "1.0.1" 651 | resolved "https://registry.yarnpkg.com/has-generators/-/has-generators-1.0.1.tgz#a6a2e55486011940482e13e2c93791c449acf449" 652 | 653 | has-symbol-support-x@^1.4.1: 654 | version "1.4.1" 655 | resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c" 656 | 657 | has-to-string-tag-x@^1.2.0: 658 | version "1.4.1" 659 | resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" 660 | dependencies: 661 | has-symbol-support-x "^1.4.1" 662 | 663 | hawk@~6.0.2: 664 | version "6.0.2" 665 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" 666 | dependencies: 667 | boom "4.x.x" 668 | cryptiles "3.x.x" 669 | hoek "4.x.x" 670 | sntp "2.x.x" 671 | 672 | hoek@4.x.x: 673 | version "4.2.1" 674 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" 675 | 676 | http-signature@~1.2.0: 677 | version "1.2.0" 678 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 679 | dependencies: 680 | assert-plus "^1.0.0" 681 | jsprim "^1.2.2" 682 | sshpk "^1.7.0" 683 | 684 | iconv-lite@^0.4.17: 685 | version "0.4.19" 686 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 687 | 688 | ieee754@^1.1.4: 689 | version "1.1.8" 690 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 691 | 692 | inflight@^1.0.4: 693 | version "1.0.6" 694 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 695 | dependencies: 696 | once "^1.3.0" 697 | wrappy "1" 698 | 699 | inherits@2, inherits@~2.0.3: 700 | version "2.0.3" 701 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 702 | 703 | ini@^1.3.4: 704 | version "1.3.5" 705 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 706 | 707 | inquirer@^3.3.0: 708 | version "3.3.0" 709 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 710 | dependencies: 711 | ansi-escapes "^3.0.0" 712 | chalk "^2.0.0" 713 | cli-cursor "^2.1.0" 714 | cli-width "^2.0.0" 715 | external-editor "^2.0.4" 716 | figures "^2.0.0" 717 | lodash "^4.3.0" 718 | mute-stream "0.0.7" 719 | run-async "^2.2.0" 720 | rx-lite "^4.0.8" 721 | rx-lite-aggregates "^4.0.8" 722 | string-width "^2.1.0" 723 | strip-ansi "^4.0.0" 724 | through "^2.3.6" 725 | 726 | is-buffer@^1.1.5: 727 | version "1.1.6" 728 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 729 | 730 | is-extendable@^0.1.0: 731 | version "0.1.1" 732 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 733 | 734 | is-fullwidth-code-point@^2.0.0: 735 | version "2.0.0" 736 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 737 | 738 | is-natural-number@^4.0.1: 739 | version "4.0.1" 740 | resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" 741 | 742 | is-object@^1.0.1: 743 | version "1.0.1" 744 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 745 | 746 | is-promise@^2.1.0: 747 | version "2.1.0" 748 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 749 | 750 | is-redirect@^1.0.0: 751 | version "1.0.0" 752 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 753 | 754 | is-retry-allowed@^1.0.0: 755 | version "1.1.0" 756 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 757 | 758 | is-stream@^1.0.0, is-stream@^1.1.0: 759 | version "1.1.0" 760 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 761 | 762 | is-typedarray@~1.0.0: 763 | version "1.0.0" 764 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 765 | 766 | is-utf8@~0.2.0: 767 | version "0.2.1" 768 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 769 | 770 | is@^3.1.0: 771 | version "3.2.1" 772 | resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" 773 | 774 | isarray@^1.0.0, isarray@~1.0.0: 775 | version "1.0.0" 776 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 777 | 778 | isstream@~0.1.2: 779 | version "0.1.2" 780 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 781 | 782 | isurl@^1.0.0-alpha5: 783 | version "1.0.0" 784 | resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" 785 | dependencies: 786 | has-to-string-tag-x "^1.2.0" 787 | is-object "^1.0.1" 788 | 789 | js-yaml@^3.8.1: 790 | version "3.10.0" 791 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" 792 | dependencies: 793 | argparse "^1.0.7" 794 | esprima "^4.0.0" 795 | 796 | jsbn@~0.1.0: 797 | version "0.1.1" 798 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 799 | 800 | json-schema-traverse@^0.3.0: 801 | version "0.3.1" 802 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 803 | 804 | json-schema@0.2.3: 805 | version "0.2.3" 806 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 807 | 808 | json-stringify-safe@~5.0.1: 809 | version "5.0.1" 810 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 811 | 812 | jsonfile@^2.1.0: 813 | version "2.4.0" 814 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 815 | optionalDependencies: 816 | graceful-fs "^4.1.6" 817 | 818 | jsprim@^1.2.2: 819 | version "1.4.1" 820 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 821 | dependencies: 822 | assert-plus "1.0.0" 823 | extsprintf "1.3.0" 824 | json-schema "0.2.3" 825 | verror "1.10.0" 826 | 827 | kind-of@^3.0.2: 828 | version "3.2.2" 829 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 830 | dependencies: 831 | is-buffer "^1.1.5" 832 | 833 | klaw@^1.0.0: 834 | version "1.3.1" 835 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 836 | optionalDependencies: 837 | graceful-fs "^4.1.9" 838 | 839 | lazy-cache@^1.0.3: 840 | version "1.0.4" 841 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 842 | 843 | lodash@^4.14.0, lodash@^4.3.0: 844 | version "4.17.5" 845 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" 846 | 847 | log-symbols@^2.1.0: 848 | version "2.2.0" 849 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 850 | dependencies: 851 | chalk "^2.0.1" 852 | 853 | longest@^1.0.1: 854 | version "1.0.1" 855 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 856 | 857 | lowercase-keys@^1.0.0: 858 | version "1.0.0" 859 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 860 | 861 | make-dir@^1.0.0: 862 | version "1.2.0" 863 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" 864 | dependencies: 865 | pify "^3.0.0" 866 | 867 | metalsmith@^2.1.0: 868 | version "2.3.0" 869 | resolved "https://registry.yarnpkg.com/metalsmith/-/metalsmith-2.3.0.tgz#833afbb5a2a6385e2d9ae3d935e39e33eaea5231" 870 | dependencies: 871 | absolute "0.0.1" 872 | chalk "^1.1.3" 873 | clone "^1.0.2" 874 | co-fs-extra "^1.2.1" 875 | commander "^2.6.0" 876 | gray-matter "^2.0.0" 877 | has-generators "^1.0.1" 878 | is "^3.1.0" 879 | is-utf8 "~0.2.0" 880 | recursive-readdir "^2.1.0" 881 | rimraf "^2.2.8" 882 | stat-mode "^0.2.0" 883 | thunkify "^2.1.2" 884 | unyield "0.0.1" 885 | ware "^1.2.0" 886 | win-fork "^1.1.1" 887 | 888 | mime-db@~1.33.0: 889 | version "1.33.0" 890 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" 891 | 892 | mime-types@^2.1.12, mime-types@~2.1.17: 893 | version "2.1.18" 894 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" 895 | dependencies: 896 | mime-db "~1.33.0" 897 | 898 | mimic-fn@^1.0.0: 899 | version "1.2.0" 900 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 901 | 902 | minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4: 903 | version "3.0.4" 904 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 905 | dependencies: 906 | brace-expansion "^1.1.7" 907 | 908 | minimist@0.0.8: 909 | version "0.0.8" 910 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 911 | 912 | minimist@~0.0.1: 913 | version "0.0.10" 914 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 915 | 916 | mkdirp@^0.5.1: 917 | version "0.5.1" 918 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 919 | dependencies: 920 | minimist "0.0.8" 921 | 922 | multimatch@^2.1.0: 923 | version "2.1.0" 924 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" 925 | dependencies: 926 | array-differ "^1.0.0" 927 | array-union "^1.0.1" 928 | arrify "^1.0.0" 929 | minimatch "^3.0.0" 930 | 931 | mute-stream@0.0.7: 932 | version "0.0.7" 933 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 934 | 935 | npm-conf@^1.1.0: 936 | version "1.1.3" 937 | resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" 938 | dependencies: 939 | config-chain "^1.1.11" 940 | pify "^3.0.0" 941 | 942 | oauth-sign@~0.8.2: 943 | version "0.8.2" 944 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 945 | 946 | object-assign@^4.0.1: 947 | version "4.1.1" 948 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 949 | 950 | once@^1.3.0, once@^1.4.0: 951 | version "1.4.0" 952 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 953 | dependencies: 954 | wrappy "1" 955 | 956 | onetime@^2.0.0: 957 | version "2.0.1" 958 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 959 | dependencies: 960 | mimic-fn "^1.0.0" 961 | 962 | optimist@^0.6.1: 963 | version "0.6.1" 964 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 965 | dependencies: 966 | minimist "~0.0.1" 967 | wordwrap "~0.0.2" 968 | 969 | ora@^1.3.0: 970 | version "1.4.0" 971 | resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5" 972 | dependencies: 973 | chalk "^2.1.0" 974 | cli-cursor "^2.1.0" 975 | cli-spinners "^1.0.1" 976 | log-symbols "^2.1.0" 977 | 978 | os-homedir@^1.0.0: 979 | version "1.0.2" 980 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 981 | 982 | os-tmpdir@~1.0.2: 983 | version "1.0.2" 984 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 985 | 986 | path-is-absolute@^1.0.0: 987 | version "1.0.1" 988 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 989 | 990 | pend@~1.2.0: 991 | version "1.2.0" 992 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 993 | 994 | performance-now@^2.1.0: 995 | version "2.1.0" 996 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 997 | 998 | pify@^2.3.0: 999 | version "2.3.0" 1000 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1001 | 1002 | pify@^3.0.0: 1003 | version "3.0.0" 1004 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1005 | 1006 | pinkie-promise@^2.0.0: 1007 | version "2.0.1" 1008 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1009 | dependencies: 1010 | pinkie "^2.0.0" 1011 | 1012 | pinkie@^2.0.0: 1013 | version "2.0.4" 1014 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1015 | 1016 | prepend-http@^1.0.1: 1017 | version "1.0.4" 1018 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 1019 | 1020 | process-nextick-args@~2.0.0: 1021 | version "2.0.0" 1022 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1023 | 1024 | proto-list@~1.2.1: 1025 | version "1.2.4" 1026 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 1027 | 1028 | punycode@^1.4.1: 1029 | version "1.4.1" 1030 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1031 | 1032 | qs@~6.5.1: 1033 | version "6.5.1" 1034 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" 1035 | 1036 | read-metadata@^1.0.0: 1037 | version "1.0.0" 1038 | resolved "https://registry.yarnpkg.com/read-metadata/-/read-metadata-1.0.0.tgz#6df9cbe51184e8ceb7d0668b40ee5191e6f3dac6" 1039 | dependencies: 1040 | yaml-js "0.0.8" 1041 | 1042 | readable-stream@^2.0.0, readable-stream@^2.0.5: 1043 | version "2.3.4" 1044 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" 1045 | dependencies: 1046 | core-util-is "~1.0.0" 1047 | inherits "~2.0.3" 1048 | isarray "~1.0.0" 1049 | process-nextick-args "~2.0.0" 1050 | safe-buffer "~5.1.1" 1051 | string_decoder "~1.0.3" 1052 | util-deprecate "~1.0.1" 1053 | 1054 | recursive-readdir@^2.1.0: 1055 | version "2.2.2" 1056 | resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" 1057 | dependencies: 1058 | minimatch "3.0.4" 1059 | 1060 | repeat-string@^1.5.2: 1061 | version "1.6.1" 1062 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1063 | 1064 | request@^2.67.0: 1065 | version "2.83.0" 1066 | resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" 1067 | dependencies: 1068 | aws-sign2 "~0.7.0" 1069 | aws4 "^1.6.0" 1070 | caseless "~0.12.0" 1071 | combined-stream "~1.0.5" 1072 | extend "~3.0.1" 1073 | forever-agent "~0.6.1" 1074 | form-data "~2.3.1" 1075 | har-validator "~5.0.3" 1076 | hawk "~6.0.2" 1077 | http-signature "~1.2.0" 1078 | is-typedarray "~1.0.0" 1079 | isstream "~0.1.2" 1080 | json-stringify-safe "~5.0.1" 1081 | mime-types "~2.1.17" 1082 | oauth-sign "~0.8.2" 1083 | performance-now "^2.1.0" 1084 | qs "~6.5.1" 1085 | safe-buffer "^5.1.1" 1086 | stringstream "~0.0.5" 1087 | tough-cookie "~2.3.3" 1088 | tunnel-agent "^0.6.0" 1089 | uuid "^3.1.0" 1090 | 1091 | restore-cursor@^2.0.0: 1092 | version "2.0.0" 1093 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 1094 | dependencies: 1095 | onetime "^2.0.0" 1096 | signal-exit "^3.0.2" 1097 | 1098 | right-align@^0.1.1: 1099 | version "0.1.3" 1100 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1101 | dependencies: 1102 | align-text "^0.1.1" 1103 | 1104 | rimraf@^2.2.8, rimraf@^2.5.0, rimraf@^2.6.1: 1105 | version "2.6.2" 1106 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 1107 | dependencies: 1108 | glob "^7.0.5" 1109 | 1110 | run-async@^2.2.0: 1111 | version "2.3.0" 1112 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1113 | dependencies: 1114 | is-promise "^2.1.0" 1115 | 1116 | rx-lite-aggregates@^4.0.8: 1117 | version "4.0.8" 1118 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 1119 | dependencies: 1120 | rx-lite "*" 1121 | 1122 | rx-lite@*, rx-lite@^4.0.8: 1123 | version "4.0.8" 1124 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 1125 | 1126 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1127 | version "5.1.1" 1128 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 1129 | 1130 | seek-bzip@^1.0.5: 1131 | version "1.0.5" 1132 | resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" 1133 | dependencies: 1134 | commander "~2.8.1" 1135 | 1136 | semver@^5.1.0: 1137 | version "5.5.0" 1138 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 1139 | 1140 | signal-exit@^3.0.2: 1141 | version "3.0.2" 1142 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1143 | 1144 | sntp@2.x.x: 1145 | version "2.1.0" 1146 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" 1147 | dependencies: 1148 | hoek "4.x.x" 1149 | 1150 | source-map@^0.4.4: 1151 | version "0.4.4" 1152 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 1153 | dependencies: 1154 | amdefine ">=0.0.4" 1155 | 1156 | source-map@~0.5.1: 1157 | version "0.5.7" 1158 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1159 | 1160 | sprintf-js@~1.0.2: 1161 | version "1.0.3" 1162 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1163 | 1164 | sshpk@^1.7.0: 1165 | version "1.13.1" 1166 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 1167 | dependencies: 1168 | asn1 "~0.2.3" 1169 | assert-plus "^1.0.0" 1170 | dashdash "^1.12.0" 1171 | getpass "^0.1.1" 1172 | optionalDependencies: 1173 | bcrypt-pbkdf "^1.0.0" 1174 | ecc-jsbn "~0.1.1" 1175 | jsbn "~0.1.0" 1176 | tweetnacl "~0.14.0" 1177 | 1178 | stat-mode@^0.2.0: 1179 | version "0.2.2" 1180 | resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" 1181 | 1182 | string-width@^2.1.0: 1183 | version "2.1.1" 1184 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1185 | dependencies: 1186 | is-fullwidth-code-point "^2.0.0" 1187 | strip-ansi "^4.0.0" 1188 | 1189 | string_decoder@~1.0.3: 1190 | version "1.0.3" 1191 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 1192 | dependencies: 1193 | safe-buffer "~5.1.0" 1194 | 1195 | stringstream@~0.0.5: 1196 | version "0.0.5" 1197 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 1198 | 1199 | strip-ansi@^3.0.0: 1200 | version "3.0.1" 1201 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1202 | dependencies: 1203 | ansi-regex "^2.0.0" 1204 | 1205 | strip-ansi@^4.0.0: 1206 | version "4.0.0" 1207 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1208 | dependencies: 1209 | ansi-regex "^3.0.0" 1210 | 1211 | strip-dirs@^2.0.0: 1212 | version "2.1.0" 1213 | resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" 1214 | dependencies: 1215 | is-natural-number "^4.0.1" 1216 | 1217 | strip-outer@^1.0.0: 1218 | version "1.0.0" 1219 | resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8" 1220 | dependencies: 1221 | escape-string-regexp "^1.0.2" 1222 | 1223 | supports-color@^2.0.0: 1224 | version "2.0.0" 1225 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1226 | 1227 | supports-color@^5.2.0: 1228 | version "5.2.0" 1229 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" 1230 | dependencies: 1231 | has-flag "^3.0.0" 1232 | 1233 | tar-stream@^1.5.2: 1234 | version "1.5.5" 1235 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" 1236 | dependencies: 1237 | bl "^1.0.0" 1238 | end-of-stream "^1.0.0" 1239 | readable-stream "^2.0.0" 1240 | xtend "^4.0.0" 1241 | 1242 | through@^2.3.6: 1243 | version "2.3.8" 1244 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1245 | 1246 | thunkify-wrap@~1.0.4: 1247 | version "1.0.4" 1248 | resolved "https://registry.yarnpkg.com/thunkify-wrap/-/thunkify-wrap-1.0.4.tgz#b52be548ddfefda20e00b58c6096762b43dd6880" 1249 | dependencies: 1250 | enable "1" 1251 | 1252 | thunkify@^2.1.2: 1253 | version "2.1.2" 1254 | resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" 1255 | 1256 | tildify@^1.2.0: 1257 | version "1.2.0" 1258 | resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" 1259 | dependencies: 1260 | os-homedir "^1.0.0" 1261 | 1262 | timed-out@^4.0.0: 1263 | version "4.0.1" 1264 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 1265 | 1266 | tmp@^0.0.33: 1267 | version "0.0.33" 1268 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1269 | dependencies: 1270 | os-tmpdir "~1.0.2" 1271 | 1272 | toml@^2.3.2: 1273 | version "2.3.3" 1274 | resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb" 1275 | 1276 | tough-cookie@~2.3.3: 1277 | version "2.3.3" 1278 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" 1279 | dependencies: 1280 | punycode "^1.4.1" 1281 | 1282 | trim-repeated@^1.0.0: 1283 | version "1.0.0" 1284 | resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" 1285 | dependencies: 1286 | escape-string-regexp "^1.0.2" 1287 | 1288 | tunnel-agent@^0.6.0: 1289 | version "0.6.0" 1290 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1291 | dependencies: 1292 | safe-buffer "^5.0.1" 1293 | 1294 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1295 | version "0.14.5" 1296 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1297 | 1298 | uglify-js@^2.6: 1299 | version "2.8.29" 1300 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 1301 | dependencies: 1302 | source-map "~0.5.1" 1303 | yargs "~3.10.0" 1304 | optionalDependencies: 1305 | uglify-to-browserify "~1.0.0" 1306 | 1307 | uglify-to-browserify@~1.0.0: 1308 | version "1.0.2" 1309 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 1310 | 1311 | uid@0.0.2: 1312 | version "0.0.2" 1313 | resolved "https://registry.yarnpkg.com/uid/-/uid-0.0.2.tgz#5e4a5d4b78138b4f70f89fd3c76fc59aa9d2f103" 1314 | 1315 | unbzip2-stream@^1.0.9: 1316 | version "1.2.5" 1317 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" 1318 | dependencies: 1319 | buffer "^3.0.1" 1320 | through "^2.3.6" 1321 | 1322 | unyield@0.0.1: 1323 | version "0.0.1" 1324 | resolved "https://registry.yarnpkg.com/unyield/-/unyield-0.0.1.tgz#150e65da42bf7742445b958a64eb9b85d1d2b180" 1325 | dependencies: 1326 | co "~3.1.0" 1327 | 1328 | unzip-response@^2.0.1: 1329 | version "2.0.1" 1330 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 1331 | 1332 | url-parse-lax@^1.0.0: 1333 | version "1.0.0" 1334 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 1335 | dependencies: 1336 | prepend-http "^1.0.1" 1337 | 1338 | url-to-options@^1.0.1: 1339 | version "1.0.1" 1340 | resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" 1341 | 1342 | user-home@^2.0.0: 1343 | version "2.0.0" 1344 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 1345 | dependencies: 1346 | os-homedir "^1.0.0" 1347 | 1348 | util-deprecate@~1.0.1: 1349 | version "1.0.2" 1350 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1351 | 1352 | uuid@^3.1.0: 1353 | version "3.2.1" 1354 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 1355 | 1356 | validate-npm-package-name@^3.0.0: 1357 | version "3.0.0" 1358 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" 1359 | dependencies: 1360 | builtins "^1.0.3" 1361 | 1362 | verror@1.10.0: 1363 | version "1.10.0" 1364 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1365 | dependencies: 1366 | assert-plus "^1.0.0" 1367 | core-util-is "1.0.2" 1368 | extsprintf "^1.2.0" 1369 | 1370 | vue-cli@^2.9.3: 1371 | version "2.9.3" 1372 | resolved "https://registry.yarnpkg.com/vue-cli/-/vue-cli-2.9.3.tgz#c363ec48a7f55f72b76d90f44c001cc52d2fe0a8" 1373 | dependencies: 1374 | uid "0.0.2" 1375 | async "^2.4.0" 1376 | chalk "^2.1.0" 1377 | coffee-script "1.12.7" 1378 | commander "^2.9.0" 1379 | consolidate "^0.14.0" 1380 | download-git-repo "^1.0.1" 1381 | handlebars "^4.0.5" 1382 | inquirer "^3.3.0" 1383 | metalsmith "^2.1.0" 1384 | minimatch "^3.0.0" 1385 | multimatch "^2.1.0" 1386 | ora "^1.3.0" 1387 | read-metadata "^1.0.0" 1388 | request "^2.67.0" 1389 | rimraf "^2.5.0" 1390 | semver "^5.1.0" 1391 | tildify "^1.2.0" 1392 | user-home "^2.0.0" 1393 | validate-npm-package-name "^3.0.0" 1394 | 1395 | ware@^1.2.0: 1396 | version "1.3.0" 1397 | resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" 1398 | dependencies: 1399 | wrap-fn "^0.1.0" 1400 | 1401 | win-fork@^1.1.1: 1402 | version "1.1.1" 1403 | resolved "https://registry.yarnpkg.com/win-fork/-/win-fork-1.1.1.tgz#8f58e0656fca00adc8c86a2b89e3cd2d6a2d5e5e" 1404 | 1405 | window-size@0.1.0: 1406 | version "0.1.0" 1407 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 1408 | 1409 | wordwrap@0.0.2: 1410 | version "0.0.2" 1411 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 1412 | 1413 | wordwrap@~0.0.2: 1414 | version "0.0.3" 1415 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 1416 | 1417 | wrap-fn@^0.1.0: 1418 | version "0.1.5" 1419 | resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" 1420 | dependencies: 1421 | co "3.1.0" 1422 | 1423 | wrappy@1: 1424 | version "1.0.2" 1425 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1426 | 1427 | xtend@^4.0.0: 1428 | version "4.0.1" 1429 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1430 | 1431 | yaml-js@0.0.8: 1432 | version "0.0.8" 1433 | resolved "https://registry.yarnpkg.com/yaml-js/-/yaml-js-0.0.8.tgz#87cfa5a9613f48e26005420d6a8ee0da6fe8daec" 1434 | 1435 | yargs@~3.10.0: 1436 | version "3.10.0" 1437 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 1438 | dependencies: 1439 | camelcase "^1.0.2" 1440 | cliui "^2.1.0" 1441 | decamelize "^1.0.0" 1442 | window-size "0.1.0" 1443 | 1444 | yauzl@^2.4.2: 1445 | version "2.9.1" 1446 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.9.1.tgz#a81981ea70a57946133883f029c5821a89359a7f" 1447 | dependencies: 1448 | buffer-crc32 "~0.2.3" 1449 | fd-slicer "~1.0.1" 1450 | --------------------------------------------------------------------------------