@huberyyang/create-todo-vue 1.7.0 → 1.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.
Files changed (44) hide show
  1. package/README.md +1 -0
  2. package/dist/index.js +2 -2
  3. package/package.json +1 -1
  4. package/template-lit/package.json +1 -1
  5. package/template-lit-ts/package.json +1 -1
  6. package/template-vanilla/package.json +1 -1
  7. package/template-vanilla-ts/package.json +1 -1
  8. package/template-vue/package.json +2 -2
  9. package/template-vue-dev/.husky/commit-msg +1 -0
  10. package/template-vue-dev/.husky/pre-commit +1 -0
  11. package/template-vue-dev/.vscode/extensions.json +3 -0
  12. package/template-vue-dev/.vscode/settings.json +50 -0
  13. package/template-vue-dev/README.md +1 -0
  14. package/template-vue-dev/_gitignore +24 -0
  15. package/template-vue-dev/auto-imports.d.ts +619 -0
  16. package/template-vue-dev/commitlint.config.ts +18 -0
  17. package/template-vue-dev/components.d.ts +24 -0
  18. package/template-vue-dev/eslint.config.ts +59 -0
  19. package/template-vue-dev/index.html +24 -0
  20. package/template-vue-dev/lint-staged.config.mjs +3 -0
  21. package/template-vue-dev/package.json +52 -0
  22. package/template-vue-dev/pnpm-workspace.yaml +12 -0
  23. package/template-vue-dev/public/vite.svg +1 -0
  24. package/template-vue-dev/shims.d.ts +6 -0
  25. package/template-vue-dev/src/App.vue +16 -0
  26. package/template-vue-dev/src/assets/vue.svg +1 -0
  27. package/template-vue-dev/src/components/BaseFooter.vue +16 -0
  28. package/template-vue-dev/src/composables/useDark.ts +2 -0
  29. package/template-vue-dev/src/main.ts +15 -0
  30. package/template-vue-dev/src/pages/[...all].vue +5 -0
  31. package/template-vue-dev/src/pages/article/[id].vue +13 -0
  32. package/template-vue-dev/src/pages/index.vue +85 -0
  33. package/template-vue-dev/src/pages/test.vue +17 -0
  34. package/template-vue-dev/src/styles/main.scss +6 -0
  35. package/template-vue-dev/src/styles/variables.scss +7 -0
  36. package/template-vue-dev/src/types/index.d.ts +1 -0
  37. package/template-vue-dev/src/types/vite-env.d.ts +2 -0
  38. package/template-vue-dev/tsconfig.json +27 -0
  39. package/template-vue-dev/typed-router.d.ts +121 -0
  40. package/template-vue-dev/uno.config.ts +29 -0
  41. package/template-vue-dev/vite.config.ts +85 -0
  42. package/template-vue-ts/package.json +2 -2
  43. package/template-vue-ts/src/App.vue +1 -1
  44. package/template-vue-ts/src/components/HelloWorld.vue +1 -1
package/README.md CHANGED
@@ -87,6 +87,7 @@ npm create @huberyyang/todo-vue .foo --overwrite -t vue-ts --no-immediate --pack
87
87
 
88
88
  - `vanilla` / `vanilla-ts`
89
89
  - `vue` / `vue-ts`
90
+ - `vue-dev`:比 vue-ts 重一档,预装 unocss、vueuse、vue-router 自动路由、element-plus 图标、自动导入,以及 eslint + husky + commitlint 一整套工具链
90
91
  - `lit` / `lit-ts`
91
92
 
92
93
  转交上游脚手架的模板(同样 `-t` 可直接指定,交互式在 Vue 下也能选到):
package/dist/index.js CHANGED
@@ -54,7 +54,7 @@ ${r}`:``}`}default:return`${n}${t?`${s(`cyan`,V)} `:``}${i}
54
54
  ${t?s(`cyan`,H):``}
55
55
  `}}}).prompt();var Je=_(((e,t)=>{t.exports=a,a.sync=o;var n=b(`fs`);function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,!n&&i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),Ye=_(((e,t)=>{t.exports=r,r.sync=i;var n=b(`fs`);function r(e,t,r){n.stat(e,function(e,n){r(e,!e&&a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),Xe=_(((e,t)=>{b(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?Je():Ye();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),Ze=_(((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=b(`path`),i=n?`;`:`:`,a=Xe(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e),p=!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;a(f(p,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o){if(t.all)u.push(e+s);else return i(e+s)}return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c})){if(t.all)l.push(n);else return n}}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),Qe=_(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),$e=_(((e,t)=>{let n=b(`path`),r=Ze(),i=Qe();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),et=_(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),tt=_(((e,t)=>{t.exports=/^#!(.*)/})),nt=_(((e,t)=>{let n=tt();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),rt=_(((e,t)=>{let n=b(`fs`),r=nt();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),it=_(((e,t)=>{let n=b(`path`),r=$e(),i=et(),a=rt(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),at=_(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),ot=_(((e,t)=>{let n=b(`child_process`),r=it(),i=at();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i})),st=_(((e,t)=>{function n(e){return e==null?[]:Array.isArray(e)?e:[e]}function r(e,t,n,r){var i,a=e[t],o=~r.string.indexOf(t)?n==null||n===!0?``:String(n):typeof n==`boolean`?n:~r.boolean.indexOf(t)?n===`false`?!1:n===`true`||(e._.push((i=+n,i*0==0?i:n)),!!n):(i=+n,i*0==0?i:n);e[t]=a==null?o:Array.isArray(a)?a.concat(o):[a,o]}t.exports=function(e,t){e||=[],t||={};var i,a,o,s,c,l={_:[]},u=0,d=0,f=0,p=e.length;let m=t.alias!==void 0,h=t.unknown!==void 0,g=t.default!==void 0;if(t.alias=t.alias||{},t.string=n(t.string),t.boolean=n(t.boolean),m)for(i in t.alias)for(a=t.alias[i]=n(t.alias[i]),u=0;u<a.length;u++)(t.alias[a[u]]=a.concat(i)).splice(u,1);for(u=t.boolean.length;u-->0;)for(a=t.alias[t.boolean[u]]||[],d=a.length;d-->0;)t.boolean.push(a[d]);for(u=t.string.length;u-->0;)for(a=t.alias[t.string[u]]||[],d=a.length;d-->0;)t.string.push(a[d]);if(g){for(i in t.default)if(s=typeof t.default[i],a=t.alias[i]=t.alias[i]||[],t[s]!==void 0)for(t[s].push(i),u=0;u<a.length;u++)t[s].push(a[u])}let _=h?Object.keys(t.alias):[];for(u=0;u<p;u++){if(o=e[u],o===`--`){l._=l._.concat(e.slice(++u));break}for(d=0;d<o.length&&o.charCodeAt(d)===45;d++);if(d===0)l._.push(o);else if(o.substring(d,d+3)===`no-`){if(s=o.substring(d+3),h&&!~_.indexOf(s))return t.unknown(o);l[s]=!1}else{for(f=d+1;f<o.length&&o.charCodeAt(f)!==61;f++);for(s=o.substring(d,f),c=o.substring(++f)||u+1===p||(``+e[u+1]).charCodeAt(0)===45||e[++u],a=d===2?[s]:s,f=0;f<a.length;f++){if(s=a[f],h&&!~_.indexOf(s))return t.unknown(`-`.repeat(d)+s);r(l,s,f+1<a.length||c,t)}}}if(g)for(i in t.default)l[i]===void 0&&(l[i]=t.default[i]);if(m)for(i in l)for(a=t.alias[i]||[];a.length>0;)l[a.shift()]=l[i];return l}})),ct=_(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c})),lt=y(ot(),1),ut=y(st(),1),dt=y(ct(),1);function ft(e,t=80){let n=e=>e.variants?.length?e.variants.map(e=>e.name):[e.name],r=Math.max(0,...e.flatMap(n).map(e=>e.length))+2,i=Math.max(1,Math.floor(t/r));return e.map(e=>{let t=n(e),a=[];for(let e=0;e<t.length;e+=i)a.push(t.slice(e,e+i).map(e=>e.padEnd(r)).join(``).trimEnd());return a.map(t=>e.color(t)).join(`
56
56
  `)}).join(`
57
- `)}const{green:pt,yellow:J,blue:mt,redBright:ht,greenBright:Y}=dt.default,gt=`vue-project`,_t={boolean:[`help`,`version`,`overwrite`,`immediate`],alias:{h:`help`,v:`version`,t:`template`,i:`immediate`},string:[`template`,`package-name`]},X=[{name:`vanilla`,display:`Vanilla`,color:J,variants:[{name:`vanilla-ts`,display:`TypeScript`,color:mt},{name:`vanilla`,display:`JavaScript`,color:J}]},{name:`vue`,display:`Vue`,color:pt,variants:[{name:`vue-ts`,display:`TypeScript`,color:mt},{name:`vue`,display:`JavaScript`,color:J},{name:`custom-create-vue`,display:`Official Vue Starter ↗`,color:pt,customCommand:`npm create vue@latest TARGET_DIR`},{name:`custom-nuxt`,display:`Nuxt ↗`,link:`https://nuxt.com`,color:Y,customCommand:`npm exec nuxi init TARGET_DIR`},{name:`custom-vike-vue`,display:`Vike ↗`,link:`https://vike.dev`,color:Y,customCommand:`npm create -- vike@latest --vue TARGET_DIR`},{name:`custom-vitesse`,display:`Vitesse ↗`,link:`https://github.com/antfu-collective/vitesse`,color:Y,customCommand:`npm exec degit antfu-collective/vitesse TARGET_DIR`},{name:`custom-vitesse-lite`,display:`Vitesse Lite ↗`,link:`https://github.com/antfu-collective/vitesse-lite`,color:Y,customCommand:`npm exec degit antfu-collective/vitesse-lite TARGET_DIR`}]},{name:`lit`,display:`Lit`,color:ht,variants:[{name:`lit-ts`,display:`TypeScript`,color:mt},{name:`lit`,display:`JavaScript`,color:J}]}],vt=`\
57
+ `)}const{green:pt,yellow:J,blue:mt,cyan:ht,redBright:gt,greenBright:Y}=dt.default,_t=`vue-project`,vt={boolean:[`help`,`version`,`overwrite`,`immediate`],alias:{h:`help`,v:`version`,t:`template`,i:`immediate`},string:[`template`,`package-name`]},X=[{name:`vanilla`,display:`Vanilla`,color:J,variants:[{name:`vanilla-ts`,display:`TypeScript`,color:mt},{name:`vanilla`,display:`JavaScript`,color:J}]},{name:`vue`,display:`Vue`,color:pt,variants:[{name:`vue-ts`,display:`TypeScript`,color:mt},{name:`vue`,display:`JavaScript`,color:J},{name:`vue-dev`,display:`TypeScript + 工具链`,color:ht},{name:`custom-create-vue`,display:`Official Vue Starter ↗`,color:pt,customCommand:`npm create vue@latest TARGET_DIR`},{name:`custom-nuxt`,display:`Nuxt ↗`,link:`https://nuxt.com`,color:Y,customCommand:`npm exec nuxi init TARGET_DIR`},{name:`custom-vike-vue`,display:`Vike ↗`,link:`https://vike.dev`,color:Y,customCommand:`npm create -- vike@latest --vue TARGET_DIR`},{name:`custom-vitesse`,display:`Vitesse ↗`,link:`https://github.com/antfu-collective/vitesse`,color:Y,customCommand:`npm exec degit antfu-collective/vitesse TARGET_DIR`},{name:`custom-vitesse-lite`,display:`Vitesse Lite ↗`,link:`https://github.com/antfu-collective/vitesse-lite`,color:Y,customCommand:`npm exec degit antfu-collective/vitesse-lite TARGET_DIR`}]},{name:`lit`,display:`Lit`,color:gt,variants:[{name:`lit-ts`,display:`TypeScript`,color:mt},{name:`lit`,display:`JavaScript`,color:J}]}],yt=`\
58
58
  用法: @huberyyang/create-todo-vue [参数]... [目录]
59
59
 
60
60
  快速创建vue模板
@@ -68,4 +68,4 @@ ${t?s(`cyan`,H):``}
68
68
  --package-name 指定 package.json 的 name
69
69
 
70
70
  可用模板:
71
- ${ft(X)}`,yt=X.flatMap(e=>e.variants?.length?e.variants.map(e=>e.name):e.name),bt={_gitignore:`.gitignore`},xt=Symbol(`stdin-eof`);var St=class extends Error{step;hint;constructor(e,t){super(`需要交互才能继续:${e}`),this.step=e,this.hint=t,this.name=`NonInteractiveError`}};async function Z(e,t,n,i=r.stdin){let a=()=>{},o=new Promise(e=>{if(a=()=>e(xt),i.readableEnded){e(xt);return}i.once(`end`,a),i.once(`close`,a)});try{let r=await Promise.race([e,o]);if(r===xt)throw new St(t,n);return r}finally{i.off(`end`,a),i.off(`close`,a)}}function Ct(e){let r=n.resolve(e);for(;;){let e=n.join(r,`package.json`);if(t.existsSync(e))return e;let i=n.dirname(r);if(i===r)return;r=i}}function wt(e){let n=Ct(e);if(!n)return`unknown`;try{return JSON.parse(t.readFileSync(n,`utf-8`)).version??`unknown`}catch{return`unknown`}}function Tt(e){return e.trim().replace(/\/+$/g,``)}function Et(e){if(!e)return;let t=e.split(` `)[0].split(`/`);return{name:t[0],version:t[1]}}function Dt(){return Ve(`操作已取消`)}function Ot(e){return t.existsSync(e)?t.statSync(e).isDirectory()?`dir`:`file`:`missing`}function kt(e){let n=t.readdirSync(e);return n.length===0||n.length===1&&n[0]===`.git`}function At(e){if(!t.existsSync(e))return!1;for(let r of t.readdirSync(e))r!==`.git`&&t.rmSync(n.resolve(e,r),{recursive:!0,force:!0})}function jt(e){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e)}function Mt(e){return e.trim().toLowerCase().replace(/\s+/g,`-`).replace(/^[._]/,``).replace(/[^a-z\d\-~]+/g,`-`)}function Nt(e,t){let n=t?.name||`npm`,r=n===`yarn`&&t?.version?.startsWith(`1.`);return e.replace(/^npm create (?:-- )?/,()=>n===`bun`?`bun x create-`:n===`deno`?`deno run -A npm:create-`:n===`pnpm`?`pnpm create `:e.startsWith(`npm create -- `)?`${n} create -- `:`${n} create `).replace(`@latest`,r?``:`@latest`).replace(/^npm exec /,()=>n===`pnpm`?`pnpm dlx `:n===`yarn`&&!r?`yarn dlx `:n===`bun`?`bun x `:n===`deno`?`deno run -A npm:`:`npm exec `)}function Pt(e){let{display:t,name:n,color:r,link:i}=e,a=r(t||n);return i&&(a+=` ${(0,dt.underline)(i)}`),a}function Ft(e,r){t.mkdirSync(r,{recursive:!0});for(let i of t.readdirSync(e))It(n.resolve(e,i),n.resolve(r,i))}function It(e,n){t.statSync(e).isDirectory()?Ft(e,n):t.copyFileSync(e,n)}function Lt(e){return e===`yarn`?[e]:[e,`install`]}function Rt(e,t){return e===`yarn`?[e,t]:[e,`run`,t]}function zt([e,...t],n){let{status:r,error:i}=lt.default.sync(e,t,n);return i?(console.error(`\n${e} ${t.join(` `)} 跑不起来:${i.message}`),1):r??1}function Bt(e,t){return G.step(`使用 ${t} 安装依赖...`),zt(Lt(t),{stdio:`inherit`,cwd:e})}function Vt(e){let r=n.resolve(e);for(;;){let e=n.join(r,`.git`);if(t.existsSync(e))return e;let i=n.dirname(r);if(i===r)return;r=i}}function Ht(e){return zt([`git`,`init`],{stdio:`ignore`,cwd:e})}function Ut(e,t){return e&&!t.includes(e)?{template:void 0,invalid:!0}:{template:e,invalid:!1}}function Wt(e,t){let r=n.basename(n.resolve(t,e));return{name:r,needsPrompt:!jt(r)}}function Gt(e){return e===void 0||jt(e)}function Kt(e,t,n){return e===void 0?Wt(t,n):{name:e,needsPrompt:!1}}function qt(e,t){let{customCommand:n}=e.flatMap(e=>e.variants?.length?e.variants:e).find(e=>e.name===t)??{};return n}function Jt(e,t){let[n,...r]=e.split(` `);return{command:n,args:r.map(e=>e.replace(`TARGET_DIR`,t))}}function Yt(e,t){let n=e=>t[e]??e,r=e.filter(e=>e!==`package.json`).map(e=>({kind:e===`index.html`?`index-html`:`copy`,from:e,to:n(e)}));return r.push({kind:`package-json`,from:`package.json`,to:n(`package.json`)}),r}function Xt(e,t){return e.replace(/<title>.*?<\/title>/,`<title>${t}</title>`)}function Zt(e,t){let n=JSON.parse(e);return n.name=t,`${JSON.stringify(n,null,2)}\n`}function Qt(e,t,r,i=!1){let a=n.relative(e,t),o=i?`依赖安装完成,请执行:`:`创建完成,请执行:`;e!==t&&(o+=`\n cd ${a.includes(` `)?`"${a}"`:a}`);let s=i?Rt(r,`dev`):Lt(r);return o+=`\n ${s.join(` `)}`,o}function $t(e){let t=e.alias??{};return[...new Set([...e.boolean??[],...e.string??[],...Object.values(t),...Object.keys(t)])]}function en(e,t){let n=new Set(t);return Object.keys(e).filter(e=>e!==`_`&&!n.has(e))}function tn({templateDir:e,root:r,packageName:i,renameFiles:a}){t.mkdirSync(r,{recursive:!0});let o=Yt(t.readdirSync(e),a);for(let a of o){let o=n.join(e,a.from),s=n.join(r,a.to);switch(a.kind){case`index-html`:t.writeFileSync(s,Xt(t.readFileSync(o,`utf-8`),i));break;case`package-json`:t.writeFileSync(s,Zt(t.readFileSync(o,`utf-8`),i));break;case`copy`:It(o,s)}}}const nn={intro:e=>He(e),outro:e=>Ue(e),write:e=>void r.stdout.write(e)};function rn(e=nn){let t=!1,n=!1;return{open(r){e.intro(r),t=!0,n=!0},close(n=``){t&&(t=!1,e.outro(n))},markClosed(){t=!1},isOpen(){return t},restoreCursor(){n&&e.write(`\x1B[?25h`)}}}const an=o(import.meta.url),on=n.dirname(an),sn=n.resolve(an,`../..`),cn=Ge(),Q=rn();function $(){return Dt(),Q.markClosed(),1}async function ln(e=r.argv.slice(2)){let i=r.cwd(),a=(0,ut.default)(e,structuredClone(_t)),o=a._[0]?Tt(String(a._[0])):void 0,s=a.overwrite,c=a.template,l=a.immediate,u=a[`package-name`];if(a.help)return console.log(vt),0;if(a.version)return console.log(wt(on)),0;let d=en(a,$t(_t));if(d.length)return console.error(`未知参数:${d.map(e=>`--${e}`).join(`, `)}`),console.error(`运行 create-todo-vue --help 查看可用参数`),1;if(!Gt(u))return console.error(`无效的 package.json name:${u}`),console.error(`包名规则见 https://docs.npmjs.com/cli/configuring-npm/package-json#name`),1;Q.open(`create-todo-vue`);let f=Et(r.env.npm_config_user_agent),p=o;if(!p){let e=await Z(qe({message:`项目名称:`,defaultValue:gt,placeholder:gt,validate(e){return!e||Tt(e).length>0?void 0:`项目名称无效`}}),`项目名称`,`把项目名作为位置参数传入,如 create-todo-vue my-app`);if(P(e))return $();p=Tt(e)}let m=Kt(u,p,i),h=n.resolve(i,p),g=Ot(h);if(g===`file`){let e=!!s;if(!e){let t=await Z(q({message:`${p} 已存在且是一个文件,请选择如何继续`,options:[{label:`取消操作`,value:`no`},{label:`删除该文件并继续`,value:`yes`}]}),`${p} 已存在且是一个文件`,`--overwrite(会删除该文件)`);if(P(t))return $();e=t===`yes`}if(!e)return $();t.rmSync(h,{force:!0})}else if(g===`dir`&&!kt(h)){let e=s?`yes`:void 0;if(!e){let t=await Z(q({message:`${p===`.`?`当前目录`:`目标目录${p}`} 不为空,请选择如何继续`,options:[{label:`取消操作`,value:`no`},{label:`删除现有文件并继续`,value:`yes`},{label:`忽略文件并继续`,value:`ignore`}]}),`${p===`.`?`当前目录`:`目标目录${p}`} 不为空`,`--overwrite(会清空该目录,.git 保留)`);if(P(t))return $();e=t}switch(e){case`yes`:At(h);break;case`no`:return $()}}let _=m.name;if(m.needsPrompt){let e=await Z(qe({message:`请输入package.json name`,defaultValue:Mt(_),placeholder:Mt(_),validate(e){if(e&&!jt(e))return`无效的package.json name`}}),`package.json name`,`--package-name <name>`);if(P(e))return $();_=e}let{template:v,invalid:y}=Ut(c,yt),b=v;if(!b){let e=await Z(q({message:y?`${c}不是有效的模板名,请从以下选取:`:`选择模板`,options:X.map(e=>{let{color:t,name:n,display:r}=e;return{label:t(r||n),value:e}})}),`选择模板`,`-t <模板名>,可用模板见 --help`);if(P(e))return $();if(b=e.name,e.variants?.length){let t=await Z(q({message:`选择预设`,options:e.variants.map(e=>{let{name:t,customCommand:n}=e,r=n?Nt(n,f).replace(/ TARGET_DIR$/,``):void 0;return{label:Pt(e),value:t,hint:r}})}),`选择预设`,`-t <模板名>,可用模板见 --help`);if(P(t))return $();b=t}}let x=f?.name||`npm`,S=qt(X,b);if(S){let{command:e,args:t}=Jt(Nt(S,f),p);Q.close(`转交给 ${e}`);let{status:n}=lt.default.sync(e,t,{stdio:`inherit`});return n??0}if(cn.start(`正在${h}中创建模板`),tn({templateDir:n.resolve(sn,`template-${b}`),root:h,packageName:_,renameFiles:bt}),cn.stop(`模板创建成功`),Vt(h))G.info(`目标目录已在 git 仓库中,跳过 git init`);else{let e=Ht(h);e!==0&&G.warn(`git 仓库初始化失败(git 退出码 ${e}),项目已创建`)}let C=l;if(C===void 0){let e=await Z(Be({message:`是否立即使用${x}安装依赖?`}),`是否立即安装依赖`,`-i(装)或 --no-immediate(不装)`);if(P(e))return $();C=e}if(C){let e=Bt(h,x);if(e!==0)return G.warn(`项目已创建,但依赖没装上。${x} 退出码 ${e}`),G.info(Qt(i,h,x)),Q.close(`依赖安装失败`),e}return G.info(Qt(i,h,x,C)),Q.close(`程序结束`),0}async function un(){r.exitCode=1;try{r.exitCode=await ln()}catch(e){if(e instanceof St){G.error(`需要交互才能继续,但输入已结束(非 TTY,或输入已读完)\n这一步在问:${e.step}\n非交互环境请改用:${e.hint}`),Dt(),Q.markClosed();return}cn.error(`创建失败`),G.error(e instanceof Error?e.message:String(e)),Q.close(`已中止`),e instanceof Error&&e.stack&&console.error(e.stack),r.exitCode=1}finally{Q.close(),Q.restoreCursor()}}export{ln as main,un as runCli};
71
+ ${ft(X)}`,bt=X.flatMap(e=>e.variants?.length?e.variants.map(e=>e.name):e.name),xt={_gitignore:`.gitignore`},St=Symbol(`stdin-eof`);var Ct=class extends Error{step;hint;constructor(e,t){super(`需要交互才能继续:${e}`),this.step=e,this.hint=t,this.name=`NonInteractiveError`}};async function Z(e,t,n,i=r.stdin){let a=()=>{},o=new Promise(e=>{if(a=()=>e(St),i.readableEnded){e(St);return}i.once(`end`,a),i.once(`close`,a)});try{let r=await Promise.race([e,o]);if(r===St)throw new Ct(t,n);return r}finally{i.off(`end`,a),i.off(`close`,a)}}function wt(e){let r=n.resolve(e);for(;;){let e=n.join(r,`package.json`);if(t.existsSync(e))return e;let i=n.dirname(r);if(i===r)return;r=i}}function Tt(e){let n=wt(e);if(!n)return`unknown`;try{return JSON.parse(t.readFileSync(n,`utf-8`)).version??`unknown`}catch{return`unknown`}}function Et(e){return e.trim().replace(/\/+$/g,``)}function Dt(e){if(!e)return;let t=e.split(` `)[0].split(`/`);return{name:t[0],version:t[1]}}function Ot(){return Ve(`操作已取消`)}function kt(e){return t.existsSync(e)?t.statSync(e).isDirectory()?`dir`:`file`:`missing`}function At(e){let n=t.readdirSync(e);return n.length===0||n.length===1&&n[0]===`.git`}function jt(e){if(!t.existsSync(e))return!1;for(let r of t.readdirSync(e))r!==`.git`&&t.rmSync(n.resolve(e,r),{recursive:!0,force:!0})}function Mt(e){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e)}function Nt(e){return e.trim().toLowerCase().replace(/\s+/g,`-`).replace(/^[._]/,``).replace(/[^a-z\d\-~]+/g,`-`)}function Pt(e,t){let n=t?.name||`npm`,r=n===`yarn`&&t?.version?.startsWith(`1.`);return e.replace(/^npm create (?:-- )?/,()=>n===`bun`?`bun x create-`:n===`deno`?`deno run -A npm:create-`:n===`pnpm`?`pnpm create `:e.startsWith(`npm create -- `)?`${n} create -- `:`${n} create `).replace(`@latest`,r?``:`@latest`).replace(/^npm exec /,()=>n===`pnpm`?`pnpm dlx `:n===`yarn`&&!r?`yarn dlx `:n===`bun`?`bun x `:n===`deno`?`deno run -A npm:`:`npm exec `)}function Ft(e){let{display:t,name:n,color:r,link:i}=e,a=r(t||n);return i&&(a+=` ${(0,dt.underline)(i)}`),a}function It(e,r){t.mkdirSync(r,{recursive:!0});for(let i of t.readdirSync(e))Lt(n.resolve(e,i),n.resolve(r,i))}function Lt(e,n){t.statSync(e).isDirectory()?It(e,n):t.copyFileSync(e,n)}function Rt(e){return e===`yarn`?[e]:[e,`install`]}function zt(e,t){return e===`yarn`?[e,t]:[e,`run`,t]}function Bt([e,...t],n){let{status:r,error:i}=lt.default.sync(e,t,n);return i?(console.error(`\n${e} ${t.join(` `)} 跑不起来:${i.message}`),1):r??1}function Vt(e,t){return G.step(`使用 ${t} 安装依赖...`),Bt(Rt(t),{stdio:`inherit`,cwd:e})}function Ht(e){let r=n.resolve(e);for(;;){let e=n.join(r,`.git`);if(t.existsSync(e))return e;let i=n.dirname(r);if(i===r)return;r=i}}function Ut(e){return Bt([`git`,`init`],{stdio:`ignore`,cwd:e})}function Wt(e,t){return e&&!t.includes(e)?{template:void 0,invalid:!0}:{template:e,invalid:!1}}function Gt(e,t){let r=n.basename(n.resolve(t,e));return{name:r,needsPrompt:!Mt(r)}}function Kt(e){return e===void 0||Mt(e)}function qt(e,t,n){return e===void 0?Gt(t,n):{name:e,needsPrompt:!1}}function Jt(e,t){let{customCommand:n}=e.flatMap(e=>e.variants?.length?e.variants:e).find(e=>e.name===t)??{};return n}function Yt(e,t){let[n,...r]=e.split(` `);return{command:n,args:r.map(e=>e.replace(`TARGET_DIR`,t))}}function Xt(e,t){let n=e=>t[e]??e,r=e.filter(e=>e!==`package.json`).map(e=>({kind:e===`index.html`?`index-html`:`copy`,from:e,to:n(e)}));return r.push({kind:`package-json`,from:`package.json`,to:n(`package.json`)}),r}function Zt(e,t){return e.replace(/<title>.*?<\/title>/,`<title>${t}</title>`)}function Qt(e,t){let n=JSON.parse(e);return n.name=t,`${JSON.stringify(n,null,2)}\n`}function $t(e,t,r,i=!1){let a=n.relative(e,t),o=i?`依赖安装完成,请执行:`:`创建完成,请执行:`;e!==t&&(o+=`\n cd ${a.includes(` `)?`"${a}"`:a}`);let s=i?zt(r,`dev`):Rt(r);return o+=`\n ${s.join(` `)}`,o}function en(e){let t=e.alias??{};return[...new Set([...e.boolean??[],...e.string??[],...Object.values(t),...Object.keys(t)])]}function tn(e,t){let n=new Set(t);return Object.keys(e).filter(e=>e!==`_`&&!n.has(e))}function nn({templateDir:e,root:r,packageName:i,renameFiles:a}){t.mkdirSync(r,{recursive:!0});let o=Xt(t.readdirSync(e),a);for(let a of o){let o=n.join(e,a.from),s=n.join(r,a.to);switch(a.kind){case`index-html`:t.writeFileSync(s,Zt(t.readFileSync(o,`utf-8`),i));break;case`package-json`:t.writeFileSync(s,Qt(t.readFileSync(o,`utf-8`),i));break;case`copy`:Lt(o,s)}}}const rn={intro:e=>He(e),outro:e=>Ue(e),write:e=>void r.stdout.write(e)};function an(e=rn){let t=!1,n=!1;return{open(r){e.intro(r),t=!0,n=!0},close(n=``){t&&(t=!1,e.outro(n))},markClosed(){t=!1},isOpen(){return t},restoreCursor(){n&&e.write(`\x1B[?25h`)}}}const on=o(import.meta.url),sn=n.dirname(on),cn=n.resolve(on,`../..`),ln=Ge(),Q=an();function $(){return Ot(),Q.markClosed(),1}async function un(e=r.argv.slice(2)){let i=r.cwd(),a=(0,ut.default)(e,structuredClone(vt)),o=a._[0]?Et(String(a._[0])):void 0,s=a.overwrite,c=a.template,l=a.immediate,u=a[`package-name`];if(a.help)return console.log(yt),0;if(a.version)return console.log(Tt(sn)),0;let d=tn(a,en(vt));if(d.length)return console.error(`未知参数:${d.map(e=>`--${e}`).join(`, `)}`),console.error(`运行 create-todo-vue --help 查看可用参数`),1;if(!Kt(u))return console.error(`无效的 package.json name:${u}`),console.error(`包名规则见 https://docs.npmjs.com/cli/configuring-npm/package-json#name`),1;Q.open(`create-todo-vue`);let f=Dt(r.env.npm_config_user_agent),p=o;if(!p){let e=await Z(qe({message:`项目名称:`,defaultValue:_t,placeholder:_t,validate(e){return!e||Et(e).length>0?void 0:`项目名称无效`}}),`项目名称`,`把项目名作为位置参数传入,如 create-todo-vue my-app`);if(P(e))return $();p=Et(e)}let m=qt(u,p,i),h=n.resolve(i,p),g=kt(h);if(g===`file`){let e=!!s;if(!e){let t=await Z(q({message:`${p} 已存在且是一个文件,请选择如何继续`,options:[{label:`取消操作`,value:`no`},{label:`删除该文件并继续`,value:`yes`}]}),`${p} 已存在且是一个文件`,`--overwrite(会删除该文件)`);if(P(t))return $();e=t===`yes`}if(!e)return $();t.rmSync(h,{force:!0})}else if(g===`dir`&&!At(h)){let e=s?`yes`:void 0;if(!e){let t=await Z(q({message:`${p===`.`?`当前目录`:`目标目录${p}`} 不为空,请选择如何继续`,options:[{label:`取消操作`,value:`no`},{label:`删除现有文件并继续`,value:`yes`},{label:`忽略文件并继续`,value:`ignore`}]}),`${p===`.`?`当前目录`:`目标目录${p}`} 不为空`,`--overwrite(会清空该目录,.git 保留)`);if(P(t))return $();e=t}switch(e){case`yes`:jt(h);break;case`no`:return $()}}let _=m.name;if(m.needsPrompt){let e=await Z(qe({message:`请输入package.json name`,defaultValue:Nt(_),placeholder:Nt(_),validate(e){if(e&&!Mt(e))return`无效的package.json name`}}),`package.json name`,`--package-name <name>`);if(P(e))return $();_=e}let{template:v,invalid:y}=Wt(c,bt),b=v;if(!b){let e=await Z(q({message:y?`${c}不是有效的模板名,请从以下选取:`:`选择模板`,options:X.map(e=>{let{color:t,name:n,display:r}=e;return{label:t(r||n),value:e}})}),`选择模板`,`-t <模板名>,可用模板见 --help`);if(P(e))return $();if(b=e.name,e.variants?.length){let t=await Z(q({message:`选择预设`,options:e.variants.map(e=>{let{name:t,customCommand:n}=e,r=n?Pt(n,f).replace(/ TARGET_DIR$/,``):void 0;return{label:Ft(e),value:t,hint:r}})}),`选择预设`,`-t <模板名>,可用模板见 --help`);if(P(t))return $();b=t}}let x=f?.name||`npm`,S=Jt(X,b);if(S){let{command:e,args:t}=Yt(Pt(S,f),p);Q.close(`转交给 ${e}`);let{status:n}=lt.default.sync(e,t,{stdio:`inherit`});return n??0}if(ln.start(`正在${h}中创建模板`),nn({templateDir:n.resolve(cn,`template-${b}`),root:h,packageName:_,renameFiles:xt}),ln.stop(`模板创建成功`),Ht(h))G.info(`目标目录已在 git 仓库中,跳过 git init`);else{let e=Ut(h);e!==0&&G.warn(`git 仓库初始化失败(git 退出码 ${e}),项目已创建`)}let C=l;if(C===void 0){let e=await Z(Be({message:`是否立即使用${x}安装依赖?`}),`是否立即安装依赖`,`-i(装)或 --no-immediate(不装)`);if(P(e))return $();C=e}if(C){let e=Vt(h,x);if(e!==0)return G.warn(`项目已创建,但依赖没装上。${x} 退出码 ${e}`),G.info($t(i,h,x)),Q.close(`依赖安装失败`),e}return G.info($t(i,h,x,C)),Q.close(`程序结束`),0}async function dn(){r.exitCode=1;try{r.exitCode=await un()}catch(e){if(e instanceof Ct){G.error(`需要交互才能继续,但输入已结束(非 TTY,或输入已读完)\n这一步在问:${e.step}\n非交互环境请改用:${e.hint}`),Ot(),Q.markClosed();return}ln.error(`创建失败`),G.error(e instanceof Error?e.message:String(e)),Q.close(`已中止`),e instanceof Error&&e.stack&&console.error(e.stack),r.exitCode=1}finally{Q.close(),Q.restoreCursor()}}export{un as main,dn as runCli};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@huberyyang/create-todo-vue",
3
3
  "type": "module",
4
- "version": "1.7.0",
4
+ "version": "1.9.0",
5
5
  "packageManager": "pnpm@11.25.0",
6
6
  "description": "💡 create vue projects with awesome templates",
7
7
  "author": "HuberyYang",
@@ -12,6 +12,6 @@
12
12
  "lit": "^3.3.2"
13
13
  },
14
14
  "devDependencies": {
15
- "vite": "^7.3.1"
15
+ "vite": "^8.2.2"
16
16
  }
17
17
  }
@@ -13,6 +13,6 @@
13
13
  },
14
14
  "devDependencies": {
15
15
  "typescript": "~5.9.3",
16
- "vite": "^7.3.1"
16
+ "vite": "^8.2.2"
17
17
  }
18
18
  }
@@ -9,6 +9,6 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "devDependencies": {
12
- "vite": "^7.3.1"
12
+ "vite": "^8.2.2"
13
13
  }
14
14
  }
@@ -10,6 +10,6 @@
10
10
  },
11
11
  "devDependencies": {
12
12
  "typescript": "~5.9.3",
13
- "vite": "^7.3.1"
13
+ "vite": "^8.2.2"
14
14
  }
15
15
  }
@@ -12,7 +12,7 @@
12
12
  "vue": "^3.5.27"
13
13
  },
14
14
  "devDependencies": {
15
- "@vitejs/plugin-vue": "^6.0.3",
16
- "vite": "^7.3.1"
15
+ "@vitejs/plugin-vue": "^6.0.8",
16
+ "vite": "^8.2.2"
17
17
  }
18
18
  }
@@ -0,0 +1 @@
1
+ pnpm exec commitlint --edit "$1"
@@ -0,0 +1 @@
1
+ pnpm exec lint-staged
@@ -0,0 +1,3 @@
1
+ {
2
+ "recommendations": ["Vue.volar"]
3
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ // Disable the default formatter, use eslint instead
3
+ "prettier.enable": false,
4
+ "editor.formatOnSave": false,
5
+
6
+ // Auto fix
7
+ "editor.codeActionsOnSave": {
8
+ "source.fixAll.eslint": "explicit",
9
+ "source.organizeImports": "never"
10
+ },
11
+
12
+ // Silent the stylistic rules in your IDE, but still auto fix them
13
+ "eslint.rules.customizations": [
14
+ { "rule": "style/*", "severity": "off", "fixable": true },
15
+ { "rule": "format/*", "severity": "off", "fixable": true },
16
+ { "rule": "*-indent", "severity": "off", "fixable": true },
17
+ { "rule": "*-spacing", "severity": "off", "fixable": true },
18
+ { "rule": "*-spaces", "severity": "off", "fixable": true },
19
+ { "rule": "*-order", "severity": "off", "fixable": true },
20
+ { "rule": "*-dangle", "severity": "off", "fixable": true },
21
+ { "rule": "*-newline", "severity": "off", "fixable": true },
22
+ { "rule": "*quotes", "severity": "off", "fixable": true },
23
+ { "rule": "*semi", "severity": "off", "fixable": true }
24
+ ],
25
+
26
+ // Enable eslint for all supported languages
27
+ "eslint.validate": [
28
+ "javascript",
29
+ "javascriptreact",
30
+ "typescript",
31
+ "typescriptreact",
32
+ "vue",
33
+ "html",
34
+ "markdown",
35
+ "json",
36
+ "jsonc",
37
+ "yaml",
38
+ "toml",
39
+ "xml",
40
+ "gql",
41
+ "graphql",
42
+ "astro",
43
+ "svelte",
44
+ "css",
45
+ "less",
46
+ "scss",
47
+ "pcss",
48
+ "postcss"
49
+ ]
50
+ }
@@ -0,0 +1 @@
1
+ # vue-dev
@@ -0,0 +1,24 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ # .vscode/*
17
+ # !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?