liuliu_cli 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -13
- package/bin/index.js +2 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/bin/src/command/create.d.ts +0 -9
- package/bin/src/command/create.d.ts.map +0 -1
- package/bin/src/index.d.ts +0 -2
- package/bin/src/index.d.ts.map +0 -1
- package/bin/src/utils/clone.d.ts +0 -2
- package/bin/src/utils/clone.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# liuliu-cli
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|
|
|
5
5
|
## 简介
|
|
6
6
|
|
|
7
7
|
- 用于快速搭建前端项目的命令行工具
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
## 模板
|
|
11
10
|
|
|
12
11
|
- 快速生成vue3+TS+VITE+ElmentPlus+Pina+Axios+Mock的模板
|
|
@@ -14,27 +13,93 @@
|
|
|
14
13
|
## 安装
|
|
15
14
|
|
|
16
15
|
```bash
|
|
17
|
-
npm install
|
|
16
|
+
npm install liuliu_cli -g
|
|
18
17
|
```
|
|
19
18
|
|
|
20
19
|
## 使用
|
|
21
20
|
|
|
22
21
|
```bash
|
|
23
22
|
# 使用模板创建新项目
|
|
24
|
-
|
|
23
|
+
liuliu create
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
# 执行项目文件夹名称并且选择模板创建新项目
|
|
26
|
+
liuliu create [projectName]
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
# 查看脚手架版本
|
|
29
|
+
liuliu -v
|
|
30
|
+
liuliu --version
|
|
32
31
|
```
|
|
33
32
|
|
|
34
|
-
##
|
|
33
|
+
## 开发
|
|
34
|
+
|
|
35
|
+
### 本地开发
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 安装依赖
|
|
39
|
+
npm install
|
|
40
|
+
|
|
41
|
+
# 打包
|
|
42
|
+
npm run build
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### npm 包发布
|
|
35
46
|
|
|
36
47
|
1. 让项目累加版本号
|
|
37
|
-
1. package.json
|
|
38
|
-
2. npm version patch
|
|
48
|
+
1. package.json 内版本号递增
|
|
49
|
+
2. `npm version patch` (小版本,如 1.0.2 -> 1.0.3)
|
|
50
|
+
2. `npm version minor` (中版本,如 1.0.2 -> 1.1.0)
|
|
51
|
+
2. `npm version major` (大版本,如 1.0.2 -> 2.0.0)
|
|
39
52
|
2. 发布新版本
|
|
40
|
-
1. npm publish
|
|
53
|
+
1. `npm publish`
|
|
54
|
+
|
|
55
|
+
## 问题排查
|
|
56
|
+
|
|
57
|
+
### 问题:全局安装后 `liuliu -v` 无法调用
|
|
58
|
+
|
|
59
|
+
**可能的原因和解决方案:**
|
|
60
|
+
|
|
61
|
+
1. **重新安装包**
|
|
62
|
+
```bash
|
|
63
|
+
npm uninstall -g liuliu_cli
|
|
64
|
+
npm install -g liuliu_cli
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
2. **检查 npm 全局路径**
|
|
68
|
+
```bash
|
|
69
|
+
# 查看 npm 全局安装路径
|
|
70
|
+
npm config get prefix
|
|
71
|
+
|
|
72
|
+
# 确保该路径在系统 PATH 环境变量中
|
|
73
|
+
# Windows: 通常是 C:\Users\你的用户名\AppData\Roaming\npm
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
3. **检查 bin 文件是否存在**
|
|
77
|
+
```bash
|
|
78
|
+
# 查看全局安装的 bin 文件
|
|
79
|
+
npm list -g liuliu_cli
|
|
80
|
+
|
|
81
|
+
# 或者直接检查文件
|
|
82
|
+
# Windows: C:\Users\你的用户名\AppData\Roaming\npm\liuliu.cmd
|
|
83
|
+
# 或: C:\Users\你的用户名\AppData\Roaming\npm\node_modules\liuliu_cli\bin\index.js
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
4. **清除 npm 缓存**
|
|
87
|
+
```bash
|
|
88
|
+
npm cache clean --force
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
5. **检查文件权限(Windows)**
|
|
92
|
+
- 确保 bin/index.js 文件有执行权限
|
|
93
|
+
- 如果使用 Git,确保文件没有被 Git 修改换行符(CRLF vs LF)
|
|
94
|
+
|
|
95
|
+
6. **验证打包文件**
|
|
96
|
+
```bash
|
|
97
|
+
# 在项目目录下
|
|
98
|
+
npm run build
|
|
99
|
+
node bin/index.js -v # 应该能正常输出版本号
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
如果以上方法都无法解决,请检查:
|
|
103
|
+
- package.json 中的 `bin` 配置是否正确指向 `bin/index.js`
|
|
104
|
+
- `bin/index.js` 文件第一行是否有正确的 shebang: `#!/usr/bin/env node`
|
|
105
|
+
- `files` 字段是否包含 `bin` 目录
|
package/bin/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var e=require("commander"),o=require("path"),r=require("fs-extra"),t=require("@inquirer/prompts"),n=require("simple-git"),l=require("progress-estimator");const s=(e=0)=>o=>`[${o+e}m`,i=(e=0)=>o=>`[${38+e};5;${o}m`,c=(e=0)=>(o,r,t)=>`[${38+e};2;${o};${r};${t}m`,a={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(a.modifier);Object.keys(a.color),Object.keys(a.bgColor);const g=function(){const e=new Map;for(const[o,r]of Object.entries(a)){for(const[o,t]of Object.entries(r))a[o]={open:`[${t[0]}m`,close:`[${t[1]}m`},r[o]=a[o],e.set(t[0],t[1]);Object.defineProperty(a,o,{value:r,enumerable:!1})}return Object.defineProperty(a,"codes",{value:e,enumerable:!1}),a.color.close="[39m",a.bgColor.close="[49m",a.color.ansi=s(),a.color.ansi256=i(),a.color.ansi16m=c(),a.bgColor.ansi=s(10),a.bgColor.ansi256=i(10),a.bgColor.ansi16m=c(10),Object.defineProperties(a,{rgbToAnsi256:{value:(e,o,r)=>e===o&&o===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(o/255*5)+Math.round(r/255*5),enumerable:!1},hexToRgb:{value(e){const o=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!o)return[0,0,0];let[r]=o;3===r.length&&(r=[...r].map(e=>e+e).join(""));const t=Number.parseInt(r,16);return[t>>16&255,t>>8&255,255&t]},enumerable:!1},hexToAnsi256:{value:e=>a.rgbToAnsi256(...a.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return e-8+90;let o,r,t;if(e>=232)o=(10*(e-232)+8)/255,r=o,t=o;else{const n=(e-=16)%36;o=Math.floor(e/36)/5,r=Math.floor(n/6)/5,t=n%6/5}const n=2*Math.max(o,r,t);if(0===n)return 30;let l=30+(Math.round(t)<<2|Math.round(r)<<1|Math.round(o));return 2===n&&(l+=60),l},enumerable:!1},rgbToAnsi:{value:(e,o,r)=>a.ansi256ToAnsi(a.rgbToAnsi256(e,o,r)),enumerable:!1},hexToAnsi:{value:e=>a.ansi256ToAnsi(a.hexToAnsi256(e)),enumerable:!1}}),a}(),u=(()=>{if(!("navigator"in globalThis))return 0;if(globalThis.navigator.userAgentData){const e=navigator.userAgentData.brands.find(({brand:e})=>"Chromium"===e);if(e&&e.version>93)return 3}return/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)?1:0})(),b=0!==u&&{level:u},h={stdout:b,stderr:b};function m(e,o,r){let t=e.indexOf(o);if(-1===t)return e;const n=o.length;let l=0,s="";do{s+=e.slice(l,t)+o+r,l=t+n,t=e.indexOf(o,l)}while(-1!==t);return s+=e.slice(l),s}const{stdout:d,stderr:p}=h,v=Symbol("GENERATOR"),f=Symbol("STYLER"),y=Symbol("IS_EMPTY"),O=["ansi","ansi","ansi256","ansi16m"],w=Object.create(null),C=e=>{const o=(...e)=>e.join(" ");return((e,o={})=>{if(o.level&&!(Number.isInteger(o.level)&&o.level>=0&&o.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");const r=d?d.level:0;e.level=void 0===o.level?r:o.level})(o,e),Object.setPrototypeOf(o,T.prototype),o};function T(e){return C(e)}Object.setPrototypeOf(T.prototype,Function.prototype);for(const[e,o]of Object.entries(g))w[e]={get(){const r=x(this,j(o.open,o.close,this[f]),this[y]);return Object.defineProperty(this,e,{value:r}),r}};w.visible={get(){const e=x(this,this[f],!0);return Object.defineProperty(this,"visible",{value:e}),e}};const A=(e,o,r,...t)=>"rgb"===e?"ansi16m"===o?g[r].ansi16m(...t):"ansi256"===o?g[r].ansi256(g.rgbToAnsi256(...t)):g[r].ansi(g.rgbToAnsi(...t)):"hex"===e?A("rgb",o,r,...g.hexToRgb(...t)):g[r][e](...t),B=["rgb","hex","ansi256"];for(const e of B){w[e]={get(){const{level:o}=this;return function(...r){const t=j(A(e,O[o],"color",...r),g.color.close,this[f]);return x(this,t,this[y])}}};w["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:o}=this;return function(...r){const t=j(A(e,O[o],"bgColor",...r),g.bgColor.close,this[f]);return x(this,t,this[y])}}}}const R=Object.defineProperties(()=>{},{...w,level:{enumerable:!0,get(){return this[v].level},set(e){this[v].level=e}}}),j=(e,o,r)=>{let t,n;return void 0===r?(t=e,n=o):(t=r.openAll+e,n=o+r.closeAll),{open:e,close:o,openAll:t,closeAll:n,parent:r}},x=(e,o,r)=>{const t=(...e)=>k(t,1===e.length?""+e[0]:e.join(" "));return Object.setPrototypeOf(t,R),t[v]=e,t[f]=o,t[y]=r,t},k=(e,o)=>{if(e.level<=0||!o)return e[y]?"":o;let r=e[f];if(void 0===r)return o;const{openAll:t,closeAll:n}=r;if(o.includes(""))for(;void 0!==r;)o=m(o,r.close,r.open),r=r.parent;const l=o.indexOf("\n");return-1!==l&&(o=function(e,o,r,t){let n=0,l="";do{const s="\r"===e[t-1];l+=e.slice(n,s?t-1:t)+o+(s?"\r\n":"\n")+r,n=t+1,t=e.indexOf("\n",n)}while(-1!==t);return l+=e.slice(n),l}(o,n,t,l)),t+o+n};Object.defineProperties(T.prototype,w);const M=T();T({level:p?p.level:0}),process.env.FORCE_COLOR||(process.env.FORCE_COLOR="1"),M.level=3;const S=l({spinner:{interval:100,frames:["-","+","-"].map(e=>M.green(e))}});process.cwd();process.env.FORCE_COLOR||(process.env.FORCE_COLOR="1"),M.level=3;const P=new Map([["Vite-Vue3-Typescript-template",{name:"Vite-Vue-Type",downloadUrl:"https://gitee.com/sohucw/admin-pro.git",description:"Vue3技术开发模板1",branch:"dev11"}],["Vite-Vue3-Typescript-template2",{name:"Vite-Vue-Type",downloadUrl:"git@gitee.com:sohucw/admin-pro.git",description:"Vue3技术开发模板2",branch:"dev10"}]]);async function E(e){const l=Array.from(P).map(e=>{const[o,r]=e;return{name:o,value:o,description:r.description}});e||(e=await t.input({message:"请输入项目名称"}));const s=o.resolve(process.cwd(),e);if(r.existsSync(s)){if(!await(i=e,console.warn(`${i}文件夹存在`),t.select({message:"是否覆盖?",choices:[{name:"覆盖",value:!0},{name:"取消",value:!1}]})))return;await r.remove(s)}var i;const c=await t.select({message:"请选择模板",choices:l}),a=P.get(c);if(a)try{await(async(e,o,r)=>{const t=n();try{await S(t.clone(e,o,r),"代码下载中",{estimate:7e3}),console.log(),console.log(M.green("代码下载成功")),console.log(M.blackBright("========================")),console.log(M.blackBright("==欢迎使用 DALIU脚手架===")),console.log(M.blackBright("========================")),console.log(),console.log(),console.log(M.blackBright("====使用npm install安装依赖========="))}catch(e){throw console.error(M.red("下载失败")),e?.message?.includes("Host key verification failed")?(console.error(M.yellow("\n提示:SSH 主机密钥验证失败")),console.error(M.yellow("解决方案:")),console.error(M.yellow("1. 如果使用 SSH URL,请先配置 SSH 密钥:")),console.error(M.yellow(' ssh-keygen -t rsa -C "your_email@example.com"')),console.error(M.yellow(" 然后将公钥添加到 Git 服务器")),console.error(M.yellow("2. 或者使用 HTTPS URL(需要输入用户名密码)")),console.error(M.yellow("3. 临时解决:手动添加主机密钥")),console.error(M.yellow(" ssh-keyscan gitee.com >> ~/.ssh/known_hosts"))):e?.message?.includes("Could not read from remote repository")?(console.error(M.yellow("\n提示:无法访问远程仓库")),console.error(M.yellow("请检查:")),console.error(M.yellow("1. 仓库地址是否正确")),console.error(M.yellow("2. 是否有访问权限")),console.error(M.yellow("3. 网络连接是否正常"))):(console.error(M.red("\n错误详情:")),console.error(e)),e}})(a.downloadUrl,e,["-b",a.branch])}catch(e){process.exit(1)}else console.error(M.red("未找到模板信息")),process.exit(1)}process.env.FORCE_COLOR||(process.env.FORCE_COLOR="1"),M.level=3;const L=new e.Command("liuliu");L.version("1.0.2","-v,--version"),L.command("create").description("创建一个新项目").argument("[name]","项目名称").action(async e=>{E(e)}),L.parse(),exports.add=function(e,o){return e+o};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("commander"),o=require("path"),r=require("fs-extra"),t=require("@inquirer/prompts"),n=require("simple-git"),
|
|
1
|
+
"use strict";var e=require("commander"),o=require("path"),r=require("fs-extra"),t=require("@inquirer/prompts"),n=require("simple-git"),l=require("progress-estimator");const s=(e=0)=>o=>`[${o+e}m`,i=(e=0)=>o=>`[${38+e};5;${o}m`,c=(e=0)=>(o,r,t)=>`[${38+e};2;${o};${r};${t}m`,a={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(a.modifier);Object.keys(a.color),Object.keys(a.bgColor);const g=function(){const e=new Map;for(const[o,r]of Object.entries(a)){for(const[o,t]of Object.entries(r))a[o]={open:`[${t[0]}m`,close:`[${t[1]}m`},r[o]=a[o],e.set(t[0],t[1]);Object.defineProperty(a,o,{value:r,enumerable:!1})}return Object.defineProperty(a,"codes",{value:e,enumerable:!1}),a.color.close="[39m",a.bgColor.close="[49m",a.color.ansi=s(),a.color.ansi256=i(),a.color.ansi16m=c(),a.bgColor.ansi=s(10),a.bgColor.ansi256=i(10),a.bgColor.ansi16m=c(10),Object.defineProperties(a,{rgbToAnsi256:{value:(e,o,r)=>e===o&&o===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(o/255*5)+Math.round(r/255*5),enumerable:!1},hexToRgb:{value(e){const o=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!o)return[0,0,0];let[r]=o;3===r.length&&(r=[...r].map(e=>e+e).join(""));const t=Number.parseInt(r,16);return[t>>16&255,t>>8&255,255&t]},enumerable:!1},hexToAnsi256:{value:e=>a.rgbToAnsi256(...a.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return e-8+90;let o,r,t;if(e>=232)o=(10*(e-232)+8)/255,r=o,t=o;else{const n=(e-=16)%36;o=Math.floor(e/36)/5,r=Math.floor(n/6)/5,t=n%6/5}const n=2*Math.max(o,r,t);if(0===n)return 30;let l=30+(Math.round(t)<<2|Math.round(r)<<1|Math.round(o));return 2===n&&(l+=60),l},enumerable:!1},rgbToAnsi:{value:(e,o,r)=>a.ansi256ToAnsi(a.rgbToAnsi256(e,o,r)),enumerable:!1},hexToAnsi:{value:e=>a.ansi256ToAnsi(a.hexToAnsi256(e)),enumerable:!1}}),a}(),u=(()=>{if(!("navigator"in globalThis))return 0;if(globalThis.navigator.userAgentData){const e=navigator.userAgentData.brands.find(({brand:e})=>"Chromium"===e);if(e&&e.version>93)return 3}return/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)?1:0})(),b=0!==u&&{level:u},h={stdout:b,stderr:b};function m(e,o,r){let t=e.indexOf(o);if(-1===t)return e;const n=o.length;let l=0,s="";do{s+=e.slice(l,t)+o+r,l=t+n,t=e.indexOf(o,l)}while(-1!==t);return s+=e.slice(l),s}const{stdout:d,stderr:p}=h,v=Symbol("GENERATOR"),f=Symbol("STYLER"),y=Symbol("IS_EMPTY"),O=["ansi","ansi","ansi256","ansi16m"],w=Object.create(null),C=e=>{const o=(...e)=>e.join(" ");return((e,o={})=>{if(o.level&&!(Number.isInteger(o.level)&&o.level>=0&&o.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");const r=d?d.level:0;e.level=void 0===o.level?r:o.level})(o,e),Object.setPrototypeOf(o,T.prototype),o};function T(e){return C(e)}Object.setPrototypeOf(T.prototype,Function.prototype);for(const[e,o]of Object.entries(g))w[e]={get(){const r=x(this,j(o.open,o.close,this[f]),this[y]);return Object.defineProperty(this,e,{value:r}),r}};w.visible={get(){const e=x(this,this[f],!0);return Object.defineProperty(this,"visible",{value:e}),e}};const A=(e,o,r,...t)=>"rgb"===e?"ansi16m"===o?g[r].ansi16m(...t):"ansi256"===o?g[r].ansi256(g.rgbToAnsi256(...t)):g[r].ansi(g.rgbToAnsi(...t)):"hex"===e?A("rgb",o,r,...g.hexToRgb(...t)):g[r][e](...t),B=["rgb","hex","ansi256"];for(const e of B){w[e]={get(){const{level:o}=this;return function(...r){const t=j(A(e,O[o],"color",...r),g.color.close,this[f]);return x(this,t,this[y])}}};w["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:o}=this;return function(...r){const t=j(A(e,O[o],"bgColor",...r),g.bgColor.close,this[f]);return x(this,t,this[y])}}}}const R=Object.defineProperties(()=>{},{...w,level:{enumerable:!0,get(){return this[v].level},set(e){this[v].level=e}}}),j=(e,o,r)=>{let t,n;return void 0===r?(t=e,n=o):(t=r.openAll+e,n=o+r.closeAll),{open:e,close:o,openAll:t,closeAll:n,parent:r}},x=(e,o,r)=>{const t=(...e)=>k(t,1===e.length?""+e[0]:e.join(" "));return Object.setPrototypeOf(t,R),t[v]=e,t[f]=o,t[y]=r,t},k=(e,o)=>{if(e.level<=0||!o)return e[y]?"":o;let r=e[f];if(void 0===r)return o;const{openAll:t,closeAll:n}=r;if(o.includes(""))for(;void 0!==r;)o=m(o,r.close,r.open),r=r.parent;const l=o.indexOf("\n");return-1!==l&&(o=function(e,o,r,t){let n=0,l="";do{const s="\r"===e[t-1];l+=e.slice(n,s?t-1:t)+o+(s?"\r\n":"\n")+r,n=t+1,t=e.indexOf("\n",n)}while(-1!==t);return l+=e.slice(n),l}(o,n,t,l)),t+o+n};Object.defineProperties(T.prototype,w);const M=T();T({level:p?p.level:0}),process.env.FORCE_COLOR||(process.env.FORCE_COLOR="1"),M.level=3;const S=l({spinner:{interval:100,frames:["-","+","-"].map(e=>M.green(e))}});process.cwd();process.env.FORCE_COLOR||(process.env.FORCE_COLOR="1"),M.level=3;const P=new Map([["Vite-Vue3-Typescript-template",{name:"Vite-Vue-Type",downloadUrl:"https://gitee.com/sohucw/admin-pro.git",description:"Vue3技术开发模板1",branch:"dev11"}],["Vite-Vue3-Typescript-template2",{name:"Vite-Vue-Type",downloadUrl:"git@gitee.com:sohucw/admin-pro.git",description:"Vue3技术开发模板2",branch:"dev10"}]]);async function E(e){const l=Array.from(P).map(e=>{const[o,r]=e;return{name:o,value:o,description:r.description}});e||(e=await t.input({message:"请输入项目名称"}));const s=o.resolve(process.cwd(),e);if(r.existsSync(s)){if(!await(i=e,console.warn(`${i}文件夹存在`),t.select({message:"是否覆盖?",choices:[{name:"覆盖",value:!0},{name:"取消",value:!1}]})))return;await r.remove(s)}var i;const c=await t.select({message:"请选择模板",choices:l}),a=P.get(c);if(a)try{await(async(e,o,r)=>{const t=n();try{await S(t.clone(e,o,r),"代码下载中",{estimate:7e3}),console.log(),console.log(M.green("代码下载成功")),console.log(M.blackBright("========================")),console.log(M.blackBright("==欢迎使用 DALIU脚手架===")),console.log(M.blackBright("========================")),console.log(),console.log(),console.log(M.blackBright("====使用npm install安装依赖========="))}catch(e){throw console.error(M.red("下载失败")),e?.message?.includes("Host key verification failed")?(console.error(M.yellow("\n提示:SSH 主机密钥验证失败")),console.error(M.yellow("解决方案:")),console.error(M.yellow("1. 如果使用 SSH URL,请先配置 SSH 密钥:")),console.error(M.yellow(' ssh-keygen -t rsa -C "your_email@example.com"')),console.error(M.yellow(" 然后将公钥添加到 Git 服务器")),console.error(M.yellow("2. 或者使用 HTTPS URL(需要输入用户名密码)")),console.error(M.yellow("3. 临时解决:手动添加主机密钥")),console.error(M.yellow(" ssh-keyscan gitee.com >> ~/.ssh/known_hosts"))):e?.message?.includes("Could not read from remote repository")?(console.error(M.yellow("\n提示:无法访问远程仓库")),console.error(M.yellow("请检查:")),console.error(M.yellow("1. 仓库地址是否正确")),console.error(M.yellow("2. 是否有访问权限")),console.error(M.yellow("3. 网络连接是否正常"))):(console.error(M.red("\n错误详情:")),console.error(e)),e}})(a.downloadUrl,e,["-b",a.branch])}catch(e){process.exit(1)}else console.error(M.red("未找到模板信息")),process.exit(1)}process.env.FORCE_COLOR||(process.env.FORCE_COLOR="1"),M.level=3;const L=new e.Command("liuliu");L.version("1.0.2","-v,--version"),L.command("create").description("创建一个新项目").argument("[name]","项目名称").action(async e=>{E(e)}),L.parse(),exports.add=function(e,o){return e+o};
|
package/package.json
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface TemplateInfo {
|
|
2
|
-
name: string;
|
|
3
|
-
downloadUrl: string;
|
|
4
|
-
description: string;
|
|
5
|
-
branch: string;
|
|
6
|
-
}
|
|
7
|
-
export declare const templateList: Map<string, TemplateInfo>;
|
|
8
|
-
export declare function create(projectName?: string): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/command/create.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAajD,CAAA;AAEF,wBAAsB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,iBAkChD"}
|
package/bin/src/index.d.ts
DELETED
package/bin/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAYA,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAEvC"}
|
package/bin/src/utils/clone.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,KAAK,GAAU,KAAK,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS,MAAM,EAAE,kBAuC9E,CAAA"}
|