├── .DS_Store ├── .editorconfig ├── .gitignore ├── .npmignore ├── README.md ├── package.json ├── public ├── .DS_Store └── create-app.png ├── src ├── configTargets.ts ├── createApp.ts ├── errorApp.ts └── index.ts ├── templates ├── config │ ├── git-ignore │ └── webpack.config.js ├── webpack-alone │ ├── package.json │ ├── public │ │ └── index.html │ ├── src │ │ └── entry.js │ └── webpack.config.js ├── webpack-babel │ ├── package.json │ ├── public │ │ └── index.html │ ├── src │ │ └── entry.js │ └── webpack.config.js ├── webpack-react-ts │ ├── package.json │ ├── public │ │ └── index.html │ ├── src │ │ └── entry.tsx │ ├── tsconfig.json │ └── webpack.config.js └── webpack-react │ ├── package.json │ ├── public │ └── index.html │ ├── src │ └── entry.js │ └── webpack.config.js ├── tsconfig.json └── yarn.lock /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wilsson/create-webpack-application/19c9230a19ea0eefd7b4fa0c23bfbd7857da6521/.DS_Store -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | indent_size = 2 3 | indent_style = space -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | test 4 | yarn-error.log 5 | .Ds_Store 6 | yarn.lock 7 | package-lock.json 8 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /src 2 | /test 3 | /public 4 | yarn.lock -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [create-react-app]: https://github.com/facebookincubator/create-react-app 2 | 3 | # Create Webpack App 4 | 5 | :rocket: Easily create a basic webpack application. 6 | 7 | ## Getting Started 8 | 9 | ### Installation 10 | 11 | Install globally 12 | 13 | ```bash 14 | npm install -g create-webpack-application 15 | ``` 16 | 17 | ### Usage 18 | 19 | 20 | ```bash 21 | create-webpack-application 22 | ``` 23 | 24 | or 25 | 26 | ```bash 27 | cwa 28 | ``` 29 | 30 | and select scaffold. 31 | 32 | ![Alt text](/public/create-app.png) 33 | 34 | Create a directory called my-app with the initial structure of the project. 35 | 36 | Will also install its dependencies. 37 | 38 | ``` 39 | my-app 40 | ├── node_modules 41 | ├── package.json 42 | ├── .gitignore 43 | ├── public 44 | │ └── index.html 45 | └── src 46 | └── entry.js 47 | ``` 48 | 49 | ### Scripts 50 | 51 | ```bash 52 | npm start 53 | ``` 54 | Then open http://localhost:8080/ to see your app. 55 | 56 | ```bash 57 | npm build 58 | ``` 59 | 60 | Transpile and watch. 61 | 62 | Inspired by [create-react-app] :heart: -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "create-webpack-application", 3 | "version": "0.3.28", 4 | "description": "Easily create a basic webpack application", 5 | "bin": { 6 | "create-webpack-application": "./dist/index.js", 7 | "cwa": "./dist/index.js" 8 | }, 9 | "scripts": { 10 | "build": "tsc", 11 | "publish": "npm publish" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/wilsson/create-webpack-application.git" 16 | }, 17 | "author": "wilsson , Juan Pablo ", 18 | "license": "MIT", 19 | "keywords": [ 20 | "webpack", 21 | "app" 22 | ], 23 | "homepage": "https://github.com/wilsson/create-webpack-application#readme", 24 | "dependencies": { 25 | "chalk": "^2.1.0", 26 | "commander": "^2.11.0", 27 | "fs-extra": "7.0.1", 28 | "inquirer": "^6.0.0", 29 | "validate-npm-package-name": "^3.0.0" 30 | }, 31 | "devDependencies": { 32 | "@types/node": "^8.0.20", 33 | "typescript": "^2.4.2" 34 | }, 35 | "engines": { 36 | "node": ">=8.5.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wilsson/create-webpack-application/19c9230a19ea0eefd7b4fa0c23bfbd7857da6521/public/.DS_Store -------------------------------------------------------------------------------- /public/create-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wilsson/create-webpack-application/19c9230a19ea0eefd7b4fa0c23bfbd7857da6521/public/create-app.png -------------------------------------------------------------------------------- /src/configTargets.ts: -------------------------------------------------------------------------------- 1 | import { join } from 'path'; 2 | 3 | const commonDependencies = [ 4 | 'webpack', 5 | 'webpack-cli', 6 | 'webpack-dev-server', 7 | 'html-webpack-plugin' 8 | ]; 9 | 10 | export const configTargets = { 11 | react: { 12 | message: 'React + Babel + Webpack', 13 | templateDir: join(__dirname, '../templates/webpack-react'), 14 | dependencies: [ 15 | 'react', 16 | 'react-dom', 17 | 'babel-loader', 18 | '@babel/core', 19 | '@babel/preset-env', 20 | '@babel/preset-react', 21 | ...commonDependencies 22 | ] 23 | }, 24 | 'react-ts': { 25 | message: 'React + Typescript + Webpack', 26 | templateDir: join(__dirname, '../templates/webpack-react-ts'), 27 | dependencies: [ 28 | 'react', 29 | 'react-dom', 30 | '@types/react', 31 | '@types/react-dom', 32 | 'typescript', 33 | 'ts-loader', 34 | ...commonDependencies 35 | ] 36 | }, 37 | only: { 38 | message: 'Only Webpack', 39 | templateDir: join(__dirname, '../templates/webpack-alone'), 40 | dependencies: [ 41 | ...commonDependencies 42 | ] 43 | }, 44 | babel: { 45 | message: 'Webpack + Babel7', 46 | templateDir: join(__dirname, '../templates/webpack-babel'), 47 | dependencies: [ 48 | 'babel-loader', 49 | '@babel/core', 50 | '@babel/preset-env', 51 | ...commonDependencies 52 | ] 53 | } 54 | }; -------------------------------------------------------------------------------- /src/createApp.ts: -------------------------------------------------------------------------------- 1 | import { resolve, basename, join } from 'path'; 2 | import { copySync, ensureDirSync } from 'fs-extra'; 3 | import { writeFileSync, readFileSync } from 'fs'; 4 | import { spawn, execSync } from 'child_process'; 5 | import chalk from 'chalk'; 6 | import { configTargets } from './configTargets'; 7 | import { errorApp } from './errorApp'; 8 | 9 | const hasYarn = (): boolean => { 10 | try { 11 | execSync('yarnpkg --version', { stdio: 'ignore' }); 12 | return true; 13 | } catch (e) { 14 | return false; 15 | } 16 | }; 17 | 18 | export const createApp = ({ name, target }): void => { 19 | if (!name) { 20 | errorApp(name); 21 | } 22 | const root = resolve(name); 23 | const appName = basename(root); 24 | validationAppName(appName); 25 | let { templateDir, dependencies } = configTargets[target]; 26 | ensureDirSync(root); 27 | process.chdir(root); 28 | copySync(templateDir, root) 29 | copyPackage(appName, templateDir, root); 30 | installPackages(name, dependencies); 31 | } 32 | 33 | const installPackages = (name: string, dependency: string[]): void => { 34 | let command = 'npm'; 35 | const useYarn = hasYarn(); 36 | 37 | if (useYarn) { 38 | command = 'yarn'; 39 | } 40 | 41 | let config = { 42 | stdio: 'inherit', 43 | shell: true 44 | }; 45 | 46 | let args: string[] = [ 47 | useYarn ? 'add' : 'install', 48 | ...dependency 49 | ]; 50 | 51 | console.log(''); 52 | console.log('Installing packages for your application'); 53 | const child = spawn(command, args, config as any); 54 | child.on('close', () => { 55 | console.log(''); 56 | console.log(`Project ${chalk.green(name)} created!`); 57 | console.log(`use: cd ${chalk.green(name)} and ${useYarn ? chalk.green('yarn start') : chalk.green('npm start')}`); 58 | console.log(''); 59 | }); 60 | } 61 | 62 | const validationAppName = (appName: string): void => { 63 | const validateProjectName = require('validate-npm-package-name'); 64 | let results = validateProjectName(appName); 65 | let dependency = ['webpack', 'webpack-cli', 'webpack-dev-server']; 66 | 67 | if (!results.validForNewPackages) { 68 | console.error(`Could not create project named: ${chalk.red(appName)}`); 69 | console.log('please correct:'); 70 | 71 | results.errors && results.errors.forEach(error => { 72 | console.log(` ${chalk.red('*')} ${error}`); 73 | }); 74 | 75 | results.warnings && results.warnings.forEach(error => { 76 | console.log(` ${chalk.red('*')} ${error}`); 77 | }); 78 | process.exit(); 79 | } 80 | 81 | if (dependency.indexOf(appName) !== -1) { 82 | console.error(`Could not create project named ${chalk.red(appName)}.`); 83 | console.error('Please change the name of the application, a dependency has the same name.'); 84 | process.exit(); 85 | } 86 | } 87 | 88 | const copyPackage = (name: string, templateDir: string, root: string): void => { 89 | const templatepackage = join(templateDir, 'package.json'); 90 | let packageJson = JSON.parse(readFileSync(templatepackage, 'utf-8')); 91 | packageJson.name = name; 92 | writeFileSync(join(root, 'package.json'), JSON.stringify(packageJson, null, 2)); 93 | } -------------------------------------------------------------------------------- /src/errorApp.ts: -------------------------------------------------------------------------------- 1 | import chalk from 'chalk'; 2 | 3 | export function errorApp(name) { 4 | console.error('Please specify the project directory:'); 5 | console.log(` ${chalk.cyan(name)} ${chalk.green('')} -t `); 6 | console.log(''); 7 | console.log('For example:'); 8 | console.log(` ${chalk.cyan(name)} ${chalk.green('my-webpack-app')}`); 9 | process.exit(1); 10 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import * as inquirer from 'inquirer'; 4 | import { configTargets } from './configTargets'; 5 | import { createApp } from './createApp'; 6 | 7 | const configKeys = Object.keys(configTargets); 8 | 9 | inquirer 10 | .prompt([ 11 | { 12 | type: 'list', 13 | name: 'target', 14 | message: 'Which Webpack configuration?', 15 | choices: configKeys.map(key => configTargets[key].message) 16 | }, 17 | { 18 | type: 'input', 19 | name: 'name', 20 | message: 'Name your project' 21 | } 22 | ]) 23 | .then(response => { 24 | for (var i = 0; i < configKeys.length; ++i) { 25 | if (configTargets[configKeys[i]].message === response['target']) { 26 | response['target'] = configKeys[i]; 27 | break; 28 | } 29 | } 30 | createApp(response); 31 | }); 32 | -------------------------------------------------------------------------------- /templates/config/git-ignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /templates/config/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | entry: './src/entry.js', 5 | output: { 6 | path: path.resolve(__dirname, 'dist'), 7 | filename: 'bundle.js' 8 | }, 9 | resolve: { 10 | extensions: ['.js'], 11 | }, 12 | devtool: 'source-map', 13 | plugins: [ 14 | new HtmlWebpackPlugin() 15 | ] 16 | } -------------------------------------------------------------------------------- /templates/webpack-alone/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cwa", 3 | "version": "0.1.0", 4 | "scripts":{ 5 | "start": "webpack-cli serve --mode development --open", 6 | "build": "webpack --mode production" 7 | } 8 | } -------------------------------------------------------------------------------- /templates/webpack-alone/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Welcome to Webpack 6 | 7 | 8 | To start edit './src/entry.js' 9 | 10 | -------------------------------------------------------------------------------- /templates/webpack-alone/src/entry.js: -------------------------------------------------------------------------------- 1 | console.log("entry app!!"); -------------------------------------------------------------------------------- /templates/webpack-alone/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | 4 | module.exports = { 5 | entry: './src/entry.js', 6 | output: { 7 | path: path.resolve(__dirname, 'dist'), 8 | filename: 'bundle.js' 9 | }, 10 | resolve: { 11 | extensions: ['.js'], 12 | }, 13 | devtool: 'source-map', 14 | plugins: [ 15 | new HtmlWebpackPlugin({ 16 | template: path.join(__dirname, 'public/index.html') 17 | }) 18 | ] 19 | } -------------------------------------------------------------------------------- /templates/webpack-babel/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cwa", 3 | "version": "0.1.0", 4 | "scripts":{ 5 | "start": "webpack-cli serve --mode development --open", 6 | "build": "webpack --mode production" 7 | } 8 | } -------------------------------------------------------------------------------- /templates/webpack-babel/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Welcome to Webpack 6 | 7 | 8 | To start edit './src/entry.js' 9 | 10 | -------------------------------------------------------------------------------- /templates/webpack-babel/src/entry.js: -------------------------------------------------------------------------------- 1 | console.log("entry app!!"); -------------------------------------------------------------------------------- /templates/webpack-babel/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | 4 | module.exports = { 5 | entry: './src/entry.js', 6 | output: { 7 | path: path.resolve(__dirname, 'dist'), 8 | filename: 'bundle.js', 9 | }, 10 | devtool: 'source-map', 11 | module: { 12 | rules: [ 13 | { 14 | test: /\.js$/, 15 | exclude: /node_modules/, 16 | use: { 17 | loader: 'babel-loader', 18 | options: { 19 | presets: ['@babel/preset-env'], 20 | }, 21 | }, 22 | }, 23 | ], 24 | }, 25 | plugins: [ 26 | new HtmlWebpackPlugin({ 27 | template: path.join(__dirname, 'public/index.html') 28 | }) 29 | ], 30 | }; 31 | -------------------------------------------------------------------------------- /templates/webpack-react-ts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cwa", 3 | "version": "0.1.0", 4 | "scripts":{ 5 | "start": "webpack-cli serve --mode development --open", 6 | "build": "webpack --mode production" 7 | } 8 | } -------------------------------------------------------------------------------- /templates/webpack-react-ts/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Welcome to Webpack 6 | 7 | 8 |
9 | To start edit './src/entry.tsx' 10 | 11 | -------------------------------------------------------------------------------- /templates/webpack-react-ts/src/entry.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import * as ReactDOM from 'react-dom'; 3 | 4 | const App = () =>

Hello React with Typescript

; 5 | 6 | ReactDOM.render(, document.getElementById('root')); -------------------------------------------------------------------------------- /templates/webpack-react-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "jsx": "react" 5 | }, 6 | "exclude": [ 7 | "node_modules" 8 | ] 9 | } -------------------------------------------------------------------------------- /templates/webpack-react-ts/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | 4 | module.exports = { 5 | entry: './src/entry.tsx', 6 | output: { 7 | path: path.resolve(__dirname, 'dist'), 8 | filename: 'bundle.js' 9 | }, 10 | resolve: { 11 | extensions: ['.js', '.ts', '.tsx'], 12 | }, 13 | devtool: 'source-map', 14 | module: { 15 | rules: [ 16 | { 17 | test: /\.tsx?$/, 18 | exclude: /node_modules/, 19 | loader: 'ts-loader' 20 | } 21 | ] 22 | }, 23 | plugins: [ 24 | new HtmlWebpackPlugin({ 25 | template: path.join(__dirname, 'public/index.html') 26 | }) 27 | ] 28 | } -------------------------------------------------------------------------------- /templates/webpack-react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cwa", 3 | "version": "0.1.0", 4 | "scripts":{ 5 | "start": "webpack-cli serve --mode development --open", 6 | "build": "webpack --mode production" 7 | } 8 | } -------------------------------------------------------------------------------- /templates/webpack-react/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Welcome to Webpack 6 | 7 | 8 |
9 | To start edit './src/entry.js' 10 | 11 | -------------------------------------------------------------------------------- /templates/webpack-react/src/entry.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | const App = ()=>

Hello React

; 5 | 6 | ReactDOM.render(, document.getElementById('root')); -------------------------------------------------------------------------------- /templates/webpack-react/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | 4 | module.exports = { 5 | entry: './src/entry.js', 6 | output: { 7 | path: path.resolve(__dirname, 'dist'), 8 | filename: 'bundle.js' 9 | }, 10 | resolve: { 11 | extensions: ['.js', '.jsx'], 12 | }, 13 | devtool: 'source-map', 14 | module: { 15 | rules: [ 16 | { 17 | test: /\.jsx?$/, 18 | exclude: /node_modules/, 19 | use: { 20 | loader: 'babel-loader', 21 | options: { 22 | presets: ['@babel/preset-env', '@babel/preset-react'] 23 | } 24 | } 25 | } 26 | ] 27 | }, 28 | plugins: [ 29 | new HtmlWebpackPlugin({ 30 | template: path.join(__dirname, 'public/index.html') 31 | }) 32 | ] 33 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es5", 5 | "outDir": "./dist" 6 | }, 7 | "include": [ 8 | "src/**/*" 9 | ], 10 | "exclude": [ 11 | "./node_modules" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/node@^8.0.20": 6 | version "8.0.20" 7 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.20.tgz#65c7375255c24b184c215a5d0b63247c32f01c91" 8 | 9 | ansi-escapes@^3.2.0: 10 | version "3.2.0" 11 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 12 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 13 | 14 | ansi-regex@^3.0.0: 15 | version "3.0.0" 16 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 17 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 18 | 19 | ansi-regex@^4.1.0: 20 | version "4.1.0" 21 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 22 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 23 | 24 | ansi-styles@^3.1.0: 25 | version "3.2.0" 26 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 27 | dependencies: 28 | color-convert "^1.9.0" 29 | 30 | ansi-styles@^3.2.1: 31 | version "3.2.1" 32 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 33 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 34 | dependencies: 35 | color-convert "^1.9.0" 36 | 37 | builtins@^1.0.3: 38 | version "1.0.3" 39 | resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" 40 | 41 | chalk@^2.1.0: 42 | version "2.1.0" 43 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" 44 | dependencies: 45 | ansi-styles "^3.1.0" 46 | escape-string-regexp "^1.0.5" 47 | supports-color "^4.0.0" 48 | 49 | chalk@^2.4.2: 50 | version "2.4.2" 51 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 52 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 53 | dependencies: 54 | ansi-styles "^3.2.1" 55 | escape-string-regexp "^1.0.5" 56 | supports-color "^5.3.0" 57 | 58 | chardet@^0.7.0: 59 | version "0.7.0" 60 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 61 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 62 | 63 | cli-cursor@^2.1.0: 64 | version "2.1.0" 65 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 66 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 67 | dependencies: 68 | restore-cursor "^2.0.0" 69 | 70 | cli-width@^2.0.0: 71 | version "2.2.1" 72 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" 73 | integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== 74 | 75 | color-convert@^1.9.0: 76 | version "1.9.0" 77 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 78 | dependencies: 79 | color-name "^1.1.1" 80 | 81 | color-name@^1.1.1: 82 | version "1.1.3" 83 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 84 | 85 | commander@^2.11.0: 86 | version "2.11.0" 87 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" 88 | 89 | escape-string-regexp@^1.0.5: 90 | version "1.0.5" 91 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 92 | 93 | external-editor@^3.0.3: 94 | version "3.1.0" 95 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 96 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 97 | dependencies: 98 | chardet "^0.7.0" 99 | iconv-lite "^0.4.24" 100 | tmp "^0.0.33" 101 | 102 | figures@^2.0.0: 103 | version "2.0.0" 104 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 105 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 106 | dependencies: 107 | escape-string-regexp "^1.0.5" 108 | 109 | fs-extra@7.0.1: 110 | version "7.0.1" 111 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 112 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== 113 | dependencies: 114 | graceful-fs "^4.1.2" 115 | jsonfile "^4.0.0" 116 | universalify "^0.1.0" 117 | 118 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 119 | version "4.2.8" 120 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 121 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 122 | 123 | has-flag@^2.0.0: 124 | version "2.0.0" 125 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 126 | 127 | has-flag@^3.0.0: 128 | version "3.0.0" 129 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 130 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 131 | 132 | iconv-lite@^0.4.24: 133 | version "0.4.24" 134 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 135 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 136 | dependencies: 137 | safer-buffer ">= 2.1.2 < 3" 138 | 139 | inquirer@^6.0.0: 140 | version "6.5.2" 141 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" 142 | integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== 143 | dependencies: 144 | ansi-escapes "^3.2.0" 145 | chalk "^2.4.2" 146 | cli-cursor "^2.1.0" 147 | cli-width "^2.0.0" 148 | external-editor "^3.0.3" 149 | figures "^2.0.0" 150 | lodash "^4.17.12" 151 | mute-stream "0.0.7" 152 | run-async "^2.2.0" 153 | rxjs "^6.4.0" 154 | string-width "^2.1.0" 155 | strip-ansi "^5.1.0" 156 | through "^2.3.6" 157 | 158 | is-fullwidth-code-point@^2.0.0: 159 | version "2.0.0" 160 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 161 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 162 | 163 | jsonfile@^4.0.0: 164 | version "4.0.0" 165 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 166 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 167 | optionalDependencies: 168 | graceful-fs "^4.1.6" 169 | 170 | lodash@^4.17.12: 171 | version "4.17.21" 172 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 173 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 174 | 175 | mimic-fn@^1.0.0: 176 | version "1.2.0" 177 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 178 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 179 | 180 | mute-stream@0.0.7: 181 | version "0.0.7" 182 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 183 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 184 | 185 | onetime@^2.0.0: 186 | version "2.0.1" 187 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 188 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 189 | dependencies: 190 | mimic-fn "^1.0.0" 191 | 192 | os-tmpdir@~1.0.2: 193 | version "1.0.2" 194 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 195 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 196 | 197 | restore-cursor@^2.0.0: 198 | version "2.0.0" 199 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 200 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 201 | dependencies: 202 | onetime "^2.0.0" 203 | signal-exit "^3.0.2" 204 | 205 | run-async@^2.2.0: 206 | version "2.4.1" 207 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 208 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 209 | 210 | rxjs@^6.4.0: 211 | version "6.6.7" 212 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" 213 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 214 | dependencies: 215 | tslib "^1.9.0" 216 | 217 | "safer-buffer@>= 2.1.2 < 3": 218 | version "2.1.2" 219 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 220 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 221 | 222 | signal-exit@^3.0.2: 223 | version "3.0.6" 224 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" 225 | integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== 226 | 227 | string-width@^2.1.0: 228 | version "2.1.1" 229 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 230 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 231 | dependencies: 232 | is-fullwidth-code-point "^2.0.0" 233 | strip-ansi "^4.0.0" 234 | 235 | strip-ansi@^4.0.0: 236 | version "4.0.0" 237 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 238 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 239 | dependencies: 240 | ansi-regex "^3.0.0" 241 | 242 | strip-ansi@^5.1.0: 243 | version "5.2.0" 244 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 245 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 246 | dependencies: 247 | ansi-regex "^4.1.0" 248 | 249 | supports-color@^4.0.0: 250 | version "4.2.1" 251 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" 252 | dependencies: 253 | has-flag "^2.0.0" 254 | 255 | supports-color@^5.3.0: 256 | version "5.5.0" 257 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 258 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 259 | dependencies: 260 | has-flag "^3.0.0" 261 | 262 | through@^2.3.6: 263 | version "2.3.8" 264 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 265 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 266 | 267 | tmp@^0.0.33: 268 | version "0.0.33" 269 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 270 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 271 | dependencies: 272 | os-tmpdir "~1.0.2" 273 | 274 | tslib@^1.9.0: 275 | version "1.14.1" 276 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 277 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 278 | 279 | typescript@^2.4.2: 280 | version "2.4.2" 281 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844" 282 | 283 | universalify@^0.1.0: 284 | version "0.1.2" 285 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 286 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 287 | 288 | validate-npm-package-name@^3.0.0: 289 | version "3.0.0" 290 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" 291 | dependencies: 292 | builtins "^1.0.3" 293 | --------------------------------------------------------------------------------