commit b5c7e47387aaf301092456c571a435544afa70b3 Author: lkh Date: Sun Oct 10 14:48:08 2021 +0800 feat: init tis-cli diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..835fd9e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.test \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..30fcd1e --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Tis-Cli 快速生成项目模板工具 + +提供生成模板: + +- 框架模板 + +- 应用模板 + +- 组件库模板 \ No newline at end of file diff --git a/bin/command/create.js b/bin/command/create.js new file mode 100644 index 0000000..c184c36 --- /dev/null +++ b/bin/command/create.js @@ -0,0 +1,4 @@ +module.exports = async function(projectName, templateType) { + console.log('创建项目:', projectName); + console.log('类型:', templateType); +} \ No newline at end of file diff --git a/bin/index.js b/bin/index.js new file mode 100644 index 0000000..7f59522 --- /dev/null +++ b/bin/index.js @@ -0,0 +1,51 @@ +#!/usr/bin/env node + +const { Command } = require('commander'); +const Prompt = require('inquirer'); +const Create = require('./command/create'); +const program = new Command(); + + + +const handleExit = () => { + process.exit(); +}; + +const handleError = (e) => { + console.error('ERROR! 执行过程中出现错误'); + console.error(e); + console.log('退出执行...'); + process.exit(1); +}; + +process.on('SIGINT', handleExit); +process.on('uncaughtException', handleError); + +const Cli = program.command('tis-cli'); + +Cli.version(require('../package.json').version).usage(' [options]'); + +// 选项 +const templateOpts = [ + { + type: 'list', + name: 'templateType', + message: '模板类型', + choices: ['platform', 'application', 'component'] + } +]; + +// 通过模板创建项目 +Cli + .command('create ') + .description('通过选择模板类型,创建新的项目') + .action(async (projectName) => { + Prompt.prompt(templateOpts).then(result => { + console.log('选择结果:'); + console.log(JSON.stringify(result)); + // 创建 + Create(projectName, 1); + }) + }); + +Cli.parse(process.argv) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..db629a9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,373 @@ +{ + "name": "tis-cli", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://r.cnpmjs.org/ansi-escapes/download/ansi-escapes-4.3.2.tgz", + "integrity": "sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=", + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://r.cnpmjs.org/ansi-regex/download/ansi-regex-5.0.1.tgz", + "integrity": "sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://r.cnpmjs.org/ansi-styles/download/ansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "requires": { + "color-convert": "^2.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://r.cnpmjs.org/base64-js/download/base64-js-1.5.1.tgz", + "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://r.cnpmjs.org/bl/download/bl-4.1.0.tgz", + "integrity": "sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo=", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://r.cnpmjs.org/buffer/download/buffer-5.7.1.tgz", + "integrity": "sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://r.cnpmjs.org/chalk/download/chalk-4.1.2.tgz", + "integrity": "sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://r.cnpmjs.org/chardet/download/chardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://r.cnpmjs.org/cli-cursor/download/cli-cursor-3.1.0.tgz", + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://r.cnpmjs.org/cli-spinners/download/cli-spinners-2.6.1.tgz", + "integrity": "sha1-rclU6+KBw3pjGb+kAebdJIj/tw0=" + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://r.cnpmjs.org/cli-width/download/cli-width-3.0.0.tgz", + "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=" + }, + "clone": { + "version": "1.0.4", + "resolved": "https://r.cnpmjs.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://r.cnpmjs.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://r.cnpmjs.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=" + }, + "commander": { + "version": "8.2.0", + "resolved": "https://r.cnpmjs.org/commander/download/commander-8.2.0.tgz", + "integrity": "sha1-N/4r3jAdh9R6U63v+LWRXbE4HKg=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://r.cnpmjs.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://r.cnpmjs.org/emoji-regex/download/emoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://r.cnpmjs.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://r.cnpmjs.org/external-editor/download/external-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://r.cnpmjs.org/figures/download/figures-3.2.0.tgz", + "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://r.cnpmjs.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://r.cnpmjs.org/iconv-lite/download/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://r.cnpmjs.org/ieee754/download/ieee754-1.2.1.tgz", + "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://r.cnpmjs.org/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + }, + "inquirer": { + "version": "8.2.0", + "resolved": "https://r.cnpmjs.org/inquirer/download/inquirer-8.2.0.tgz", + "integrity": "sha1-9E8AjdNEu/xLMAMfRdmE4DSjrDo=", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://r.cnpmjs.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://r.cnpmjs.org/is-interactive/download/is-interactive-1.0.0.tgz", + "integrity": "sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://r.cnpmjs.org/is-unicode-supported/download/is-unicode-supported-0.1.0.tgz", + "integrity": "sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc=" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://r.cnpmjs.org/lodash/download/lodash-4.17.21.tgz", + "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://r.cnpmjs.org/log-symbols/download/log-symbols-4.1.0.tgz", + "integrity": "sha1-P727lbRoOsn8eFER55LlWNSr1QM=", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://r.cnpmjs.org/mimic-fn/download/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://r.cnpmjs.org/mute-stream/download/mute-stream-0.0.8.tgz", + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://r.cnpmjs.org/onetime/download/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://r.cnpmjs.org/ora/download/ora-5.4.1.tgz", + "integrity": "sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg=", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://r.cnpmjs.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://r.cnpmjs.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://r.cnpmjs.org/restore-cursor/download/restore-cursor-3.1.0.tgz", + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://r.cnpmjs.org/run-async/download/run-async-2.4.1.tgz", + "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=" + }, + "rxjs": { + "version": "7.4.0", + "resolved": "https://r.cnpmjs.org/rxjs/download/rxjs-7.4.0.tgz", + "integrity": "sha1-oSpE1+6/AW9f8kQbh/KMmlHOvGg=", + "requires": { + "tslib": "~2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://r.cnpmjs.org/safe-buffer/download/safe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://r.cnpmjs.org/safer-buffer/download/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + }, + "signal-exit": { + "version": "3.0.5", + "resolved": "https://r.cnpmjs.org/signal-exit/download/signal-exit-3.0.5.tgz", + "integrity": "sha1-nj6MwMdamUcrRDIQM6dwLnc4JS8=" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://r.cnpmjs.org/string-width/download/string-width-4.2.3.tgz", + "integrity": "sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://r.cnpmjs.org/string_decoder/download/string_decoder-1.3.0.tgz", + "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://r.cnpmjs.org/strip-ansi/download/strip-ansi-6.0.1.tgz", + "integrity": "sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://r.cnpmjs.org/supports-color/download/supports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "requires": { + "has-flag": "^4.0.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://r.cnpmjs.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://r.cnpmjs.org/tmp/download/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://r.cnpmjs.org/tslib/download/tslib-2.1.0.tgz", + "integrity": "sha1-2mCGDxwuyqVwOrfTm8Bba/mIuXo=" + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://r.cnpmjs.org/type-fest/download/type-fest-0.21.3.tgz", + "integrity": "sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://r.cnpmjs.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://r.cnpmjs.org/wcwidth/download/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c4c0692 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "tis-cli", + "version": "1.0.0", + "description": "", + "main": "index.js", + "bin": { + "tis-cli": "bin/index.js" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git@git.inscloudtech.com:kelvin/tis-cli.git" + }, + "author": "", + "license": "ISC", + "dependencies": { + "commander": "^8.2.0", + "inquirer": "^8.2.0" + } +} diff --git a/templates/application/.gitkeep b/templates/application/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/templates/component/.gitkeep b/templates/component/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/templates/platform/.gitkeep b/templates/platform/.gitkeep new file mode 100644 index 0000000..e69de29