├── .gitignore ├── .npmignore ├── README.md ├── bin ├── xr ├── xr-add ├── xr-delete ├── xr-init └── xr-list ├── package-lock.json ├── package.json └── template.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # xr-cli 2 | A simple CLI for creating your project. 3 | 4 | # Installation 5 | ``` 6 | npm install xr-cli -g 7 | ``` 8 | 9 | # Usage 10 | Open your terminal and type `xr` or `xr -h` , you'll see the help infomation below: 11 | ``` 12 | Usage: xr 13 | 14 | 15 | Commands: 16 | 17 | add Add a new template 18 | delete Delete a template 19 | list List all the templates 20 | init Generate a new project 21 | 22 | Options: 23 | 24 | -h, --help output usage information 25 | -V, --version output the version number 26 | ``` 27 | 28 | > Note that if you are using `MacOS`, `sudo` was required while using commands `add` and `delete`. 29 | 30 | # License 31 | MIT. 32 | -------------------------------------------------------------------------------- /bin/xr: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const program = require('commander') 3 | 4 | // 定义当前版本 5 | // 定义使用方法 6 | // 编写四个指令 7 | program 8 | .version(require('../package').version) 9 | .usage(' [options]') 10 | .command('add', 'add a new template') 11 | .command('delete', 'delete a template') 12 | .command('list', 'list all the templates') 13 | .command('init', 'generate a new project from a template') 14 | 15 | // 解析命令行参数 16 | program.parse(process.argv) -------------------------------------------------------------------------------- /bin/xr-add: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // 交互式命令行 3 | const inquirer = require('inquirer') 4 | // 修改控制台字符串的样式 5 | const chalk = require('chalk') 6 | // node 内置文件模块 7 | const fs = require('fs') 8 | // 读取根目录下的 template.json 9 | const tplObj = require(`${__dirname}/../template`) 10 | 11 | // 自定义交互式命令行的问题及简单的校验 12 | let question = [ 13 | { 14 | name: "name", 15 | type: 'input', 16 | message: "请输入模板名称", 17 | validate (val) { 18 | if (val === '') { 19 | return 'Name is required!' 20 | } else if (tplObj[val]) { 21 | return 'Template has already existed!' 22 | } else { 23 | return true 24 | } 25 | } 26 | }, 27 | { 28 | name: "url", 29 | type: 'input', 30 | message: "请输入模板地址", 31 | validate (val) { 32 | if (val === '') return 'The url is required!' 33 | return true 34 | } 35 | } 36 | ] 37 | 38 | inquirer 39 | .prompt(question).then(answers => { 40 | // answers 就是用户输入的内容,是个对象 41 | let { name, url } = answers; 42 | // 过滤 unicode 字符 43 | tplObj[name] = url.replace(/[\u0000-\u0019]/g, '') 44 | // 把模板信息写入 template.json 文件中 45 | fs.writeFile(`${__dirname}/../template.json`, JSON.stringify(tplObj), 'utf-8', err => { 46 | if (err) console.log(err) 47 | console.log('\n') 48 | console.log(chalk.green('Added successfully!\n')) 49 | console.log(chalk.grey('The latest template list is: \n')) 50 | console.log(tplObj) 51 | console.log('\n') 52 | }) 53 | }) 54 | -------------------------------------------------------------------------------- /bin/xr-delete: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const inquirer = require('inquirer') 4 | const chalk = require('chalk') 5 | const fs = require('fs') 6 | const tplObj = require(`${__dirname}/../template`) 7 | 8 | let question = [ 9 | { 10 | name: "name", 11 | message: "请输入要删除的模板名称", 12 | validate (val) { 13 | if (val === '') { 14 | return 'Name is required!' 15 | } else if (!tplObj[val]) { 16 | return 'Template does not exist!' 17 | } else { 18 | return true 19 | } 20 | } 21 | } 22 | ] 23 | 24 | inquirer 25 | .prompt(question).then(answers => { 26 | // answers 就是用户输入的内容 27 | let { name } = answers; 28 | delete tplObj[name] 29 | // 更新 template.json 文件 30 | fs.writeFile(`${__dirname}/../template.json`, JSON.stringify(tplObj), 'utf-8', err => { 31 | if (err) console.log(err) 32 | console.log('\n') 33 | console.log(chalk.green('Deleted successfully!\n')) 34 | console.log(chalk.grey('The latest template list is: \n')) 35 | console.log(tplObj) 36 | console.log('\n') 37 | }) 38 | }) 39 | -------------------------------------------------------------------------------- /bin/xr-init: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const program = require('commander') 4 | const chalk = require('chalk') 5 | const ora = require('ora') 6 | const download = require('download-git-repo') 7 | const tplObj = require(`${__dirname}/../template`) 8 | 9 | program 10 | .usage(' [project-name]') 11 | program.parse(process.argv) 12 | // 当没有输入参数的时候给个提示 13 | if (program.args.length < 1) return program.help() 14 | 15 | // 好比 vue init webpack project-name 的命令一样,第一个参数是 webpack,第二个参数是 project-name 16 | let templateName = program.args[0] 17 | let projectName = program.args[1] 18 | 19 | if (!tplObj[templateName]) { 20 | console.log(chalk.red('\n Template does not exit! \n ')) 21 | return 22 | } 23 | if (!projectName) { 24 | console.log(chalk.red('\n Project should not be empty! \n ')) 25 | return 26 | } 27 | 28 | url = tplObj[templateName] 29 | 30 | console.log(chalk.white('\n Start generating... \n')) 31 | const spinner = ora("Downloading..."); 32 | spinner.start(); 33 | 34 | download ( 35 | url, 36 | projectName, 37 | err => { 38 | if (err) { 39 | spinner.fail(); 40 | console.log(chalk.red(`Generation failed. ${err}`)) 41 | return 42 | } 43 | 44 | spinner.succeed(); 45 | console.log(chalk.green('\n Generation completed!')) 46 | console.log('\n To get started') 47 | console.log(`\n cd ${projectName} \n`) 48 | } 49 | ) 50 | -------------------------------------------------------------------------------- /bin/xr-list: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const tplObj = require(`${__dirname}/../template`) 4 | console.log(tplObj) 5 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xr-cli", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-escapes": { 8 | "version": "3.2.0", 9 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 10 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" 11 | }, 12 | "ansi-regex": { 13 | "version": "3.0.0", 14 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 15 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 16 | }, 17 | "ansi-styles": { 18 | "version": "3.2.1", 19 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 20 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 21 | "requires": { 22 | "color-convert": "^1.9.0" 23 | } 24 | }, 25 | "balanced-match": { 26 | "version": "1.0.0", 27 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 28 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 29 | }, 30 | "base64-js": { 31 | "version": "1.3.0", 32 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", 33 | "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" 34 | }, 35 | "bl": { 36 | "version": "1.2.2", 37 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", 38 | "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", 39 | "requires": { 40 | "readable-stream": "^2.3.5", 41 | "safe-buffer": "^5.1.1" 42 | } 43 | }, 44 | "brace-expansion": { 45 | "version": "1.1.11", 46 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 47 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 48 | "requires": { 49 | "balanced-match": "^1.0.0", 50 | "concat-map": "0.0.1" 51 | } 52 | }, 53 | "buffer": { 54 | "version": "5.2.1", 55 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", 56 | "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", 57 | "requires": { 58 | "base64-js": "^1.0.2", 59 | "ieee754": "^1.1.4" 60 | } 61 | }, 62 | "buffer-alloc": { 63 | "version": "1.2.0", 64 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 65 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 66 | "requires": { 67 | "buffer-alloc-unsafe": "^1.1.0", 68 | "buffer-fill": "^1.0.0" 69 | } 70 | }, 71 | "buffer-alloc-unsafe": { 72 | "version": "1.1.0", 73 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 74 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 75 | }, 76 | "buffer-crc32": { 77 | "version": "0.2.13", 78 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 79 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 80 | }, 81 | "buffer-fill": { 82 | "version": "1.0.0", 83 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 84 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" 85 | }, 86 | "capture-stack-trace": { 87 | "version": "1.0.1", 88 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", 89 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" 90 | }, 91 | "caw": { 92 | "version": "2.0.1", 93 | "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", 94 | "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", 95 | "requires": { 96 | "get-proxy": "^2.0.0", 97 | "isurl": "^1.0.0-alpha5", 98 | "tunnel-agent": "^0.6.0", 99 | "url-to-options": "^1.0.1" 100 | } 101 | }, 102 | "chalk": { 103 | "version": "2.4.2", 104 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 105 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 106 | "requires": { 107 | "ansi-styles": "^3.2.1", 108 | "escape-string-regexp": "^1.0.5", 109 | "supports-color": "^5.3.0" 110 | } 111 | }, 112 | "chardet": { 113 | "version": "0.7.0", 114 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 115 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 116 | }, 117 | "cli-cursor": { 118 | "version": "2.1.0", 119 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 120 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 121 | "requires": { 122 | "restore-cursor": "^2.0.0" 123 | } 124 | }, 125 | "cli-spinners": { 126 | "version": "2.0.0", 127 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.0.0.tgz", 128 | "integrity": "sha512-yiEBmhaKPPeBj7wWm4GEdtPZK940p9pl3EANIrnJ3JnvWyrPjcFcsEq6qRUuQ7fzB0+Y82ld3p6B34xo95foWw==" 129 | }, 130 | "cli-width": { 131 | "version": "2.2.0", 132 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 133 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" 134 | }, 135 | "clone": { 136 | "version": "1.0.4", 137 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 138 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" 139 | }, 140 | "color-convert": { 141 | "version": "1.9.3", 142 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 143 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 144 | "requires": { 145 | "color-name": "1.1.3" 146 | } 147 | }, 148 | "color-name": { 149 | "version": "1.1.3", 150 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 151 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 152 | }, 153 | "commander": { 154 | "version": "2.19.0", 155 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", 156 | "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" 157 | }, 158 | "concat-map": { 159 | "version": "0.0.1", 160 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 161 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 162 | }, 163 | "config-chain": { 164 | "version": "1.1.12", 165 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", 166 | "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", 167 | "requires": { 168 | "ini": "^1.3.4", 169 | "proto-list": "~1.2.1" 170 | } 171 | }, 172 | "core-util-is": { 173 | "version": "1.0.2", 174 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 175 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 176 | }, 177 | "create-error-class": { 178 | "version": "3.0.2", 179 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 180 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 181 | "requires": { 182 | "capture-stack-trace": "^1.0.0" 183 | } 184 | }, 185 | "decompress": { 186 | "version": "4.2.0", 187 | "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", 188 | "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", 189 | "requires": { 190 | "decompress-tar": "^4.0.0", 191 | "decompress-tarbz2": "^4.0.0", 192 | "decompress-targz": "^4.0.0", 193 | "decompress-unzip": "^4.0.1", 194 | "graceful-fs": "^4.1.10", 195 | "make-dir": "^1.0.0", 196 | "pify": "^2.3.0", 197 | "strip-dirs": "^2.0.0" 198 | } 199 | }, 200 | "decompress-tar": { 201 | "version": "4.1.1", 202 | "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", 203 | "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", 204 | "requires": { 205 | "file-type": "^5.2.0", 206 | "is-stream": "^1.1.0", 207 | "tar-stream": "^1.5.2" 208 | } 209 | }, 210 | "decompress-tarbz2": { 211 | "version": "4.1.1", 212 | "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", 213 | "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", 214 | "requires": { 215 | "decompress-tar": "^4.1.0", 216 | "file-type": "^6.1.0", 217 | "is-stream": "^1.1.0", 218 | "seek-bzip": "^1.0.5", 219 | "unbzip2-stream": "^1.0.9" 220 | }, 221 | "dependencies": { 222 | "file-type": { 223 | "version": "6.2.0", 224 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", 225 | "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" 226 | } 227 | } 228 | }, 229 | "decompress-targz": { 230 | "version": "4.1.1", 231 | "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", 232 | "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", 233 | "requires": { 234 | "decompress-tar": "^4.1.1", 235 | "file-type": "^5.2.0", 236 | "is-stream": "^1.1.0" 237 | } 238 | }, 239 | "decompress-unzip": { 240 | "version": "4.0.1", 241 | "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", 242 | "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", 243 | "requires": { 244 | "file-type": "^3.8.0", 245 | "get-stream": "^2.2.0", 246 | "pify": "^2.3.0", 247 | "yauzl": "^2.4.2" 248 | }, 249 | "dependencies": { 250 | "file-type": { 251 | "version": "3.9.0", 252 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 253 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" 254 | }, 255 | "get-stream": { 256 | "version": "2.3.1", 257 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", 258 | "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", 259 | "requires": { 260 | "object-assign": "^4.0.1", 261 | "pinkie-promise": "^2.0.0" 262 | } 263 | } 264 | } 265 | }, 266 | "defaults": { 267 | "version": "1.0.3", 268 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 269 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 270 | "requires": { 271 | "clone": "^1.0.2" 272 | } 273 | }, 274 | "download": { 275 | "version": "5.0.3", 276 | "resolved": "https://registry.npmjs.org/download/-/download-5.0.3.tgz", 277 | "integrity": "sha1-Y1N/l3+ZJmow64oqL70fILgAD3o=", 278 | "requires": { 279 | "caw": "^2.0.0", 280 | "decompress": "^4.0.0", 281 | "filenamify": "^2.0.0", 282 | "get-stream": "^3.0.0", 283 | "got": "^6.3.0", 284 | "mkdirp": "^0.5.1", 285 | "pify": "^2.3.0" 286 | } 287 | }, 288 | "download-git-repo": { 289 | "version": "1.1.0", 290 | "resolved": "https://registry.npmjs.org/download-git-repo/-/download-git-repo-1.1.0.tgz", 291 | "integrity": "sha512-yXcCvhkPKmq5M2cQXss6Qbig+LZnzRIT40XCYm/QCRnJaPG867StB1qnsBLxOGrPH1YEIRWW2gJq7LLMyw+NmA==", 292 | "requires": { 293 | "download": "^5.0.3", 294 | "git-clone": "^0.1.0", 295 | "rimraf": "^2.6.1" 296 | } 297 | }, 298 | "duplexer3": { 299 | "version": "0.1.4", 300 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 301 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" 302 | }, 303 | "end-of-stream": { 304 | "version": "1.4.1", 305 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 306 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 307 | "requires": { 308 | "once": "^1.4.0" 309 | } 310 | }, 311 | "escape-string-regexp": { 312 | "version": "1.0.5", 313 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 314 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 315 | }, 316 | "external-editor": { 317 | "version": "3.0.3", 318 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", 319 | "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", 320 | "requires": { 321 | "chardet": "^0.7.0", 322 | "iconv-lite": "^0.4.24", 323 | "tmp": "^0.0.33" 324 | } 325 | }, 326 | "fd-slicer": { 327 | "version": "1.1.0", 328 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 329 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 330 | "requires": { 331 | "pend": "~1.2.0" 332 | } 333 | }, 334 | "figures": { 335 | "version": "2.0.0", 336 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 337 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 338 | "requires": { 339 | "escape-string-regexp": "^1.0.5" 340 | } 341 | }, 342 | "file-type": { 343 | "version": "5.2.0", 344 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", 345 | "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" 346 | }, 347 | "filename-reserved-regex": { 348 | "version": "2.0.0", 349 | "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", 350 | "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" 351 | }, 352 | "filenamify": { 353 | "version": "2.1.0", 354 | "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", 355 | "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", 356 | "requires": { 357 | "filename-reserved-regex": "^2.0.0", 358 | "strip-outer": "^1.0.0", 359 | "trim-repeated": "^1.0.0" 360 | } 361 | }, 362 | "fs-constants": { 363 | "version": "1.0.0", 364 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 365 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 366 | }, 367 | "fs.realpath": { 368 | "version": "1.0.0", 369 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 370 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 371 | }, 372 | "get-proxy": { 373 | "version": "2.1.0", 374 | "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", 375 | "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", 376 | "requires": { 377 | "npm-conf": "^1.1.0" 378 | } 379 | }, 380 | "get-stream": { 381 | "version": "3.0.0", 382 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 383 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" 384 | }, 385 | "git-clone": { 386 | "version": "0.1.0", 387 | "resolved": "https://registry.npmjs.org/git-clone/-/git-clone-0.1.0.tgz", 388 | "integrity": "sha1-DXYWN3gJOu9/HDAjjyqe8/B6Lrk=" 389 | }, 390 | "glob": { 391 | "version": "7.1.3", 392 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 393 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 394 | "requires": { 395 | "fs.realpath": "^1.0.0", 396 | "inflight": "^1.0.4", 397 | "inherits": "2", 398 | "minimatch": "^3.0.4", 399 | "once": "^1.3.0", 400 | "path-is-absolute": "^1.0.0" 401 | } 402 | }, 403 | "got": { 404 | "version": "6.7.1", 405 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 406 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 407 | "requires": { 408 | "create-error-class": "^3.0.0", 409 | "duplexer3": "^0.1.4", 410 | "get-stream": "^3.0.0", 411 | "is-redirect": "^1.0.0", 412 | "is-retry-allowed": "^1.0.0", 413 | "is-stream": "^1.0.0", 414 | "lowercase-keys": "^1.0.0", 415 | "safe-buffer": "^5.0.1", 416 | "timed-out": "^4.0.0", 417 | "unzip-response": "^2.0.1", 418 | "url-parse-lax": "^1.0.0" 419 | } 420 | }, 421 | "graceful-fs": { 422 | "version": "4.1.15", 423 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", 424 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" 425 | }, 426 | "graceful-readlink": { 427 | "version": "1.0.1", 428 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 429 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" 430 | }, 431 | "has-flag": { 432 | "version": "3.0.0", 433 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 434 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 435 | }, 436 | "has-symbol-support-x": { 437 | "version": "1.4.2", 438 | "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", 439 | "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" 440 | }, 441 | "has-to-string-tag-x": { 442 | "version": "1.4.1", 443 | "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", 444 | "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", 445 | "requires": { 446 | "has-symbol-support-x": "^1.4.1" 447 | } 448 | }, 449 | "iconv-lite": { 450 | "version": "0.4.24", 451 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 452 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 453 | "requires": { 454 | "safer-buffer": ">= 2.1.2 < 3" 455 | } 456 | }, 457 | "ieee754": { 458 | "version": "1.1.12", 459 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", 460 | "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" 461 | }, 462 | "inflight": { 463 | "version": "1.0.6", 464 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 465 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 466 | "requires": { 467 | "once": "^1.3.0", 468 | "wrappy": "1" 469 | } 470 | }, 471 | "inherits": { 472 | "version": "2.0.3", 473 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 474 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 475 | }, 476 | "ini": { 477 | "version": "1.3.5", 478 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 479 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 480 | }, 481 | "inquirer": { 482 | "version": "6.2.2", 483 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", 484 | "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", 485 | "requires": { 486 | "ansi-escapes": "^3.2.0", 487 | "chalk": "^2.4.2", 488 | "cli-cursor": "^2.1.0", 489 | "cli-width": "^2.0.0", 490 | "external-editor": "^3.0.3", 491 | "figures": "^2.0.0", 492 | "lodash": "^4.17.11", 493 | "mute-stream": "0.0.7", 494 | "run-async": "^2.2.0", 495 | "rxjs": "^6.4.0", 496 | "string-width": "^2.1.0", 497 | "strip-ansi": "^5.0.0", 498 | "through": "^2.3.6" 499 | } 500 | }, 501 | "is-fullwidth-code-point": { 502 | "version": "2.0.0", 503 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 504 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 505 | }, 506 | "is-natural-number": { 507 | "version": "4.0.1", 508 | "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", 509 | "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" 510 | }, 511 | "is-object": { 512 | "version": "1.0.1", 513 | "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", 514 | "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" 515 | }, 516 | "is-promise": { 517 | "version": "2.1.0", 518 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 519 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 520 | }, 521 | "is-redirect": { 522 | "version": "1.0.0", 523 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 524 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" 525 | }, 526 | "is-retry-allowed": { 527 | "version": "1.1.0", 528 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 529 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" 530 | }, 531 | "is-stream": { 532 | "version": "1.1.0", 533 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 534 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 535 | }, 536 | "isarray": { 537 | "version": "1.0.0", 538 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 539 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 540 | }, 541 | "isurl": { 542 | "version": "1.0.0", 543 | "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", 544 | "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", 545 | "requires": { 546 | "has-to-string-tag-x": "^1.2.0", 547 | "is-object": "^1.0.1" 548 | } 549 | }, 550 | "lodash": { 551 | "version": "4.17.11", 552 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 553 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 554 | }, 555 | "log-symbols": { 556 | "version": "2.2.0", 557 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 558 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 559 | "requires": { 560 | "chalk": "^2.0.1" 561 | } 562 | }, 563 | "lowercase-keys": { 564 | "version": "1.0.1", 565 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 566 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" 567 | }, 568 | "make-dir": { 569 | "version": "1.3.0", 570 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 571 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 572 | "requires": { 573 | "pify": "^3.0.0" 574 | }, 575 | "dependencies": { 576 | "pify": { 577 | "version": "3.0.0", 578 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 579 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 580 | } 581 | } 582 | }, 583 | "mimic-fn": { 584 | "version": "1.2.0", 585 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 586 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 587 | }, 588 | "minimatch": { 589 | "version": "3.0.4", 590 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 591 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 592 | "requires": { 593 | "brace-expansion": "^1.1.7" 594 | } 595 | }, 596 | "minimist": { 597 | "version": "0.0.8", 598 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 599 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 600 | }, 601 | "mkdirp": { 602 | "version": "0.5.1", 603 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 604 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 605 | "requires": { 606 | "minimist": "0.0.8" 607 | } 608 | }, 609 | "mute-stream": { 610 | "version": "0.0.7", 611 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 612 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" 613 | }, 614 | "npm-conf": { 615 | "version": "1.1.3", 616 | "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", 617 | "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", 618 | "requires": { 619 | "config-chain": "^1.1.11", 620 | "pify": "^3.0.0" 621 | }, 622 | "dependencies": { 623 | "pify": { 624 | "version": "3.0.0", 625 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 626 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 627 | } 628 | } 629 | }, 630 | "object-assign": { 631 | "version": "4.1.1", 632 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 633 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 634 | }, 635 | "once": { 636 | "version": "1.4.0", 637 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 638 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 639 | "requires": { 640 | "wrappy": "1" 641 | } 642 | }, 643 | "onetime": { 644 | "version": "2.0.1", 645 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 646 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 647 | "requires": { 648 | "mimic-fn": "^1.0.0" 649 | } 650 | }, 651 | "ora": { 652 | "version": "3.2.0", 653 | "resolved": "https://registry.npmjs.org/ora/-/ora-3.2.0.tgz", 654 | "integrity": "sha512-XHMZA5WieCbtg+tu0uPF8CjvwQdNzKCX6BVh3N6GFsEXH40mTk5dsw/ya1lBTUGJslcEFJFQ8cBhOgkkZXQtMA==", 655 | "requires": { 656 | "chalk": "^2.4.2", 657 | "cli-cursor": "^2.1.0", 658 | "cli-spinners": "^2.0.0", 659 | "log-symbols": "^2.2.0", 660 | "strip-ansi": "^5.0.0", 661 | "wcwidth": "^1.0.1" 662 | } 663 | }, 664 | "os-tmpdir": { 665 | "version": "1.0.2", 666 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 667 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 668 | }, 669 | "path-is-absolute": { 670 | "version": "1.0.1", 671 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 672 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 673 | }, 674 | "pend": { 675 | "version": "1.2.0", 676 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 677 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 678 | }, 679 | "pify": { 680 | "version": "2.3.0", 681 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 682 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" 683 | }, 684 | "pinkie": { 685 | "version": "2.0.4", 686 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 687 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" 688 | }, 689 | "pinkie-promise": { 690 | "version": "2.0.1", 691 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 692 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 693 | "requires": { 694 | "pinkie": "^2.0.0" 695 | } 696 | }, 697 | "prepend-http": { 698 | "version": "1.0.4", 699 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 700 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" 701 | }, 702 | "process-nextick-args": { 703 | "version": "2.0.0", 704 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 705 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 706 | }, 707 | "proto-list": { 708 | "version": "1.2.4", 709 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 710 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" 711 | }, 712 | "readable-stream": { 713 | "version": "2.3.6", 714 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 715 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 716 | "requires": { 717 | "core-util-is": "~1.0.0", 718 | "inherits": "~2.0.3", 719 | "isarray": "~1.0.0", 720 | "process-nextick-args": "~2.0.0", 721 | "safe-buffer": "~5.1.1", 722 | "string_decoder": "~1.1.1", 723 | "util-deprecate": "~1.0.1" 724 | } 725 | }, 726 | "restore-cursor": { 727 | "version": "2.0.0", 728 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 729 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 730 | "requires": { 731 | "onetime": "^2.0.0", 732 | "signal-exit": "^3.0.2" 733 | } 734 | }, 735 | "rimraf": { 736 | "version": "2.6.3", 737 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 738 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 739 | "requires": { 740 | "glob": "^7.1.3" 741 | } 742 | }, 743 | "run-async": { 744 | "version": "2.3.0", 745 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 746 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 747 | "requires": { 748 | "is-promise": "^2.1.0" 749 | } 750 | }, 751 | "rxjs": { 752 | "version": "6.4.0", 753 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", 754 | "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", 755 | "requires": { 756 | "tslib": "^1.9.0" 757 | } 758 | }, 759 | "safe-buffer": { 760 | "version": "5.1.2", 761 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 762 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 763 | }, 764 | "safer-buffer": { 765 | "version": "2.1.2", 766 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 767 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 768 | }, 769 | "seek-bzip": { 770 | "version": "1.0.5", 771 | "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", 772 | "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", 773 | "requires": { 774 | "commander": "~2.8.1" 775 | }, 776 | "dependencies": { 777 | "commander": { 778 | "version": "2.8.1", 779 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", 780 | "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", 781 | "requires": { 782 | "graceful-readlink": ">= 1.0.0" 783 | } 784 | } 785 | } 786 | }, 787 | "signal-exit": { 788 | "version": "3.0.2", 789 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 790 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 791 | }, 792 | "string-width": { 793 | "version": "2.1.1", 794 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 795 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 796 | "requires": { 797 | "is-fullwidth-code-point": "^2.0.0", 798 | "strip-ansi": "^4.0.0" 799 | }, 800 | "dependencies": { 801 | "strip-ansi": { 802 | "version": "4.0.0", 803 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 804 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 805 | "requires": { 806 | "ansi-regex": "^3.0.0" 807 | } 808 | } 809 | } 810 | }, 811 | "string_decoder": { 812 | "version": "1.1.1", 813 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 814 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 815 | "requires": { 816 | "safe-buffer": "~5.1.0" 817 | } 818 | }, 819 | "strip-ansi": { 820 | "version": "5.2.0", 821 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 822 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 823 | "requires": { 824 | "ansi-regex": "^4.1.0" 825 | }, 826 | "dependencies": { 827 | "ansi-regex": { 828 | "version": "4.1.0", 829 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 830 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 831 | } 832 | } 833 | }, 834 | "strip-dirs": { 835 | "version": "2.1.0", 836 | "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", 837 | "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", 838 | "requires": { 839 | "is-natural-number": "^4.0.1" 840 | } 841 | }, 842 | "strip-outer": { 843 | "version": "1.0.1", 844 | "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", 845 | "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", 846 | "requires": { 847 | "escape-string-regexp": "^1.0.2" 848 | } 849 | }, 850 | "supports-color": { 851 | "version": "5.5.0", 852 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 853 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 854 | "requires": { 855 | "has-flag": "^3.0.0" 856 | } 857 | }, 858 | "tar-stream": { 859 | "version": "1.6.2", 860 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", 861 | "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", 862 | "requires": { 863 | "bl": "^1.0.0", 864 | "buffer-alloc": "^1.2.0", 865 | "end-of-stream": "^1.0.0", 866 | "fs-constants": "^1.0.0", 867 | "readable-stream": "^2.3.0", 868 | "to-buffer": "^1.1.1", 869 | "xtend": "^4.0.0" 870 | } 871 | }, 872 | "through": { 873 | "version": "2.3.8", 874 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 875 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 876 | }, 877 | "timed-out": { 878 | "version": "4.0.1", 879 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 880 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" 881 | }, 882 | "tmp": { 883 | "version": "0.0.33", 884 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 885 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 886 | "requires": { 887 | "os-tmpdir": "~1.0.2" 888 | } 889 | }, 890 | "to-buffer": { 891 | "version": "1.1.1", 892 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 893 | "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" 894 | }, 895 | "trim-repeated": { 896 | "version": "1.0.0", 897 | "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", 898 | "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", 899 | "requires": { 900 | "escape-string-regexp": "^1.0.2" 901 | } 902 | }, 903 | "tslib": { 904 | "version": "1.9.3", 905 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 906 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" 907 | }, 908 | "tunnel-agent": { 909 | "version": "0.6.0", 910 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 911 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 912 | "requires": { 913 | "safe-buffer": "^5.0.1" 914 | } 915 | }, 916 | "unbzip2-stream": { 917 | "version": "1.3.3", 918 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", 919 | "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", 920 | "requires": { 921 | "buffer": "^5.2.1", 922 | "through": "^2.3.8" 923 | } 924 | }, 925 | "unzip-response": { 926 | "version": "2.0.1", 927 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 928 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" 929 | }, 930 | "url-parse-lax": { 931 | "version": "1.0.0", 932 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 933 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 934 | "requires": { 935 | "prepend-http": "^1.0.1" 936 | } 937 | }, 938 | "url-to-options": { 939 | "version": "1.0.1", 940 | "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", 941 | "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" 942 | }, 943 | "util-deprecate": { 944 | "version": "1.0.2", 945 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 946 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 947 | }, 948 | "wcwidth": { 949 | "version": "1.0.1", 950 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 951 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 952 | "requires": { 953 | "defaults": "^1.0.3" 954 | } 955 | }, 956 | "wrappy": { 957 | "version": "1.0.2", 958 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 959 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 960 | }, 961 | "xtend": { 962 | "version": "4.0.1", 963 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 964 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 965 | }, 966 | "yauzl": { 967 | "version": "2.10.0", 968 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 969 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 970 | "requires": { 971 | "buffer-crc32": "~0.2.3", 972 | "fd-slicer": "~1.1.0" 973 | } 974 | } 975 | } 976 | } 977 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "bin": { 3 | "xr": "bin/xr", 4 | "xr-add": "bin/xr-add", 5 | "xr-delete": "bin/xr-delete", 6 | "xr-list": "bin/xr-list", 7 | "xr-init": "bin/xr-init" 8 | }, 9 | "name": "xr-cli", 10 | "version": "1.0.0", 11 | "description": "A simple CLI for creating your project", 12 | "main": "index.js", 13 | "scripts": { 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "author": "", 17 | "license": "MIT", 18 | "dependencies": { 19 | "chalk": "^2.4.2", 20 | "commander": "^2.19.0", 21 | "download-git-repo": "^1.1.0", 22 | "inquirer": "^6.2.2", 23 | "ora": "^3.2.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /template.json: -------------------------------------------------------------------------------- 1 | {"simple":"lgq627628/easy-tpl"} --------------------------------------------------------------------------------