1
- const nxWebpack = require ( '@nrwl/react/plugins /webpack' )
2
- const CopyPlugin = require ( "copy-webpack-plugin" ) ;
1
+ const { composePlugins , withNx } = require ( '@nrwl/webpack' )
2
+ const { withReact } = require ( '@nrwl/react' )
3
3
const webpack = require ( 'webpack' )
4
+ const CopyPlugin = require ( "copy-webpack-plugin" )
4
5
const version = require ( '../../package.json' ) . version
5
6
const fs = require ( 'fs' )
6
- const BundleAnalyzerPlugin = require ( 'webpack-bundle-analyzer' ) . BundleAnalyzerPlugin ;
7
+ const TerserPlugin = require ( "terser-webpack-plugin" )
8
+ const CssMinimizerPlugin = require ( "css-minimizer-webpack-plugin" )
7
9
8
10
const versionData = {
9
11
version : version ,
@@ -13,71 +15,87 @@ const versionData = {
13
15
14
16
fs . writeFileSync ( './apps/remix-ide/src/assets/version.json' , JSON . stringify ( versionData ) )
15
17
16
- module . exports = config => {
17
- const nxWebpackConfig = nxWebpack ( config )
18
- const webpackConfig = {
19
- ...nxWebpackConfig ,
20
- resolve : {
21
- ...nxWebpackConfig . resolve ,
22
- fallback : {
23
- ...nxWebpackConfig . resolve . fallback ,
24
- "crypto" : require . resolve ( "crypto-browserify" ) ,
25
- "stream" : require . resolve ( "stream-browserify" ) ,
26
- "path" : require . resolve ( "path-browserify" ) ,
27
- "http" : require . resolve ( "stream-http" ) ,
28
- "https" : require . resolve ( "https-browserify" ) ,
29
- "constants" : require . resolve ( "constants-browserify" ) ,
30
- "os" : false , //require.resolve("os-browserify/browser"),
31
- "timers" : false , // require.resolve("timers-browserify"),
32
- "zlib" : require . resolve ( "browserify-zlib" ) ,
33
- "fs" : false ,
34
- "module" : false ,
35
- "tls" : false ,
36
- "net" : false ,
37
- "readline" : false ,
38
- "child_process" : false ,
39
- "buffer" : require . resolve ( "buffer/" ) ,
40
- "vm" : require . resolve ( 'vm-browserify' ) ,
41
- } ,
42
- } ,
43
- externals : {
44
- ...nxWebpackConfig . externals ,
45
- solc : 'solc' ,
46
- } ,
18
+ // Nx plugins for webpack.
19
+ module . exports = composePlugins ( withNx ( ) , withReact ( ) , ( config ) => {
20
+ // Update the webpack config as needed here.
21
+ // e.g. `config.plugins.push(new MyPlugin())`
47
22
48
- output : {
49
- ...nxWebpackConfig . output ,
50
- publicPath : '/' ,
51
- filename : `[name].${ versionData . version } .${ versionData . timestamp } .js` ,
52
- chunkFilename : `[name].${ versionData . version } .${ versionData . timestamp } .js` ,
53
- } ,
54
- plugins : [
55
- ...nxWebpackConfig . plugins ,
56
- //new BundleAnalyzerPlugin({
57
- // analyzerMode: 'static'
58
- //}),
59
- new CopyPlugin ( {
60
- patterns : [
61
- { from : '../../node_modules/monaco-editor/dev/vs' , to : 'assets/js/monaco-editor/dev/vs' }
62
- ] . filter ( Boolean )
63
- } ) ,
64
- new webpack . ProvidePlugin ( {
65
- Buffer : [ 'buffer' , 'Buffer' ] ,
66
- url : [ 'url' , 'URL' ] ,
67
- process : 'process/browser' ,
68
- } ) ,
69
- ]
23
+ // add fallback for node modules
24
+ config . resolve . fallback = {
25
+ ...config . resolve . fallback ,
26
+ "crypto" : require . resolve ( "crypto-browserify" ) ,
27
+ "stream" : require . resolve ( "stream-browserify" ) ,
28
+ "path" : require . resolve ( "path-browserify" ) ,
29
+ "http" : require . resolve ( "stream-http" ) ,
30
+ "https" : require . resolve ( "https-browserify" ) ,
31
+ "constants" : require . resolve ( "constants-browserify" ) ,
32
+ "os" : false , //require.resolve("os-browserify/browser"),
33
+ "timers" : false , // require.resolve("timers-browserify"),
34
+ "zlib" : require . resolve ( "browserify-zlib" ) ,
35
+ "fs" : false ,
36
+ "module" : false ,
37
+ "tls" : false ,
38
+ "net" : false ,
39
+ "readline" : false ,
40
+ "child_process" : false ,
41
+ "buffer" : require . resolve ( "buffer/" ) ,
42
+ "vm" : require . resolve ( 'vm-browserify' ) ,
70
43
}
44
+
71
45
72
- webpackConfig . output . chunkLoadTimeout = 600000
73
-
74
- if ( process . env . NODE_ENV === 'production' ) {
75
- return {
76
- ...webpackConfig ,
77
- mode : 'production' ,
78
- devtool : 'source-map' ,
79
- }
80
- } else {
81
- return webpackConfig
46
+ // add externals
47
+ config . externals = {
48
+ ...config . externals ,
49
+ solc : 'solc' ,
82
50
}
83
- }
51
+
52
+ // add public path
53
+ config . output . publicPath = '/'
54
+
55
+ // set filename
56
+ config . output . filename = `[name].${ versionData . version } .${ versionData . timestamp } .js`
57
+ config . output . chunkFilename = `[name].${ versionData . version } .${ versionData . timestamp } .js`
58
+
59
+ // add copy & provide plugin
60
+ config . plugins . push (
61
+ new CopyPlugin ( {
62
+ patterns : [
63
+ { from : '../../node_modules/monaco-editor/dev/vs' , to : 'assets/js/monaco-editor/dev/vs' }
64
+ ] . filter ( Boolean )
65
+ } ) ,
66
+ new webpack . ProvidePlugin ( {
67
+ Buffer : [ 'buffer' , 'Buffer' ] ,
68
+ url : [ 'url' , 'URL' ] ,
69
+ process : 'process/browser' ,
70
+ } )
71
+ )
72
+
73
+ // souce-map loader
74
+ config . module . rules . push ( {
75
+ test : / \. j s $ / ,
76
+ use : [ "source-map-loader" ] ,
77
+ enforce : "pre"
78
+ } )
79
+
80
+ config . ignoreWarnings = [ / F a i l e d t o p a r s e s o u r c e m a p / ] // ignore source-map-loader warnings
81
+
82
+
83
+ // set minimizer
84
+ config . optimization . minimizer = [
85
+ new TerserPlugin ( {
86
+ parallel : true ,
87
+ terserOptions : {
88
+ ecma : 2015 ,
89
+ compress : false ,
90
+ mangle : false ,
91
+ format : {
92
+ comments : false ,
93
+ } ,
94
+ } ,
95
+ extractComments : false ,
96
+ } ) ,
97
+ new CssMinimizerPlugin ( ) ,
98
+ ] ;
99
+
100
+ return config ;
101
+ } ) ;
0 commit comments