1
1
import ejs from "ejs" ;
2
2
import fs from 'fs-extra'
3
3
import path from "path" ;
4
- import { format as prettierFormatter } from "prettier/standalone"
5
- import parserBabel from "prettier/parser-babel " ;
6
- import parserEstree from "prettier/plugins/estree " ;
4
+ import { format , resolveConfig } from "prettier" ;
5
+ import { fileURLToPath } from "node:url " ;
6
+ import { dirname } from "path " ;
7
7
import options from '../core/utils/vue/options'
8
8
9
9
// formatting the code
10
10
11
11
export async function ejsRender ( filePath : string , name : string ) : Promise < void > {
12
12
try {
13
+ const __filename = fileURLToPath ( import . meta. url ) ;
14
+ const __dirname = dirname ( __filename ) ;
13
15
let prettierCode : string = '' ;
14
16
17
+ const language = options . useTypeScript ? 'vue-ts' : 'vue-js' ;
18
+
19
+ const templatePath = path . resolve ( __dirname , `../template/${ language } ` )
20
+
15
21
const file = path . parse ( filePath ) ;
16
22
17
23
const dest = path . resolve ( process . cwd ( ) , name )
@@ -24,39 +30,37 @@ export async function ejsRender(filePath: string, name: string): Promise<void> {
24
30
25
31
const code = ejs . render ( templateCode . toString ( ) , options ) ;
26
32
27
- const extensionName = path . extname ( filePath ) . replace ( / [ . ] / g, '' )
33
+ const extname = path . extname ( filePath ) . replace ( / [ . ] / g, '' )
34
+ const opts = await resolveConfig ( templatePath )
28
35
29
36
try {
30
- switch ( extensionName ) {
37
+ switch ( extname ) {
31
38
case 'ts' :
32
39
case 'tsx' :
33
40
case 'jsx' :
34
41
case 'js' :
35
- prettierCode = await prettierFormatter ( code , {
42
+ prettierCode = await format ( code , {
36
43
parser : 'babel' ,
37
- plugins : [ parserBabel , parserEstree ]
44
+ ... opts
38
45
} ) ;
39
46
break ;
40
47
case 'json' :
41
- prettierCode = await prettierFormatter ( code , {
48
+ prettierCode = await format ( code , {
42
49
parser : "json" ,
43
- plugins : [ parserBabel , parserEstree ]
50
+ ... opts
44
51
} ) ;
45
52
break ;
46
53
case 'cjs' :
47
- prettierCode = await prettierFormatter ( code , {
54
+ prettierCode = await format ( code , {
48
55
parser : "babel" ,
49
- plugins : [ parserBabel , parserEstree ]
56
+ ... opts
50
57
} ) ;
51
58
break ;
52
59
case 'toml' :
53
- prettierCode = code
54
- break ;
55
- case '' :
56
60
prettierCode = code
57
61
break
58
62
default :
59
- prettierCode = await prettierFormatter ( code , { parser : extensionName } )
63
+ prettierCode = await format ( code , { parser : extname } )
60
64
break
61
65
}
62
66
} catch ( err ) {
0 commit comments