@@ -22,41 +22,46 @@ export const getRollupPlugin = (
2222 contentsToInject : ContentsToInject ,
2323) : PluginOptions [ 'rollup' ] => {
2424 return {
25- renderChunk ( code , chunk : RenderedChunk ) {
26- const { base, ext } = path . parse ( chunk . fileName ) ;
27- if ( ! isFileSupported ( ext ) ) {
28- warnUnsupportedFile ( log , ext , base ) ;
29- return null ;
30- }
25+ renderChunk : {
26+ // Keep BEFORE and AFTER injections in their requested positions even when another
27+ // plugin, such as Terser, transforms or reorders the chunk.
28+ order : 'post' ,
29+ handler ( code , chunk : RenderedChunk ) {
30+ const { base, ext } = path . parse ( chunk . fileName ) ;
31+ if ( ! isFileSupported ( ext ) ) {
32+ warnUnsupportedFile ( log , ext , base ) ;
33+ return null ;
34+ }
3135
32- const banner = getContentToInject ( contentsToInject , InjectPosition . BEFORE , {
33- sourceOrHash : code ,
34- fileName : chunk . fileName ,
35- isEntry : chunk . isEntry ,
36- } ) ;
37- const footer = getContentToInject ( contentsToInject , InjectPosition . AFTER , {
38- sourceOrHash : code ,
39- fileName : chunk . fileName ,
40- isEntry : chunk . isEntry ,
41- } ) ;
36+ const banner = getContentToInject ( contentsToInject , InjectPosition . BEFORE , {
37+ sourceOrHash : code ,
38+ fileName : chunk . fileName ,
39+ isEntry : chunk . isEntry ,
40+ } ) ;
41+ const footer = getContentToInject ( contentsToInject , InjectPosition . AFTER , {
42+ sourceOrHash : code ,
43+ fileName : chunk . fileName ,
44+ isEntry : chunk . isEntry ,
45+ } ) ;
4246
43- if ( ! banner && ! footer ) {
44- return null ;
45- }
47+ if ( ! banner && ! footer ) {
48+ return null ;
49+ }
4650
47- const s = new MagicString ( code ) ;
51+ const s = new MagicString ( code ) ;
4852
49- if ( banner ) {
50- s . prepend ( `${ banner } \n` ) ;
51- }
52- if ( footer ) {
53- s . append ( `\n${ footer } ` ) ;
54- }
53+ if ( banner ) {
54+ s . prepend ( `${ banner } \n` ) ;
55+ }
56+ if ( footer ) {
57+ s . append ( `\n${ footer } ` ) ;
58+ }
5559
56- return {
57- code : s . toString ( ) ,
58- map : s . generateMap ( { file : chunk . fileName , hires : 'boundary' } ) ,
59- } ;
60+ return {
61+ code : s . toString ( ) ,
62+ map : s . generateMap ( { file : chunk . fileName , hires : 'boundary' } ) ,
63+ } ;
64+ } ,
6065 } ,
6166 async resolveId ( source , importer , options ) {
6267 if ( isInjectionFile ( source ) ) {
0 commit comments