@tomjs/create-app 0.8.2 → 0.9.0
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 +3 -0
- package/README.zh_CN.md +3 -0
- package/dist/index.mjs +7 -6
- package/package.json +4 -2
- package/template-electron-react/package.json +2 -2
- package/template-electron-vue/package.json +3 -3
- package/template-node/README.md +1 -8
- package/template-node/README.zh_CN.md +1 -8
- package/template-node/package.json +1 -1
- package/template-node/tsup.config.ts +11 -7
- package/template-node/tsup.config.vite.ts +15 -0
- package/template-react/package.json +1 -1
- package/template-vscode/package.json +1 -1
- package/template-vscode-react/package.json +2 -2
- package/template-vscode-vue/package.json +3 -3
- package/template-vue/package.json +2 -2
package/README.md
CHANGED
package/README.zh_CN.md
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
`)}function
|
|
4
|
-
Scaffolding project in ${s}...`);let
|
|
2
|
+
import l,{renameSync as Ne}from"fs";import Te from"os";import r from"path";import{fileURLToPath as Fe}from"url";import{lightBlue as G,lightCyan as _e,lightGreen as N,lightYellow as de,red as ye,reset as w,yellow as Ue}from"kolorist";import{camelCase as Ie}from"lodash-es";import Ve from"minimist";import Je from"prompts";import b from"shelljs";import me from"os";import ue from"path";import{blue as Oe,red as O,reset as C}from"kolorist";import Ce from"minimist";import B from"prompts";import p from"fs";import M from"path";function A(e){return[["t","template"],["g","git"]].forEach(([i,a])=>{e[a]=e[a]??e[i]}),e}function oe(e){return p.readdirSync(e).length===0}function W(e){return e?.trim().replace(/\/+$/g,"")}function $e(e,i){p.mkdirSync(i,{recursive:!0});for(let a of p.readdirSync(e)){let h=M.resolve(e,a),u=M.resolve(i,a);z(h,u)}}function z(e,i){p.statSync(e).isDirectory()?$e(e,i):p.copyFileSync(e,i)}function re(e){if(p.existsSync(e))for(let i of p.readdirSync(e))p.rmSync(M.resolve(e,i),{recursive:!0,force:!0})}function L(e){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e)}function se(e){return e.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}function ce(e){if(!e)return;let a=e.split(" ")[0].split("/");return{name:a[0],version:a[1]}}function v(e){if(p.existsSync(e))try{return JSON.parse(p.readFileSync(e,"utf8"))}catch(i){console.error(i)}}function x(e,i){p.writeFileSync(e,JSON.stringify(i,null,2)+`
|
|
3
|
+
`)}function $(e){p.existsSync(e)&&p.rmSync(e,{recursive:!0,force:!0})}function ae(e){p.existsSync(e)||p.mkdirSync(e,{recursive:!0})}var De=A(Ce(process.argv.slice(2),{string:["_"]})),le={repo:"https://github.com",owner:me.userInfo().username};function H(e){let{repo:i,owner:a}=e;return`${i}${i.endsWith("/")?"":"/"}${a}`}async function pe(e){let i=await B([{type:"text",name:"repo",message:C("Git repository url:"),initial:e?.repo||le.repo},{type:"text",name:"owner",message:C("Git repository owner:"),initial:e?.owner||le.owner}],{onCancel:()=>{throw console.log(O("\u2716")+" Operation cancelled"),new Error}});return{id:e?.id||Date.now().toString(),repo:i.repo,owner:i.owner}}var ge=ue.join(me.homedir(),".tomjs","create-app"),fe=ue.join(ge,"config.json");function D(){return ae(ge),Object.assign({gitRepos:[]},v(fe))}function Ge(e){let i=D();i.createTime?i.updateTime=Date.now():i.createTime=Date.now(),x(fe,Object.assign(i,e))}function Y(e){Ge({gitRepos:e})}async function K(){let{gitRepos:e}=D();(e.length===0||De.git)&&(e.length===0&&console.log(`You need to set the ${Oe("git remote repository")} for the first time.`),await i());async function i(){let a=e.map(f=>({title:H(f),value:f.id})).concat([{title:"Add",value:"add"},{title:O("Exit"),value:"exit"}]),h=await B({type:"select",name:"repoId",message:e.length===0?"You choose to add or exit:":"You can choose the repository to be operated, or choose to add or exit:",choices:a},{onCancel:()=>{throw console.log(O("\u2716")+" Operation cancelled"),new Error}}),{repoId:u}=h;if(u==="exit")return;if(u==="add"){let f=await pe();return e.push(f),Y(e),i()}let S=e.findIndex(f=>f.id===u),P=await B([{type:"select",name:"action",message:C("Select an action?"),choices:[{title:"Edit",value:"edit"},{title:"Remove",value:"remove"},{title:"Exit",value:"exit"}]},{type:f=>f==="remove"&&"toggle",name:"confirmRemove",message:C("Where confirm to remove?"),initial:!0,active:"Yes",inactive:"No"}],{onCancel:()=>{throw console.log(O("\u2716")+" Operation cancelled"),new Error}}),{action:R,confirmRemove:T}=P;if(R==="exit")return K();if(R==="remove")return T&&(e.splice(S,1),Y(e)),i();let F=await pe(e[S]);return e[S]=F,Y(e),i()}}var q=A(Ve(process.argv.slice(2),{string:["_"]})),Q=process.cwd(),Me=["test","vite","electron","examples"],we=[{name:"web",display:"Web App",color:N,variants:[{name:"vue",display:"Vue",color:N},{name:"react",display:"React",color:G}]},{name:"electron",display:"Electron App",color:G,variants:[{name:"electron-vue",display:"Vue",color:N},{name:"electron-react",display:"React",color:G}]},{name:"vscode",display:"VSCode Extension",color:_e,options:[{id:"publish",name:"Git Repository + NPM Publish"},{id:"ssh",name:"Git init by SSH"}],variants:[{name:"vscode",display:"Base",color:de},{name:"vscode-vue",display:"Vue",color:N},{name:"vscode-react",display:"React",color:G}]},{name:"node",display:"Node",color:de,options:[{id:"test",name:"Test"},{id:"publish",name:"Git Repository + NPM Publish"},{id:"ssh",name:"Git init by SSH"},{id:"vite",name:"Vite Plugin"},{id:"electron",name:"Electron"},{id:"examples",name:"Examples"}]}],he=we.map(e=>e.variants&&e.variants.map(i=>i.name)||[e.name]).reduce((e,i)=>e.concat(i),[]),X="my-app";function ve(e){let i=b.exec(`git config --get ${e}`,{silent:!0});if(i.code===0)return i.stdout.trim()}function xe(e){return e.length>1?e.substring(e.indexOf("/")+1):e}async function We(){let e=W(q._[0]),i=q.template||q.t,a=e||X,h=()=>a==="."?r.basename(r.resolve()):a,u=xe(a),{gitRepos:S}=D(),P=await Je([{type:e?null:"text",name:"projectName",message:w("Project name:"),initial:X,onState:t=>{a=W(t.value)||X,u=xe(a)}},{type:()=>!l.existsSync(u)||oe(u)?null:"toggle",name:"overwrite",message:()=>(u==="."?"Current directory":`Target directory "${u}"`)+" is not empty. Remove existing files and continue?",initial:!1,active:"Yes",inactive:"No"},{type:(t,{overwrite:o})=>{if(o===!1)throw console.log(ye("\u2716")+" Operation cancelled"),new Error;return null},name:"overwriteChecker"},{type:()=>L(h())?null:"text",name:"packageName",message:w("Package name:"),initial:()=>se(h()),validate:t=>L(t)||"Invalid package.json name"},{type:i&&he.includes(i)?null:"select",name:"framework",message:typeof i=="string"&&!he.includes(i)?w(`"${i}" isn't a valid template. Please choose from below: `):w("Select a framework:"),initial:0,choices:we.map(t=>{let o=t.color;return{title:o(t.display||t.name),value:t}})},{type:t=>t&&t.variants?"select":null,name:"variant",message:w("Select a variant:"),choices:t=>t?.variants?.map(o=>{let n=o.color;return{title:n(o.display||o.name),value:o.name}})},{type:(t,o)=>{let{framework:n}=o;return n&&Array.isArray(n.options)&&n.options.length?"multiselect":null},name:"options",message:w("Select optional options:"),instructions:!1,choices:(t,o)=>{let{framework:n}=o;return n?.options?.map(c=>({title:c.name,value:c.id}))}},{type:(t,o)=>S.length&&Array.isArray(o.options)&&o.options.includes("publish")?"select":null,name:"gitUserUrl",message:w("Which git repository to publish to?"),choices:S.map(t=>{let o=H(t);return{title:o,value:o}})}],{onCancel:()=>{throw console.log(ye("\u2716")+" Operation cancelled"),new Error}}),{framework:R,overwrite:T,packageName:F,variant:f,gitUserUrl:Se}=P,g=P.options||[],s=r.join(Q,u);T?re(s):l.existsSync(s)||l.mkdirSync(s,{recursive:!0}),console.log(`
|
|
4
|
+
Scaffolding project in ${s}...`);let _=f||R?.name||i||"",U=t=>r.join(Fe(import.meta.url),"../..",`template-${t}`),ke=U(_),I=_.includes("node");[ke,U("config")].forEach(t=>{let o=l.readdirSync(t);for(let n of o){let c=n.startsWith("_")?n.replace("_","."):n;if((I&&!g.includes("examples")||_==="vscode")&&n.includes("stylelint"))continue;let m=r.join(s,c);z(r.join(t,n),m)}});let d=F||h(),k={name:"UserName",email:"name@github.com"};function Z(t=!1){let o=d.startsWith("@")?d.split("/")[0].substring(1):Ie(k.name),n=Se||`https://github.com/${o}`;return t&&(n=n.replace(/http(s):\/\//g,"git@").replace(/\//,":")),`${n}/${d.substring(d.indexOf("/")+1)}.git`}Ee(),I&&(je(),Re(),Ae());let ee=ce(process.env.npm_config_user_agent),V=ee?ee.name:"npm";b.which("git")&&(b.exec(`cd ${s} && git init`),g.includes("publish")&&b.exec(`cd ${s} && git remote add origin ${Z(g.includes("ssh"))}`));let J=r.relative(Q,s);switch(console.log(`
|
|
5
5
|
Done. Now run:
|
|
6
|
-
`),s!==
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
`),s!==Q&&console.log(` cd ${J.includes(" ")?`"${J}"`:J}`),V){case"yarn":console.log(" yarn"),console.log(" yarn dev");break;default:console.log(` ${V} install`),console.log(` ${V} run dev`);break}function je(){Pe("lintstagedrc.cjs","jest.config","tsconfig.json","tsup.config.ts");let t=g.find(n=>["vite"].includes(n)),o=["#pnpm",`pnpm add ${d}${t?" -D":""}`,"","#yarn",`yarn add ${d}${t?" -D":""}`,"","#npm",`npm i ${d}${t?" --save-dev":""}`].join(`
|
|
7
|
+
`);["LICENSE","README.md","README.zh_CN.md"].forEach(n=>{let c=r.join(s,n);if(!g.includes("publish")&&l.existsSync(c)){l.rmSync(c),n==="README.md"&&l.writeFileSync(c,`# ${d}
|
|
8
|
+
`,{encoding:"utf-8"});return}if(!l.existsSync(c))return;let m=l.readFileSync(c,"utf-8").replace(new RegExp("{{pkg.name}}","g"),d).replace(new RegExp("{{pkg.install}}","g"),o).replace(new RegExp("{{user.name}}","g"),k.name).replace(new RegExp("{{user.email}}","g"),k.email);l.writeFileSync(c,m)})}function j(t,...o){["dependencies","devDependencies"].forEach(n=>{Object.keys(t[n]||{}).forEach(c=>{o.find(m=>c.includes(m))&&delete t[n][c]})})}function Ee(){let t=v(r.join(s,"package.json"));t.name=d,g.includes("publish")?(b.which("git")&&(k.name=ve("user.name")||Te.userInfo().username,k.email=ve("user.email")||"",t.author=Object.assign({},t.author,k)),t.publishConfig={access:"public",registry:"https://registry.npmjs.org/"},t.repository??={type:"git"},t.repository.url=`git+${Z()}`):(delete t.author,delete t.publishConfig,delete t.repository,delete t.scripts.prepublishOnly,delete t.devDependencies.np),I&&(g.includes("electron")||(j(t,"electron"),t.scripts["lint:eslint"]=t.scripts["lint:eslint"].replace(",electron","")),g.includes("vite")||j(t,"vite")),x(r.join(s,"package.json"),t)}function be(t,o){let n=t.lastIndexOf("."),c=t.substring(0,n)+"."+o+t.substring(n),m=r.join(s,t),y=r.join(s,c);l.existsSync(y)&&(g.includes(o)?($(m),Ne(y,m)):$(y))}function Pe(...t){t.forEach(o=>{Me.forEach(n=>{be(o,n)})})}function Re(){if(g.includes("test"))return;l.readdirSync(s).filter(n=>n.startsWith("jest.config")||["test"].includes(n)).forEach(n=>{$(r.join(s,n))});let t=r.join(s,"package.json"),o=v(t);delete o.scripts.test,o.scripts["lint:eslint"]=o.scripts["lint:eslint"].replace(",test",""),j(o,"jest"),x(t,o)}function Ae(){if(!g.includes("examples")){let n=v(r.join(s,"package.json"));n.scripts.lint=n.scripts.lint.replace(" lint:stylelint",""),n.scripts["lint:eslint"]=n.scripts["lint:eslint"].replace(",examples",""),delete n.scripts["lint:stylelint"],j(n,"stylelint"),x(r.join(s,"package.json"),n);return}let t=r.join(s,"examples");l.mkdirSync(t);let o=g.includes("electron");["vue","react"].forEach(n=>{let c=U(o?`electron-${n}`:n),m=r.join(t,n);if(!l.existsSync(c)){console.log(`${Ue(c)} template is not exist`);return}l.cpSync(c,m,{recursive:!0});let y=v(r.join(m,"package.json"));Object.keys(y.scripts).forEach(E=>{(E.startsWith("lint")||["prepare"].includes(E))&&delete y.scripts[E]}),j(y,"eslint","prettier","stylelint","commitlint","husky","lint-staged","tsconfig","lint-staged","npm-run-all"),x(r.join(m,"package.json"),y),["_lintstagedrc.cjs"].forEach(E=>{let te=r.join(m,E);l.existsSync(te)&&l.rmSync(te,{recursive:!0})})}),l.writeFileSync(r.join(s,"pnpm-workspace.yaml"),`packages:
|
|
9
|
+
- 'examples/*'`,{encoding:"utf-8"})}}K().then(async()=>We().catch(e=>{e.message&&console.error(e)})).catch(e=>{e.message&&console.error(e)});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tomjs/create-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "create tomjs web app",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tomjs",
|
|
@@ -61,18 +61,20 @@
|
|
|
61
61
|
"@types/node": "^18.19.3",
|
|
62
62
|
"@types/prompts": "^2.4.9",
|
|
63
63
|
"@types/shelljs": "^0.8.15",
|
|
64
|
+
"cross-env": "^7.0.3",
|
|
64
65
|
"eslint": "^8.56.0",
|
|
65
66
|
"husky": "^8.0.3",
|
|
66
67
|
"lint-staged": "^15.2.0",
|
|
67
68
|
"np": "^9.2.0",
|
|
68
69
|
"npm-run-all": "^4.1.5",
|
|
69
70
|
"prettier": "^3.1.1",
|
|
70
|
-
"stylelint": "^16.0
|
|
71
|
+
"stylelint": "^16.1.0",
|
|
71
72
|
"tsup": "^8.0.1",
|
|
72
73
|
"typescript": "~5.3.3"
|
|
73
74
|
},
|
|
74
75
|
"scripts": {
|
|
75
76
|
"dev": "tsup --watch",
|
|
77
|
+
"debug": "cross-env VSCODE_DEBUG=1 tsup --watch",
|
|
76
78
|
"build": "tsup --minify",
|
|
77
79
|
"lint": "run-s lint:eslint lint:stylelint lint:prettier",
|
|
78
80
|
"lint:eslint": "eslint \"{src,template-*}/**/*.{js,cjs,ts}\" *.{js,cjs,ts} --fix --cache",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@tomjs/prettier": "^1.1.1",
|
|
32
32
|
"@tomjs/stylelint": "^2.1.1",
|
|
33
33
|
"@tomjs/tsconfig": "^1.2.1",
|
|
34
|
-
"@tomjs/vite-plugin-electron": "^1.8.
|
|
34
|
+
"@tomjs/vite-plugin-electron": "^1.8.2",
|
|
35
35
|
"@types/node": "^18.19.3",
|
|
36
36
|
"@types/react": "^18.2.45",
|
|
37
37
|
"@types/react-dom": "^18.2.18",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"npm-run-all": "^4.1.5",
|
|
46
46
|
"prettier": "^3.1.1",
|
|
47
47
|
"rimraf": "^5.0.5",
|
|
48
|
-
"stylelint": "^16.0
|
|
48
|
+
"stylelint": "^16.1.0",
|
|
49
49
|
"tsx": "^4.7.0",
|
|
50
50
|
"typescript": "~5.3.3",
|
|
51
51
|
"vite": "^5.0.10",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"@tomjs/prettier": "^1.1.1",
|
|
31
31
|
"@tomjs/stylelint": "^2.1.1",
|
|
32
32
|
"@tomjs/tsconfig": "^1.2.1",
|
|
33
|
-
"@tomjs/vite-plugin-electron": "^1.8.
|
|
33
|
+
"@tomjs/vite-plugin-electron": "^1.8.2",
|
|
34
34
|
"@types/node": "^18.19.3",
|
|
35
|
-
"@vitejs/plugin-vue": "^
|
|
35
|
+
"@vitejs/plugin-vue": "^5.0.0",
|
|
36
36
|
"cross-env": "^7.0.3",
|
|
37
37
|
"electron": "^28.1.0",
|
|
38
38
|
"electron-builder": "^24.9.1",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"npm-run-all": "^4.1.5",
|
|
43
43
|
"prettier": "^3.1.1",
|
|
44
44
|
"rimraf": "^5.0.5",
|
|
45
|
-
"stylelint": "^16.0
|
|
45
|
+
"stylelint": "^16.1.0",
|
|
46
46
|
"tsx": "^4.7.0",
|
|
47
47
|
"typescript": "~5.3.3",
|
|
48
48
|
"vite": "^5.0.10",
|
package/template-node/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { defineConfig } from 'tsup';
|
|
2
2
|
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
export default defineConfig(options => {
|
|
4
|
+
return {
|
|
5
|
+
entry: ['src/index.ts'],
|
|
6
|
+
format: ['esm', 'cjs'],
|
|
7
|
+
target: ['es2021', 'node16'],
|
|
8
|
+
shims: true,
|
|
9
|
+
clean: true,
|
|
10
|
+
sourcemap: !!options.watch,
|
|
11
|
+
dts: true,
|
|
12
|
+
splitting: true,
|
|
13
|
+
};
|
|
10
14
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineConfig } from 'tsup';
|
|
2
|
+
|
|
3
|
+
export default defineConfig(options => {
|
|
4
|
+
return {
|
|
5
|
+
entry: ['src/index.ts'],
|
|
6
|
+
format: ['esm', 'cjs'],
|
|
7
|
+
target: ['es2021', 'node16'],
|
|
8
|
+
external: ['vite'],
|
|
9
|
+
shims: true,
|
|
10
|
+
clean: true,
|
|
11
|
+
sourcemap: !!options.watch,
|
|
12
|
+
dts: true,
|
|
13
|
+
splitting: true,
|
|
14
|
+
};
|
|
15
|
+
});
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@tomjs/stylelint": "^2.1.1",
|
|
50
50
|
"@tomjs/tsconfig": "^1.2.1",
|
|
51
51
|
"@tomjs/vite-plugin-vscode": "^1.1.0",
|
|
52
|
-
"@tomjs/vscode-extension-webview": "^1.1.
|
|
52
|
+
"@tomjs/vscode-extension-webview": "^1.1.1",
|
|
53
53
|
"@types/node": "^18.19.3",
|
|
54
54
|
"@types/react": "^18.2.45",
|
|
55
55
|
"@types/react-dom": "^18.2.18",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"npm-run-all": "^4.1.5",
|
|
64
64
|
"prettier": "^3.1.1",
|
|
65
65
|
"rimraf": "^5.0.5",
|
|
66
|
-
"stylelint": "^16.0
|
|
66
|
+
"stylelint": "^16.1.0",
|
|
67
67
|
"tsx": "^4.7.0",
|
|
68
68
|
"typescript": "~5.3.3",
|
|
69
69
|
"vite": "^5.0.10"
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"@tomjs/stylelint": "^2.1.1",
|
|
49
49
|
"@tomjs/tsconfig": "^1.2.1",
|
|
50
50
|
"@tomjs/vite-plugin-vscode": "^1.1.0",
|
|
51
|
-
"@tomjs/vscode-extension-webview": "^1.1.
|
|
51
|
+
"@tomjs/vscode-extension-webview": "^1.1.1",
|
|
52
52
|
"@types/node": "^18.19.3",
|
|
53
53
|
"@types/vscode": "^1.85.0",
|
|
54
54
|
"@types/vscode-webview": "^1.57.4",
|
|
55
|
-
"@vitejs/plugin-vue": "^
|
|
55
|
+
"@vitejs/plugin-vue": "^5.0.0",
|
|
56
56
|
"cross-env": "^7.0.3",
|
|
57
57
|
"eslint": "^8.56.0",
|
|
58
58
|
"husky": "^8.0.3",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"npm-run-all": "^4.1.5",
|
|
61
61
|
"prettier": "^3.1.1",
|
|
62
62
|
"rimraf": "^5.0.5",
|
|
63
|
-
"stylelint": "^16.0
|
|
63
|
+
"stylelint": "^16.1.0",
|
|
64
64
|
"tsx": "^4.7.0",
|
|
65
65
|
"typescript": "~5.3.3",
|
|
66
66
|
"vite": "^5.0.10",
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"@tomjs/stylelint": "^2.1.1",
|
|
28
28
|
"@tomjs/tsconfig": "^1.2.1",
|
|
29
29
|
"@types/node": "^18.19.3",
|
|
30
|
-
"@vitejs/plugin-vue": "^
|
|
30
|
+
"@vitejs/plugin-vue": "^5.0.0",
|
|
31
31
|
"cross-env": "^7.0.3",
|
|
32
32
|
"eslint": "^8.56.0",
|
|
33
33
|
"husky": "^8.0.3",
|
|
34
34
|
"lint-staged": "^15.2.0",
|
|
35
35
|
"npm-run-all": "^4.1.5",
|
|
36
36
|
"prettier": "^3.1.1",
|
|
37
|
-
"stylelint": "^16.0
|
|
37
|
+
"stylelint": "^16.1.0",
|
|
38
38
|
"typescript": "~5.3.3",
|
|
39
39
|
"vite": "^5.0.10",
|
|
40
40
|
"vue-tsc": "^1.8.26"
|