Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ncc Webpack build redux #7628

Merged
merged 8 commits into from Jun 21, 2019
Merged

ncc Webpack build redux #7628

merged 8 commits into from Jun 21, 2019

Conversation

guybedford
Copy link
Contributor

This reinstates the ncc webpack build (previously #7301, #6347), specifically fixing the issue in #7369.

Careful handling of remapping of externals is provided through the new exports object support in ncc, allowing better shared code.

See for example the webpack bundle technique in bundled-webpack.js and how that avoids duplication of webpack between usage. The autoDll override approach was also updated similarly to be fully ncc compatible.

Since fully automated multi-entry builds are not possible currently due to the various Webpack issues, these same techniques applied progressively to build all dependencies while retaining shared dependency links will be the best approach for next.js.

@github-actions
Copy link
Contributor

Stats from current PR

Click to expand stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 12.2s 11.7s -470ms
node_modules Size 41.3 MB 39.2 MB -2.09 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Base Rendered Size 1.34 kB 1.34 kB
Build Dir Size 804 kB 804 kB
Click to expand serverless stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 13.1s 12.8s -291ms
node_modules Size 41.3 MB 39.2 MB -2.09 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Serverless pages/link Size 339 kB 339 kB
Serverless pages/link gzip Size 87.1 kB 87.1 kB
Serverless pages/index Size 330 kB 330 kB
Serverless pages/index gzip Size 84.7 kB 84.7 kB -1 B
Serverless pages/_error Size 330 kB 330 kB
Serverless pages/_error gzip Size 84.4 kB 84.4 kB
Serverless pages/routerDirect Size 331 kB 331 kB
Serverless pages/routerDirect gzip Size 84.7 kB 84.7 kB -2 B
Serverless pages/withRouter Size 331 kB 331 kB
Serverless pages/withRouter gzip Size 84.6 kB 84.6 kB
Build Dir Size 2.3 MB 2.3 MB

@github-actions
Copy link
Contributor

Stats from current PR

Click to expand stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 12.4s 11.7s -752ms
node_modules Size 41.3 MB 39.2 MB -2.06 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -4 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB -1 B
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB -1 B
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 224 B ⚠️ +2 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB -1 B
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Base Rendered Size 1.34 kB 1.34 kB
Build Dir Size 804 kB 804 kB
Click to expand serverless stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 12.9s 12.8s -138ms
node_modules Size 41.3 MB 39.2 MB -2.06 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Serverless pages/link Size 339 kB 339 kB
Serverless pages/link gzip Size 87.1 kB 87.1 kB
Serverless pages/index Size 330 kB 330 kB
Serverless pages/index gzip Size 84.7 kB 84.7 kB
Serverless pages/_error Size 330 kB 330 kB
Serverless pages/_error gzip Size 84.4 kB 84.4 kB -1 B
Serverless pages/routerDirect Size 331 kB 331 kB
Serverless pages/routerDirect gzip Size 84.7 kB 84.7 kB -1 B
Serverless pages/withRouter Size 331 kB 331 kB
Serverless pages/withRouter gzip Size 84.6 kB 84.6 kB
Build Dir Size 2.3 MB 2.3 MB

@guybedford
Copy link
Contributor Author

Just tracking down here why webpack-dev-middleware is not calling the ready callback at all resulting in timeouts.

@github-actions
Copy link
Contributor

Stats from current PR

Click to expand stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 12.3s 12s -348ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Base Rendered Size 1.34 kB 1.34 kB
Build Dir Size 804 kB 804 kB
Click to expand serverless stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 13.4s 12.9s -548ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -4 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB -1 B
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB -1 B
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 224 B ⚠️ +2 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB -1 B
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Serverless pages/link Size 339 kB 339 kB
Serverless pages/link gzip Size 87.1 kB 87.1 kB ⚠️ +1 B
Serverless pages/index Size 330 kB 330 kB
Serverless pages/index gzip Size 84.7 kB 84.7 kB ⚠️ +1 B
Serverless pages/_error Size 330 kB 330 kB
Serverless pages/_error gzip Size 84.4 kB 84.4 kB ⚠️ +1 B
Serverless pages/routerDirect Size 331 kB 331 kB
Serverless pages/routerDirect gzip Size 84.7 kB 84.7 kB ⚠️ +1 B
Serverless pages/withRouter Size 331 kB 331 kB
Serverless pages/withRouter gzip Size 84.6 kB 84.6 kB ⚠️ +2 B
Build Dir Size 2.3 MB 2.3 MB

@github-actions
Copy link
Contributor

Stats from current PR

Click to expand stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 13.8s 13.1s -756ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Base Rendered Size 1.34 kB 1.34 kB
Build Dir Size 804 kB 804 kB
Click to expand serverless stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 15s 14.4s -555ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -6 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB ⚠️ +1 B
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB ⚠️ +1 B
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 224 B 222 B -2 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB ⚠️ +1 B
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Serverless pages/link Size 339 kB 339 kB
Serverless pages/link gzip Size 87.1 kB 87.1 kB ⚠️ +1 B
Serverless pages/index Size 330 kB 330 kB
Serverless pages/index gzip Size 84.7 kB 84.7 kB ⚠️ +1 B
Serverless pages/_error Size 330 kB 330 kB
Serverless pages/_error gzip Size 84.4 kB 84.4 kB ⚠️ +1 B
Serverless pages/routerDirect Size 331 kB 331 kB
Serverless pages/routerDirect gzip Size 84.7 kB 84.7 kB ⚠️ +1 B
Serverless pages/withRouter Size 331 kB 331 kB
Serverless pages/withRouter gzip Size 84.6 kB 84.6 kB ⚠️ +2 B
Build Dir Size 2.3 MB 2.3 MB

@github-actions
Copy link
Contributor

Stats from current PR

Click to expand stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 12.8s 12s -777ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Base Rendered Size 1.34 kB 1.34 kB
Build Dir Size 804 kB 804 kB
Click to expand serverless stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 13.5s 13.1s -429ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Serverless pages/link Size 339 kB 339 kB
Serverless pages/link gzip Size 87.1 kB 87.1 kB -1 B
Serverless pages/index Size 330 kB 330 kB
Serverless pages/index gzip Size 84.7 kB 84.7 kB -1 B
Serverless pages/_error Size 330 kB 330 kB
Serverless pages/_error gzip Size 84.4 kB 84.4 kB -1 B
Serverless pages/routerDirect Size 331 kB 331 kB
Serverless pages/routerDirect gzip Size 84.7 kB 84.7 kB -1 B
Serverless pages/withRouter Size 331 kB 331 kB
Serverless pages/withRouter gzip Size 84.6 kB 84.6 kB -1 B
Build Dir Size 2.3 MB 2.3 MB

@github-actions
Copy link
Contributor

Stats from current PR

Click to expand stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 13.9s 13.1s -815ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Base Rendered Size 1.34 kB 1.34 kB
Build Dir Size 804 kB 804 kB
Click to expand serverless stats
zeit/next.js canary guybedford/next.js canary-ncc Change
Build Duration 14.9s 14.6s -235ms
node_modules Size 41.3 MB 39.2 MB -2.07 MB
Total Bundle (main, webpack, commons) Size 213 kB 213 kB
Total Bundle (main, webpack, commons) gzip Size 70 kB 70 kB -5 B
Client _app Size 2.39 kB 2.39 kB
Client _app gzip Size 1.08 kB 1.08 kB
Client _error Size 8.78 kB 8.78 kB
Client _error gzip Size 3.31 kB 3.31 kB
Client pages/index Size 296 B 296 B
Client pages/index gzip Size 222 B 222 B
Client pages/link Size 4.79 kB 4.79 kB
Client pages/link gzip Size 2.05 kB 2.05 kB
Client pages/routerDirect Size 411 B 411 B
Client pages/routerDirect gzip Size 296 B 296 B
Client pages/withRouter Size 393 B 393 B
Client pages/withRouter gzip Size 280 B 280 B
Client main Size 27.6 kB 27.6 kB
Client main gzip Size 9.13 kB 9.13 kB
Client commons Size 183 kB 183 kB
Client commons gzip Size 59.6 kB 59.6 kB -5 B
Client webpack Size 1.49 kB 1.49 kB
Client webpack gzip Size 770 B 770 B
Serverless pages/link Size 339 kB 339 kB
Serverless pages/link gzip Size 87.1 kB 87.1 kB -1 B
Serverless pages/index Size 330 kB 330 kB
Serverless pages/index gzip Size 84.7 kB 84.7 kB
Serverless pages/_error Size 330 kB 330 kB
Serverless pages/_error gzip Size 84.4 kB 84.4 kB
Serverless pages/routerDirect Size 331 kB 331 kB
Serverless pages/routerDirect gzip Size 84.7 kB 84.7 kB
Serverless pages/withRouter Size 331 kB 331 kB
Serverless pages/withRouter gzip Size 84.6 kB 84.6 kB -1 B
Build Dir Size 2.3 MB 2.3 MB

@Timer Timer merged commit e85a517 into vercel:canary Jun 21, 2019
Timer added a commit to Timer/next.js that referenced this pull request Jun 24, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Jun 24, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants