Skip to content

Commit ba37006

Browse files
authored
Merge pull request #3347 from ethereum/nx
Nx
2 parents e5cb4da + 5faea29 commit ba37006

File tree

7 files changed

+685
-1246
lines changed

7 files changed

+685
-1246
lines changed

.circleci/config.yml

+34-20
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ parameters:
55
type: boolean
66
default: false
77
orbs:
8-
browser-tools: circleci/[email protected].0
8+
browser-tools: circleci/[email protected].1
99
jobs:
1010
build:
1111
docker:
@@ -74,7 +74,7 @@ jobs:
7474
- run: cd dist/libs/remix-tests && yarn add @remix-project/remix-simulator ../../libs/remix-simulator
7575
- run: cd dist/libs/remix-tests && ./bin/remix-tests ./../../../libs/remix-tests/tests/examples_0/assert_ok_test.sol
7676
- run: node dist/libs/remix-tests/bin/remix-tests ./libs/remix-tests/tests/examples_0/assert_ok_test.sol
77-
- run: yarn run test:libs
77+
- run: yarn run test:libs
7878

7979
remix-ide-browser:
8080
docker:
@@ -93,14 +93,29 @@ jobs:
9393
type: string
9494
parallelism: 10
9595
steps:
96-
- browser-tools/install-browser-tools
97-
- run:
98-
command: |
99-
google-chrome --version
100-
firefox --version
101-
geckodriver --version
102-
chromedriver --version
103-
rm LICENSE.chromedriver 2> /dev/null
96+
- when:
97+
condition:
98+
equal: [ "chrome", << parameters.browser >> ]
99+
steps:
100+
- browser-tools/install-browser-tools:
101+
install-firefox: false
102+
install-chrome: true
103+
install-geckodriver: false
104+
install-chromedriver: true
105+
- run: google-chrome --version
106+
- run: chromedriver --version
107+
- run: rm LICENSE.chromedriver 2> /dev/null || true
108+
- when:
109+
condition:
110+
equal: [ "firefox", << parameters.browser >> ]
111+
steps:
112+
- browser-tools/install-browser-tools:
113+
install-firefox: true
114+
install-chrome: false
115+
install-geckodriver: true
116+
install-chromedriver: false
117+
- run: firefox --version
118+
- run: geckodriver --version
104119
- checkout
105120
- attach_workspace:
106121
at: .
@@ -140,15 +155,14 @@ jobs:
140155
type: string
141156
parallelism: 4
142157
steps:
143-
- browser-tools/install-browser-tools
144-
- run:
145-
command: |
146-
google-chrome --version
147-
firefox --version
148-
geckodriver --version
149-
chromedriver --version
150-
rm LICENSE.chromedriver 2> /dev/null
151-
name: Check install
158+
- browser-tools/install-browser-tools:
159+
install-firefox: false
160+
install-chrome: true
161+
install-geckodriver: false
162+
install-chromedriver: true
163+
- run: google-chrome --version
164+
- run: chromedriver --version
165+
- run: rm LICENSE.chromedriver 2> /dev/null || true
152166
- checkout
153167
- attach_workspace:
154168
at: .
@@ -316,4 +330,4 @@ workflows:
316330
branches:
317331
only: remix_beta
318332

319-
# VS Code Extension Version: 1.5.1
333+
# VS Code Extension Version: 1.5.1

apps/remix-ide-e2e/src/tests/terminal.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ module.exports = {
170170
.waitForElementVisible('[for="autoCompile"]')
171171
.click('[for="autoCompile"]')
172172
.clickLaunchIcon('udapp')
173-
.testContracts('printHardhatlog.sol', { content: hardhatLog }, ['OwnerTest'])
173+
.verifyContracts(['OwnerTest'])
174174
.clickLaunchIcon('udapp')
175175
.click('*[data-id="deployAndRunClearInstances"]')
176176
.selectContract('OwnerTest')

apps/remix-ide/project.json

+10-6
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,18 @@
3030
},
3131
"configurations": {
3232
"development": {
33+
"extractLicenses": false,
34+
"sourceMap": true,
35+
"vendorChunk": true,
36+
"optimization": false
3337
},
3438
"production": {
35-
"fileReplacements": [
36-
{
37-
"replace": "apps/remix-ide/src/environments/environment.ts",
38-
"with": "apps/remix-ide/src/environments/environment.prod.ts"
39-
}
40-
]
39+
"optimization": true,
40+
"outputHashing": "all",
41+
"sourceMap": false,
42+
"namedChunks": false,
43+
"extractLicenses": false,
44+
"vendorChunk": false
4145
}
4246
}
4347
},

apps/remix-ide/src/app/plugins/remixd-handle.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import React, { useRef, useState, useEffect } from 'react' // eslint-disable-lin
33
import isElectron from 'is-electron'
44
import { WebsocketPlugin } from '@remixproject/engine-web'
55
import * as packageJson from '../../../../../package.json'
6+
// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries
67
import { version as remixdVersion } from '../../../../../libs/remixd/package.json'
78
import { PluginManager } from '@remixproject/engine'
89
import { AppModal, AlertModal } from '@remix-ui/app'

apps/remix-ide/webpack.config.js

+85-67
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
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')
33
const webpack = require('webpack')
4+
const CopyPlugin = require("copy-webpack-plugin")
45
const version = require('../../package.json').version
56
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")
79

810
const versionData = {
911
version: version,
@@ -13,71 +15,87 @@ const versionData = {
1315

1416
fs.writeFileSync('./apps/remix-ide/src/assets/version.json', JSON.stringify(versionData))
1517

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())`
4722

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'),
7043
}
44+
7145

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',
8250
}
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: /\.js$/,
76+
use: ["source-map-loader"],
77+
enforce: "pre"
78+
})
79+
80+
config.ignoreWarnings = [/Failed to parse source map/] // 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+
});

package.json

+15-12
Original file line numberDiff line numberDiff line change
@@ -221,17 +221,18 @@
221221
"@babel/preset-typescript": "^7.18.6",
222222
"@babel/register": "^7.4.4",
223223
"@fortawesome/fontawesome-free": "^5.8.1",
224-
"@nrwl/cli": "^15.0.0",
225-
"@nrwl/eslint-plugin-nx": "^15.0.0",
226-
"@nrwl/jest": "15.0.0",
227-
"@nrwl/js": "15.0.0",
228-
"@nrwl/linter": "15.0.0",
229-
"@nrwl/node": "15.0.0",
230-
"@nrwl/react": "15.0.0",
231-
"@nrwl/tao": "^15.0.0",
232-
"@nrwl/web": "15.0.0",
233-
"@nrwl/webpack": "15.0.0",
234-
"@nrwl/workspace": "^15.0.0",
224+
"@nrwl/cli": "^15.6.3",
225+
"@nrwl/eslint-plugin-nx": "^15.6.3",
226+
"@nrwl/jest": "15.6.3",
227+
"@nrwl/js": "15.6.3",
228+
"@nrwl/linter": "15.6.3",
229+
"@nrwl/node": "15.6.3",
230+
"@nrwl/react": "15.6.3",
231+
"@nrwl/tao": "^15.6.3",
232+
"@nrwl/web": "15.6.3",
233+
"@nrwl/webpack": "15.6.3",
234+
"@nrwl/workspace": "^15.6.3",
235+
"@svgr/webpack": "^6.5.1",
235236
"@testing-library/react": "13.4.0",
236237
"@types/axios": "^0.14.0",
237238
"@types/chai": "^4.3.3",
@@ -283,6 +284,7 @@
283284
"crypto-browserify": "^3.12.0",
284285
"csjs-inject": "^1.0.1",
285286
"css-loader": "^6.7.1",
287+
"css-minimizer-webpack-plugin": "^4.2.2",
286288
"csslint": "^1.0.2",
287289
"dotenv": "^8.2.0",
288290
"eslint": "^8.26.0",
@@ -323,7 +325,7 @@
323325
"npm-link-local": "^1.1.0",
324326
"npm-merge-driver": "^2.3.5",
325327
"npm-run-all": "^4.0.2",
326-
"nx": "15.0.0",
328+
"nx": "15.6.3",
327329
"nyc": "^13.3.0",
328330
"onchange": "^3.2.1",
329331
"os-browserify": "^0.3.0",
@@ -339,6 +341,7 @@
339341
"style-loader": "^3.3.1",
340342
"tap-spec": "^5.0.0",
341343
"tape": "^4.13.3",
344+
"terser-webpack-plugin": "^5.3.6",
342345
"timers-browserify": "^2.0.12",
343346
"ts-jest": "^29.0.3",
344347
"ts-node": "10.9.1",

0 commit comments

Comments
 (0)