11const path = require ( 'path' ) ;
2- const CopyPlugin = require ( "copy-webpack-plugin" ) ;
2+ const CopyPlugin = require ( 'copy-webpack-plugin' ) ;
3+ const MergeJsonWebpackPlugin = require ( 'merge-jsons-webpack-plugin' ) ;
34
4- module . exports = {
5- entry : './src/index.ts' ,
6- output : {
7- filename : 'bundle.js' ,
8- path : path . resolve ( __dirname , 'dist' ) ,
9- } ,
10- module : {
11- rules : [
12- {
13- test : / \. t s x ? $ / ,
14- use : 'ts-loader' ,
15- exclude : / n o d e _ m o d u l e s / ,
16- } ,
17- ] ,
18- } ,
19- resolve : {
20- extensions : [ '.tsx' , '.ts' , '.js' ] ,
21- } ,
22- plugins : [
23- new CopyPlugin ( {
24- patterns : [
25- './src/manifest.json' ,
26- { from : './src/icons' , to : 'icons' }
5+ module . exports = ( env ) => {
6+ return {
7+ entry : './src/index.ts' ,
8+ output : {
9+ filename : 'bundle.js' ,
10+ path : path . resolve ( __dirname , `dist/${ env . BROWSER ?? 'chrome' } ` ) ,
11+ clean : true
12+ } ,
13+ module : {
14+ rules : [
15+ {
16+ test : / \. t s x ? $ / ,
17+ use : 'ts-loader' ,
18+ exclude : / n o d e _ m o d u l e s / ,
19+ } ,
2720 ] ,
28- } ) ,
29- ] ,
21+ } ,
22+ resolve : {
23+ extensions : [ '.tsx' , '.ts' , '.js' ] ,
24+ } ,
25+ plugins : [
26+ new CopyPlugin ( {
27+ patterns : [
28+ { from : './src/icons' , to : 'icons' }
29+ ] ,
30+ } ) ,
31+ new MergeJsonWebpackPlugin ( {
32+ space : 2 ,
33+ files : [ './src/manifest.json' , `./src/manifest.${ env . BROWSER ?? 'chrome' } .json` ] ,
34+ output : {
35+ fileName : 'manifest.json' ,
36+ } ,
37+ } ) ,
38+ ] ,
39+ }
3040} ;
0 commit comments