Skip to content

Commit dde33fc

Browse files
authored
Merge pull request #32 from selemondev/perf/reduce-bundle-size
perf: reduce bundle size
2 parents f0c2285 + 01c3e21 commit dde33fc

File tree

5 files changed

+41
-34
lines changed

5 files changed

+41
-34
lines changed

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
<p align="center">
22
<img align="center" src="https://raw.githubusercontent.com/selemondev/create-vue-next/master/image/create-vue-next.png" height="400" />
3+
<h1 align="center">
4+
Create Vue App
5+
</h1>
36
</p>
47

5-
## Create Vue3 App ⚡
8+
<p align="center">
9+
<a href="https://www.npmjs.com/package/@selemondev/create-vue3-app">
10+
<img alt="npm-version-src" src="https://img.shields.io/npm/v/@selemondev/create-vue3-app/latest.svg?style=flat&colorA=020420&colorB=00DC82" />
11+
</a>
12+
<a href="https://npmjs.com/package/@selemondev/create-vue3-app">
13+
<img alt="npm-downloads-src" src="https://img.shields.io/npm/dm/@selemondev/create-vue3-app.svg?style=flat&colorA=020420&colorB=00DC82" />
14+
</a>
15+
<a href="https://pkg-size.dev/@selemondev/create-vue3-app@latest">
16+
<img src="https://pkg-size.dev/badge/bundle/842194" title="Bundle size for @selemondev/create-vue3-app">
17+
</a>
18+
</p>
619

720
The Next Generation Vue Scaffolding Tool powered by Vite 🛠️
821

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@selemondev/create-vue3-app",
3-
"version": "0.0.3",
3+
"version": "0.0.2",
44
"description": "The Next Generation Vue Scaffolding Tool ✨",
55
"type": "module",
66
"main": "./dist/index.cjs",

pnpm-workspace.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
onlyBuiltDependencies:
2+
- esbuild

src/utils/createSpawnCmd.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { StdioOptions } from "child_process";
22
import { spawn } from "child_process";
3-
import { logger } from "./logger";
43

54
export const createSpawnCmd = (dest: string | undefined, stdio: StdioOptions = 'inherit') => {
65
return function (cmd: string, args: string[]): Promise<unknown> {
@@ -15,7 +14,7 @@ export const createSpawnCmd = (dest: string | undefined, stdio: StdioOptions = '
1514
code === 0 ? resolve(true) : reject(false);
1615
})
1716
}).catch((err) => {
18-
logger.error(err)
17+
return err;
1918
})
2019
}
2120
}

src/utils/ejsRender.ts

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,52 @@
1-
import ejs from "ejs";
2-
import fs from 'fs-extra'
3-
import path from "path";
4-
import { format, resolveConfig } from "prettier";
1+
import { render } from "ejs";
2+
import { readFile, outputFile, remove } from 'fs-extra'
3+
import { resolve, extname, parse } from "path";
4+
import { format as prettierFormatter } from "prettier/standalone"
5+
import parserBabel from "prettier/parser-babel";
6+
import parserEstree from "prettier/plugins/estree";
57
import options from '../core/utils/vue/options'
6-
import { fileURLToPath } from "node:url";
7-
import { dirname } from "path";
88

99
// formatting the code
1010

1111
export async function ejsRender(filePath: string, name: string): Promise<void> {
1212
try {
13-
const __filename = fileURLToPath(import.meta.url);
14-
const __dirname = dirname(__filename);
1513
let prettierCode: string = '';
1614

17-
const language = options.useTypeScript ? 'vue-ts' : 'vue-js';
15+
const file = parse(filePath);
1816

19-
const templatePath = path.resolve(__dirname, `../template/${language}`)
17+
const dest = resolve(process.cwd(), name)
2018

21-
const file = path.parse(filePath);
19+
const readFilePath = resolve(dest, file.dir, `${file.name}.ejs`)
2220

23-
const dest = path.resolve(process.cwd(), name)
21+
const outputFilePath = resolve(dest, filePath)
2422

25-
const readFilePath = path.resolve(dest, file.dir, `${file.name}.ejs`)
23+
const templateCode = await readFile(readFilePath)
2624

27-
const outputFilePath = path.resolve(dest, filePath)
25+
const code = render(templateCode.toString(), options);
2826

29-
const templateCode = await fs.readFile(readFilePath)
30-
31-
const code = ejs.render(templateCode.toString(), options);
32-
33-
const extname = path.extname(filePath).replace(/[.]/g, '')
34-
const opts = await resolveConfig(templatePath)
27+
const extensionName = extname(filePath).replace(/[.]/g, '')
3528

3629
try {
37-
switch (extname) {
30+
switch (extensionName) {
3831
case 'ts':
3932
case 'tsx':
4033
case 'jsx':
4134
case 'js':
42-
prettierCode = await format(code, {
35+
prettierCode = await prettierFormatter(code, {
4336
parser: 'babel',
44-
...opts
37+
plugins: [parserBabel, parserEstree]
4538
});
4639
break;
4740
case 'json':
48-
prettierCode = await format(code, {
41+
prettierCode = await prettierFormatter(code, {
4942
parser: "json",
50-
...opts
43+
plugins: [parserBabel, parserEstree]
5144
});
5245
break;
5346
case 'cjs':
54-
prettierCode = await format(code, {
47+
prettierCode = await prettierFormatter(code, {
5548
parser: "babel",
56-
...opts
49+
plugins: [parserBabel, parserEstree]
5750
});
5851
break;
5952
case 'toml':
@@ -63,14 +56,14 @@ export async function ejsRender(filePath: string, name: string): Promise<void> {
6356
prettierCode = code
6457
break
6558
default:
66-
prettierCode = await format(code, { parser: extname })
59+
prettierCode = await prettierFormatter(code, { parser: extname })
6760
break
6861
}
6962
} catch (err) {
7063
console.log(err)
7164
}
72-
await fs.outputFile(outputFilePath, prettierCode)
73-
await fs.remove(readFilePath)
65+
await outputFile(outputFilePath, prettierCode)
66+
await remove(readFilePath)
7467
} catch (error) {
7568
console.log(error)
7669
}

0 commit comments

Comments
 (0)