create-bubbles 0.1.1 → 0.1.2

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/dist/index.js CHANGED
@@ -11,7 +11,7 @@ Available templates:
11
11
  ${s.vue(`vue-rsbuild-biome vue`)}
12
12
  ${s.vue(`vue-rolldown-oxc vue`)}
13
13
  ${s.react(`react-rsbuild-biome react`)}
14
- ${s.react(`react-rolldown-oxc react`)}`,d=e=>e.trim().replace(/\/+$/g,``),f=e=>{if(!e)return;let t=e.split(` `)[0].split(`/`);return{name:t[0],version:t[1]}},p=t=>{let n=e.readdirSync(t);return n.length===0||n.length===1&&n[0]===`.git`},m=async n=>{await Promise.all(e.readdirSync(n).filter(e=>e!==`.git`).map(r=>e.promises.rm(t.resolve(n,r),{recursive:!0,force:!0})))},h=e=>/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e),g=e=>e.trim().toLowerCase().replace(/\s+/g,`-`).replace(/^[._]/,``).replace(/[^a-z\d\-~]+g/,`-`),_=[{name:`vue`,display:`Vue`,color:s.vue,variants:[{name:`vue-rsbuild-biome`,display:`rsbuild + biome`,color:s.vue},{name:`vue-rolldown-oxc`,display:`rolldown + oxc`,color:s.vue}]},{name:`react`,display:`React`,color:s.react,variants:[{name:`react-rsbuild-biome`,display:`rsbuild-biome`,color:s.react}]},{name:`others`,display:`Others`,color:s.others,variants:[{name:`create-eletron-vite`,display:`Electron ↗`,color:s.others,customCommand:`pnpm create electron-vite@latest TARGET_DIR`}]}],v=_.map(e=>e.variants.map(e=>`${e.name}`)).reduce((e,t)=>e.concat(t),[]),y=(e,t)=>{console.log(`💦customCommand`,e,t);let n=t?t.name:`npm`,r=n===`yarn`&&t?.version.startsWith(`1.`);return e.replace(/^npm create (?:-- )?/,()=>n===`bun`?`bun x 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`:`npm exec`)},b={_gitignore:`.gitignore`},x=(n,r)=>{e.mkdirSync(r,{recursive:!0});for(let i of e.readdirSync(n)){let e=t.resolve(n,i),a=t.resolve(r,i);S(e,a)}},S=(t,n)=>{e.statSync(t).isDirectory()?x(t,n):e.copyFileSync(t,n)},C=(t,n)=>{let r=e.readFileSync(t,`utf-8`);e.writeFileSync(t,n(r),`utf-8`)},w=(e,n)=>{C(t.resolve(e,`package.json`),e=>e.replace(/"@vitejs\/plugin-react": ".+?"/,`"@vitejs/plugin-react-swc": "^4.0.1"`)),C(t.resolve(e,`vite.config.${n?`ts`:`js`}`),e=>e.replace(`@vitejs/plugin-react`,`@vitejs/plugin-react-swc`))};(async()=>{console.log(c);let i=c._[0]?d(c._[0]):void 0,x=c.template,C=c.overwrite,T=`bubbles-project`;if(c.help){console.log(u);return}let E=f(process.env.npm_config_user_agent),D=()=>n.cancel(`Operation cancelled`),O=i;if(!O){let e=await n.text({message:`Project name`,defaultValue:T,placeholder:T,validate:e=>e.length===0||d(e).length>0?void 0:`Invalid project name`});if(n.isCancel(e))return D();O=d(e)}if(e.existsSync(O)&&!p(O)){let e=C?`yes`:await n.select({message:O===`.`?`Current directory`:`Target directory "${O}" is not empty. Please choose how to proceed:`,options:[{label:`${s.vue(`Cancel operation`)}`,value:`no`},{label:`Remove existing files and continue`,value:`yes`},{label:`Ignore files and continue`,value:`ignore`}]});if(n.isCancel(e))return D();switch(e){case`yes`:m(O);break;case`no`:D();return}}let k=t.basename(t.resolve(O));if(!h(k)){let e=await n.text({message:`Package name is invalid. please input again:`,defaultValue:g(k),placeholder:g(k),validate(e){if(!h(e))return`Invalid package.json name`}});if(n.isCancel(e))return D();k=e}let A=x,j=!1;if(x&&!v.includes(x)&&(A=void 0,j=!0),!A){let e=await n.select({message:j?`"${x}" isn't a valia template. please choose from below:`:`Select a framework`,options:_.map(e=>{let t=e.color;return{label:t(e.display),value:e}})});if(n.isCancel(e))return D();console.log(`💦pkgInfo`,E);let t=await n.select({message:`Select a variant:`,options:e.variants.map(e=>{let t=e.color,n=e.customCommand?y(e.customCommand,E).replace(/ TARGET_DIR$/,``):void 0;return{label:t(e.display||e.name),value:e.name,hint:n}})});if(n.isCancel(t))return D();A=t}let M=t.join(l,O);e.mkdirSync(M,{recursive:!0});let N=!1;A.includes(`-swc`)&&(N=!0,A=A.replace(`-swc`,``));let P=E?E.name:`npm`,{customCommand:F}=_.flatMap(e=>e.variants).find(e=>e.name===A)??{};if(F){let[e,...t]=y(F,E).split(` `),n=t.map(e=>e.replace(`TARGET_DIR`,()=>O));console.log(`💦replacedArgs`,n);let{status:r}=a.sync(e,n,{stdio:`inherit`});process.exit(r??0)}n.log.step(`scaffolding project in ${M}...`);let I=t.resolve(o(import.meta.url),`../..`,`template-${A}`),L=(n,r)=>{let i=t.join(M,b[n]??n);r?e.writeFileSync(i,r):S(t.join(I,n),i)},R=e.readdirSync(I);for(let e of R)e!==`package.json`&&L(e);let z=JSON.parse(e.readFileSync(t.join(I,`package.json`),`utf-8`));z.name=k,L(`package.json`,`${JSON.stringify(z,null,2)}\n`),N&&w(M,A.endsWith(`-ts`));let B=``,V=t.relative(l,M);switch(console.log(`💦cwd`,l),console.log(`💦root`,M),console.log(`💦cdProjectName`,V),B+=`Done. Now run:
14
+ ${s.react(`react-rolldown-oxc react`)}`,d=e=>e.trim().replace(/\/+$/g,``),f=e=>{if(!e)return;let t=e.split(` `)[0].split(`/`);return{name:t[0],version:t[1]}},p=t=>{let n=e.readdirSync(t);return n.length===0||n.length===1&&n[0]===`.git`},m=async n=>{await Promise.all(e.readdirSync(n).filter(e=>e!==`.git`).map(r=>e.promises.rm(t.resolve(n,r),{recursive:!0,force:!0})))},h=e=>/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e),g=e=>e.trim().toLowerCase().replace(/\s+/g,`-`).replace(/^[._]/,``).replace(/[^a-z\d\-~]+g/,`-`),_=[{name:`vue`,display:`Vue`,color:s.vue,variants:[{name:`vue-rsbuild-biome`,display:`rsbuild + biome`,color:s.vue},{name:`vue-rolldown-oxc`,display:`rolldown + oxc`,color:s.vue}]},{name:`react`,display:`React`,color:s.react,variants:[{name:`react-rsbuild-biome`,display:`rsbuild-biome`,color:s.react}]},{name:`others`,display:`Others`,color:s.others,variants:[{name:`create-eletron-vite`,display:`Electron ↗`,color:s.others,customCommand:`pnpm create electron-vite@latest TARGET_DIR`}]}],v=_.map(e=>e.variants.map(e=>`${e.name}`)).reduce((e,t)=>e.concat(t),[]),y=(e,t)=>{console.log(`💦customCommand`,e,t);let n=t?t.name:`npm`,r=n===`yarn`&&t?.version.startsWith(`1.`);return e.replace(/^npm create (?:-- )?/,()=>n===`bun`?`bun x 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`:`npm exec`)},b={_gitignore:`.gitignore`},x=(n,r)=>{e.mkdirSync(r,{recursive:!0});for(let i of e.readdirSync(n))S(t.resolve(n,i),t.resolve(r,i))},S=(t,n)=>{e.statSync(t).isDirectory()?x(t,n):e.copyFileSync(t,n)},C=(t,n)=>{let r=e.readFileSync(t,`utf-8`);e.writeFileSync(t,n(r),`utf-8`)},w=(e,n)=>{C(t.resolve(e,`package.json`),e=>e.replace(/"@vitejs\/plugin-react": ".+?"/,`"@vitejs/plugin-react-swc": "^4.0.1"`)),C(t.resolve(e,`vite.config.${n?`ts`:`js`}`),e=>e.replace(`@vitejs/plugin-react`,`@vitejs/plugin-react-swc`))};(async()=>{console.log(c);let i=c._[0]?d(c._[0]):void 0,x=c.template,C=c.overwrite,T=`bubbles-project`;if(c.help){console.log(u);return}let E=f(process.env.npm_config_user_agent),D=()=>n.cancel(`Operation cancelled`),O=i;if(!O){let e=await n.text({message:`Project name`,defaultValue:T,placeholder:T,validate:e=>e.length===0||d(e).length>0?void 0:`Invalid project name`});if(n.isCancel(e))return D();O=d(e)}if(e.existsSync(O)&&!p(O)){let e=C?`yes`:await n.select({message:O===`.`?`Current directory`:`Target directory "${O}" is not empty. Please choose how to proceed:`,options:[{label:`${s.vue(`Cancel operation`)}`,value:`no`},{label:`Remove existing files and continue`,value:`yes`},{label:`Ignore files and continue`,value:`ignore`}]});if(n.isCancel(e))return D();switch(e){case`yes`:m(O);break;case`no`:D();return}}let k=t.basename(t.resolve(O));if(!h(k)){let e=await n.text({message:`Package name is invalid. please input again:`,defaultValue:g(k),placeholder:g(k),validate(e){if(!h(e))return`Invalid package.json name`}});if(n.isCancel(e))return D();k=e}let A=x,j=!1;if(x&&!v.includes(x)&&(A=void 0,j=!0),!A){let e=await n.select({message:j?`"${x}" isn't a valia template. please choose from below:`:`Select a framework`,options:_.map(e=>{let t=e.color;return{label:t(e.display),value:e}})});if(n.isCancel(e))return D();console.log(`💦pkgInfo`,E);let t=await n.select({message:`Select a variant:`,options:e.variants.map(e=>{let t=e.color,n=e.customCommand?y(e.customCommand,E).replace(/ TARGET_DIR$/,``):void 0;return{label:t(e.display||e.name),value:e.name,hint:n}})});if(n.isCancel(t))return D();A=t}let M=t.join(l,O);e.mkdirSync(M,{recursive:!0});let N=!1;A.includes(`-swc`)&&(N=!0,A=A.replace(`-swc`,``));let P=E?E.name:`npm`,{customCommand:F}=_.flatMap(e=>e.variants).find(e=>e.name===A)??{};if(F){let[e,...t]=y(F,E).split(` `),n=t.map(e=>e.replace(`TARGET_DIR`,()=>O));console.log(`💦replacedArgs`,n);let{status:r}=a.sync(e,n,{stdio:`inherit`});process.exit(r??0)}n.log.step(`scaffolding project in ${M}...`);let I=t.resolve(o(import.meta.url),`../..`,`template-${A}`),L=(n,r)=>{let i=t.join(M,b[n]??n);r?e.writeFileSync(i,r):S(t.join(I,n),i)},R=e.readdirSync(I);for(let e of R)e!==`package.json`&&L(e);let z=JSON.parse(e.readFileSync(t.join(I,`package.json`),`utf-8`));z.name=k,L(`package.json`,`${JSON.stringify(z,null,2)}\n`),N&&w(M,A.endsWith(`-ts`));let B=``,V=t.relative(l,M);switch(console.log(`💦cwd`,l),console.log(`💦root`,M),console.log(`💦cdProjectName`,V),B+=`Done. Now run:
15
15
  `,M!==l&&(B+=`\n cd ${V.includes(` `)?`"${V}"`:V} `),P){case`yarn`:B+=`
16
16
  yarn`,B+=`
17
17
  yarn dev`;break;default:B+=r([`pink`,`white`])(`\n ${P} install`),B+=r([`pink`,`white`])(`\n ${P} run dev`);break}n.outro(B)})().catch(e=>{console.error(`💦`,e)});export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-bubbles",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "author": "bubbles plant",
6
6
  "bin": {
@@ -4,8 +4,7 @@
4
4
  "trailingComma": "all",
5
5
  "printWidth": 100,
6
6
  "proseWrap": "never",
7
- "importOrder": ["^(react|react-dom)$", "^([a-z]|@[a-z])", "", ".*"],
8
- "plugins": ["@ianvs/prettier-plugin-sort-imports"],
7
+
9
8
  "overrides": [
10
9
  {
11
10
  "files": ".prettierrc",
@@ -74,7 +74,20 @@
74
74
  "enabled": true,
75
75
  "actions": {
76
76
  "source": {
77
- "organizeImports": "off"
77
+ "organizeImports": {
78
+ "level": "on",
79
+ "options": {
80
+ "identifierOrder": "natural",
81
+ "groups": [
82
+ [":NODE:", ":BUN:"],
83
+ ":BLANK_LINE:",
84
+ ["react", "react-dom/**", "react-dom", "react-router", "react-router-dom"],
85
+ ["vue", "vue-router"],
86
+ ":BLANK_LINE:",
87
+ ["@/**", "**"]
88
+ ]
89
+ }
90
+ }
78
91
  }
79
92
  }
80
93
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "critical-care-engineering-center",
2
+ "name": "bubbles-project",
3
3
  "private": true,
4
4
  "version": "1.0.0",
5
5
  "scripts": {
@@ -16,28 +16,27 @@
16
16
  "@ant-design/icons-vue": "^7.0.1",
17
17
  "ahooks": "^3.9.5",
18
18
  "alova": "^3.3.4",
19
- "antd": "^5.27.3",
19
+ "antd": "^5.27.5",
20
20
  "dayjs": "^1.11.18",
21
- "react": "^19.1.1",
22
- "react-dom": "^19.1.1",
23
- "react-router": "^7.8.2",
21
+ "react": "^19.2.0",
22
+ "react-dom": "^19.2.0",
23
+ "react-router": "^7.9.4",
24
24
  "zustand": "^5.0.8"
25
25
  },
26
26
  "devDependencies": {
27
- "@biomejs/biome": "^2.2.4",
28
- "@commitlint/config-conventional": "^19.8.1",
29
- "@ianvs/prettier-plugin-sort-imports": "^4.7.0",
30
- "@rsbuild/core": "^1.5.6",
31
- "@rsbuild/plugin-react": "^1.4.0",
27
+ "@biomejs/biome": "^2.2.6",
28
+ "@commitlint/config-conventional": "^20.0.0",
29
+ "@rsbuild/core": "^1.5.17",
30
+ "@rsbuild/plugin-react": "^1.4.1",
32
31
  "@rsbuild/plugin-sass": "^1.4.0",
33
32
  "@rsbuild/plugin-svgr": "^1.2.2",
34
- "@types/react": "^19.1.12",
35
- "@types/react-dom": "^19.1.9",
36
- "@unocss/postcss": "^66.5.1",
37
- "lefthook": "^1.13.0",
33
+ "@types/react": "^19.2.2",
34
+ "@types/react-dom": "^19.2.2",
35
+ "@unocss/postcss": "^66.5.4",
36
+ "lefthook": "^1.13.6",
38
37
  "prettier": "^3.6.2",
39
- "typescript": "^5.9.2",
40
- "unocss": "^66.5.1",
41
- "unplugin-auto-import": "^20.1.0"
38
+ "typescript": "^5.9.3",
39
+ "unocss": "^66.5.4",
40
+ "unplugin-auto-import": "^20.2.0"
42
41
  }
43
42
  }
@@ -1,9 +1,9 @@
1
1
  import { defineConfig } from '@rsbuild/core'
2
2
  import { pluginReact } from '@rsbuild/plugin-react'
3
- import AutoImport from 'unplugin-auto-import/rspack'
4
- import UnoCSS from '@unocss/postcss'
5
3
  import { pluginSass } from '@rsbuild/plugin-sass'
6
4
  import { pluginSvgr } from '@rsbuild/plugin-svgr'
5
+ import UnoCSS from '@unocss/postcss'
6
+ import AutoImport from 'unplugin-auto-import/rspack'
7
7
 
8
8
  export default defineConfig({
9
9
  html: {
@@ -1,9 +1,8 @@
1
- import { RouterProvider } from 'react-router';
2
-
3
- import router from './router';
1
+ import { RouterProvider } from 'react-router'
2
+ import router from './router'
4
3
 
5
4
  const App = () => {
6
- return <RouterProvider router={router} />;
7
- };
5
+ return <RouterProvider router={router} />
6
+ }
8
7
 
9
- export default App;
8
+ export default App
@@ -2,10 +2,8 @@ import React, { Suspense } from 'react'
2
2
  import ReactDOM from 'react-dom/client'
3
3
 
4
4
  import App from './App'
5
-
6
- import '@/styles/index.scss'
7
-
8
5
  import Loading from './components/Loading/PageLoading'
6
+ import '@/styles/index.scss'
9
7
 
10
8
  const rootEl = document.getElementById('root')
11
9
  if (rootEl) {
@@ -1,10 +1,8 @@
1
- import { defineConfig, presetWind3 } from 'unocss'
1
+ import { defineConfig, presetUno } from 'unocss'
2
2
 
3
3
  export default defineConfig({
4
4
  content: {
5
- filesystem: ['**/*.{html,js,ts,jsx,tsx,vue,svelte,astro}'],
5
+ filesystem: ['./src/**/*.{html,js,ts,jsx,tsx}'],
6
6
  },
7
- presets: [presetWind3()],
8
- rules: [],
9
- shortcuts: [['flex-center', 'flex items-center justify-center']],
7
+ presets: [presetUno()],
10
8
  })