@@ -8,12 +8,15 @@ import fg from 'fast-glob'
8
8
import isCore from 'is-core-module'
9
9
import type { Plugin , ResolvedConfig } from 'vite'
10
10
import { createFilter } from '@rollup/pluginutils'
11
- import { name , version } from '../package.json '
11
+ import c from 'picocolors '
12
12
import { aliasMatches , transformWithEsbuild } from './compiler'
13
13
import { viteDefine } from './define'
14
14
import type { MockServerPluginOptions , ServerBuildOption } from './types'
15
15
import { ensureProxies , lookupFile , normalizePath } from './utils'
16
16
17
+ declare const __PACKAGE_NAME__ : string
18
+ declare const __PACKAGE_VERSION__ : string
19
+
17
20
type PluginContext < T = Plugin [ 'buildEnd' ] > = T extends (
18
21
this : infer R ,
19
22
...args : any [ ]
@@ -73,15 +76,21 @@ export async function generateMockServer(
73
76
source : generatePackageJson ( pkg , mockDeps ) ,
74
77
} ,
75
78
]
76
-
77
79
try {
78
80
if ( path . isAbsolute ( outputDir ) ) {
79
- for ( const { filename } of outputList )
80
- await fsp . rm ( filename )
81
-
82
- fs . mkdirSync ( outputDir , { recursive : true } )
83
- for ( const { filename, source } of outputList )
81
+ for ( const { filename } of outputList ) {
82
+ if ( fs . existsSync ( filename ) )
83
+ await fsp . rm ( filename )
84
+ }
85
+ config . logger . info ( `${ c . green ( '✓' ) } generate mock server in ${ c . cyan ( outputDir ) } ` )
86
+ for ( const { filename, source } of outputList ) {
87
+ fs . mkdirSync ( path . dirname ( filename ) , { recursive : true } )
84
88
await fsp . writeFile ( filename , source , 'utf-8' )
89
+ const sourceSize = ( source . length / 1024 ) . toFixed ( 2 )
90
+ const name = path . relative ( outputDir , filename )
91
+ const space = name . length < 30 ? ' ' . repeat ( 30 - name . length ) : ''
92
+ config . logger . info ( ` ${ c . green ( name ) } ${ space } ${ c . bold ( c . dim ( `${ sourceSize } kB` ) ) } ` )
93
+ }
85
94
}
86
95
else {
87
96
for ( const { filename, source } of outputList ) {
@@ -93,12 +102,14 @@ export async function generateMockServer(
93
102
}
94
103
}
95
104
}
96
- catch { }
105
+ catch ( e ) {
106
+ console . error ( e )
107
+ }
97
108
}
98
109
99
110
function getMockDependencies ( deps : Metafile [ 'inputs' ] , alias : ResolvedConfig [ 'resolve' ] [ 'alias' ] ) : string [ ] {
100
111
const list = new Set < string > ( )
101
- const excludeDeps = [ name , 'connect' , 'cors' ]
112
+ const excludeDeps = [ __PACKAGE_NAME__ , 'connect' , 'cors' ]
102
113
const isAlias = ( p : string ) => alias . find ( ( { find } ) => aliasMatches ( find , p ) )
103
114
Object . keys ( deps ) . forEach ( ( mPath ) => {
104
115
const imports = deps [ mPath ] . imports
@@ -123,7 +134,7 @@ function generatePackageJson(pkg: any, mockDeps: string[]) {
123
134
} ,
124
135
dependencies : {
125
136
'connect' : '^3.7.0' ,
126
- 'vite-plugin-mock-dev-server' : `^${ version } ` ,
137
+ 'vite-plugin-mock-dev-server' : `^${ __PACKAGE_VERSION__ } ` ,
127
138
'cors' : '^2.8.5' ,
128
139
} as Record < string , string > ,
129
140
pnpm : { peerDependencyRules : { ignoreMissing : [ 'vite' ] } } ,
@@ -153,7 +164,7 @@ function generatorServerEntryCode(
153
164
return `import { createServer } from 'node:http';
154
165
import connect from 'connect';
155
166
import corsMiddleware from 'cors';
156
- import { baseMiddleware, mockWebSocket, createLogger } from 'vite-plugin-mock-dev-server';
167
+ import { baseMiddleware, createLogger, mockWebSocket } from 'vite-plugin-mock-dev-server';
157
168
import mockData from './mock-data.js';
158
169
159
170
const app = connect();
0 commit comments