From f51e6b018ff8fb46e3110dcd665494d2afa58400 Mon Sep 17 00:00:00 2001 From: lkh Date: Sun, 10 Oct 2021 15:38:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- bin/command/create.js | 46 ++++++++++- bin/index.js | 16 +++- package-lock.json | 175 +++++++++++++++++++++++++++++++++++------- package.json | 5 +- 5 files changed, 209 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 835fd9e..4881966 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.test \ No newline at end of file +.test +node_modules \ No newline at end of file diff --git a/bin/command/create.js b/bin/command/create.js index c184c36..9c00e29 100644 --- a/bin/command/create.js +++ b/bin/command/create.js @@ -1,4 +1,48 @@ -module.exports = async function(projectName, templateType) { +const chalk = require('chalk'); +const path = require('path'); +const fs = require('fs-extra'); + +module.exports = function(projectName, templateType) { console.log('创建项目:', projectName); console.log('类型:', templateType); + /** + * 类型: + * 1 platform + * 2 application + * 3 component + */ + + console.log(chalk.white('\n 开始初始化... \n')); + + return new Promise(async (resolve, reject) => { + // 创建文件目录 + const dir = `${projectName}`; + await fs.ensureDir(dir).then(res => { + console.log('创建成功'); + console.log(res); + }).catch(err => { + console.log('创建失败'); + }); + + // 复制文件 + switch (parseInt(templateType)) { + case 1: + console.log('框架'); + console.log(__dirname); + + fs.copy(path.join(__dirname, '../../templates/platform'), projectName) + .then(() => console.log('success!')) + .catch(err => console.error(err)); + break; + case 2: + console.log('应用'); + break; + case 3: + console.log('组件库'); + break; + default: + break; + } + }); + } \ No newline at end of file diff --git a/bin/index.js b/bin/index.js index 7f59522..4fc6505 100644 --- a/bin/index.js +++ b/bin/index.js @@ -31,7 +31,17 @@ const templateOpts = [ type: 'list', name: 'templateType', message: '模板类型', - choices: ['platform', 'application', 'component'] + choices: [ + { + value: 1, name: 'platform 框架模板' + }, + { + value: 2, name: 'application 应用模板' + }, + { + value: 3, name: 'component 组件库模板' + } + ] } ]; @@ -41,10 +51,8 @@ Cli .description('通过选择模板类型,创建新的项目') .action(async (projectName) => { Prompt.prompt(templateOpts).then(result => { - console.log('选择结果:'); - console.log(JSON.stringify(result)); // 创建 - Create(projectName, 1); + Create(projectName, result.templateType); }) }); diff --git a/package-lock.json b/package-lock.json index db629a9..a224c91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,22 +31,22 @@ "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=" }, "bl": { - "version": "4.1.0", - "resolved": "https://r.cnpmjs.org/bl/download/bl-4.1.0.tgz", - "integrity": "sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo=", + "version": "5.0.0", + "resolved": "https://r.cnpmjs.org/bl/download/bl-5.0.0.tgz", + "integrity": "sha1-aSiASkHp2pA0ho4cUMqI8h9XrqI=", "requires": { - "buffer": "^5.5.0", + "buffer": "^6.0.3", "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=", + "version": "6.0.3", + "resolved": "https://r.cnpmjs.org/buffer/download/buffer-6.0.3.tgz", + "integrity": "sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY=", "requires": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, "chalk": { @@ -140,6 +140,21 @@ "escape-string-regexp": "^1.0.5" } }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://r.cnpmjs.org/fs-extra/download/fs-extra-10.0.0.tgz", + "integrity": "sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://r.cnpmjs.org/graceful-fs/download/graceful-fs-4.2.8.tgz", + "integrity": "sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo=" + }, "has-flag": { "version": "4.0.0", "resolved": "https://r.cnpmjs.org/has-flag/download/has-flag-4.0.0.tgz", @@ -182,6 +197,62 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" + }, + "dependencies": { + "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" + } + }, + "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=" + }, + "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" + } + }, + "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" + } + } } }, "is-fullwidth-code-point": { @@ -190,14 +261,23 @@ "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=" + "version": "2.0.0", + "resolved": "https://r.cnpmjs.org/is-interactive/download/is-interactive-2.0.0.tgz", + "integrity": "sha1-QMV2FFk4JtoRAK3mBZd41ZfxbpA=" }, "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=" + "version": "1.1.0", + "resolved": "https://r.cnpmjs.org/is-unicode-supported/download/is-unicode-supported-1.1.0.tgz", + "integrity": "sha1-kSe3H5+oL1LKXCDpgue+wO4x7h4=" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://r.cnpmjs.org/jsonfile/download/jsonfile-6.1.0.tgz", + "integrity": "sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } }, "lodash": { "version": "4.17.21", @@ -205,12 +285,12 @@ "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=", + "version": "5.0.0", + "resolved": "https://r.cnpmjs.org/log-symbols/download/log-symbols-5.0.0.tgz", + "integrity": "sha1-dyDTxqVsNl4fZYkWBpuhjZQQkso=", "requires": { "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "is-unicode-supported": "^1.0.0" } }, "mimic-fn": { @@ -232,19 +312,51 @@ } }, "ora": { - "version": "5.4.1", - "resolved": "https://r.cnpmjs.org/ora/download/ora-5.4.1.tgz", - "integrity": "sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg=", + "version": "6.0.1", + "resolved": "https://r.cnpmjs.org/ora/download/ora-6.0.1.tgz", + "integrity": "sha1-aMqp/WxIWkDW9GxQo5QPo9+Zx/M=", "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", + "bl": "^5.0.0", + "chalk": "^4.1.2", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.0.0", + "strip-ansi": "^7.0.1", "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://r.cnpmjs.org/ansi-regex/download/ansi-regex-6.0.1.tgz", + "integrity": "sha1-MYPjj66aZdfLXlOUXNWJfQJgoGo=" + }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://r.cnpmjs.org/cli-cursor/download/cli-cursor-4.0.0.tgz", + "integrity": "sha1-POz+NzS/T+Aqg2HL3A9v4oxqV+o=", + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://r.cnpmjs.org/restore-cursor/download/restore-cursor-4.0.0.tgz", + "integrity": "sha1-UZVgpDGJdQlt725gnUQQDtqkzLk=", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://r.cnpmjs.org/strip-ansi/download/strip-ansi-7.0.1.tgz", + "integrity": "sha1-YXQKCM42th5Q5lZT8HBg0ACXX7I=", + "requires": { + "ansi-regex": "^6.0.1" + } + } } }, "os-tmpdir": { @@ -356,6 +468,11 @@ "resolved": "https://r.cnpmjs.org/type-fest/download/type-fest-0.21.3.tgz", "integrity": "sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=" }, + "universalify": { + "version": "2.0.0", + "resolved": "https://r.cnpmjs.org/universalify/download/universalify-2.0.0.tgz", + "integrity": "sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://r.cnpmjs.org/util-deprecate/download/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index c4c0692..4350366 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,10 @@ "author": "", "license": "ISC", "dependencies": { + "chalk": "^4.1.2", "commander": "^8.2.0", - "inquirer": "^8.2.0" + "fs-extra": "^10.0.0", + "inquirer": "^8.2.0", + "ora": "^6.0.1" } }