@@ -18,26 +18,28 @@ export const loadUserConfig = async (
18
18
userConfigDependencies : [ ] ,
19
19
}
20
20
}
21
- // following code is forked and modified from vite
21
+ // forked and modified from https://github.com/vitejs/ vite/blob/889bfc0ada6d6cd356bb7a92efdce96298f82fef/packages/vite/src/node/config.ts#L1531
22
22
// TODO: we can migrate to something like `bundler-require`, but its `__dirname` support is not as good as vite
23
23
const dirnameVarName = '__vite_injected_original_dirname'
24
24
const filenameVarName = '__vite_injected_original_filename'
25
25
const importMetaUrlVarName = '__vite_injected_original_import_meta_url'
26
26
const result = await build ( {
27
27
absWorkingDir : process . cwd ( ) ,
28
28
entryPoints : [ userConfigPath ] ,
29
- outfile : 'out.js' ,
30
29
write : false ,
31
- target : [ 'node18' ] ,
30
+ target : [ `node ${ process . versions . node } ` ] ,
32
31
platform : 'node' ,
33
32
bundle : true ,
34
33
format : 'esm' ,
34
+ mainFields : [ 'main' ] ,
35
35
sourcemap : 'inline' ,
36
36
metafile : true ,
37
37
define : {
38
38
'__dirname' : dirnameVarName ,
39
39
'__filename' : filenameVarName ,
40
40
'import.meta.url' : importMetaUrlVarName ,
41
+ 'import.meta.dirname' : dirnameVarName ,
42
+ 'import.meta.filename' : filenameVarName ,
41
43
} ,
42
44
plugins : [
43
45
{
@@ -58,7 +60,7 @@ export const loadUserConfig = async (
58
60
name : 'inject-file-scope-variables' ,
59
61
setup ( pluginBuild ) {
60
62
pluginBuild . onLoad ( { filter : / \. [ c m ] ? [ j t ] s $ / } , async ( args ) => {
61
- const contents = await fs . readFile ( args . path , 'utf8 ' )
63
+ const contents = await fs . readFile ( args . path , 'utf-8 ' )
62
64
const injectValues =
63
65
`const ${ dirnameVarName } = ${ JSON . stringify (
64
66
path . dirname ( args . path ) ,
0 commit comments