@@ -10,7 +10,7 @@ import serveHandler from 'serve-handler'
1010import { PluginOption , ResolvedConfig , createLogger } from 'vite'
1111import { server } from 'websocket'
1212import type { connection } from 'websocket'
13- import { banner } from './banner.js'
13+ import { Banner } from './banner.js'
1414import { userConfig } from './config.js'
1515import { grants , regexpScripts , regexpStyles } from './constants.js'
1616import css from './css.js'
@@ -104,17 +104,19 @@ export default function UserscriptPlugin(
104104 } ,
105105 async writeBundle ( _ , bundle ) {
106106 const { open, port } = config . server !
107+ const userFilename = `${ config . header . name } .user.js`
107108 const proxyFilename = `${ config . header . name } .proxy.user.js`
109+ const metaFilename = `${ config . header . name } .meta.js`
108110
109111 for ( const [ fileName ] of Object . entries ( bundle ) ) {
110112 if ( regexpScripts . test ( fileName ) ) {
111113 const rootDir = pluginConfig . root
112114 const outDir = pluginConfig . build . outDir
113- const userFilename = `${ config . header . name } .user.js`
114115
115116 const outPath = resolve ( rootDir , outDir , fileName )
116- const proxyFilePath = resolve ( rootDir , outDir , proxyFilename )
117117 const userFilePath = resolve ( rootDir , outDir , userFilename )
118+ const proxyFilePath = resolve ( rootDir , outDir , proxyFilename )
119+ const metaFilePath = resolve ( rootDir , outDir , metaFilename )
118120 const hotReloadPath = resolve (
119121 dirname ( fileURLToPath ( import . meta. url ) ) ,
120122 `hot-reload-${ config . header . name } .js`
@@ -141,14 +143,14 @@ export default function UserscriptPlugin(
141143 writeFileSync ( hotReloadPath , hotReloadScript )
142144 writeFileSync (
143145 proxyFilePath ,
144- banner ( {
146+ new Banner ( {
145147 ...config . header ,
146148 require : [
147149 ...config . header . require ! ,
148150 'file://' + hotReloadPath ,
149151 'file://' + outPath
150152 ]
151- } )
153+ } ) . generate ( )
152154 )
153155 }
154156
@@ -165,8 +167,10 @@ export default function UserscriptPlugin(
165167 : [ ...defineGrants ( source ) , ...( config . header . grant ?? [ ] ) ]
166168 )
167169
170+ const banner = new Banner ( config . header ) . generate ( )
168171 writeFileSync ( outPath , source )
169- writeFileSync ( userFilePath , `${ banner ( config . header ) } \n\n${ source } ` )
172+ writeFileSync ( userFilePath , `${ banner } \n\n${ source } ` )
173+ writeFileSync ( metaFilePath , banner )
170174 } catch ( err ) {
171175 console . log ( err )
172176 }
0 commit comments