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

release/0.25.0 #912

Merged
merged 11 commits into from
Apr 7, 2022
Merged

release/0.25.0 #912

merged 11 commits into from
Apr 7, 2022

Conversation

thescientist13
Copy link
Member

@thescientist13 thescientist13 commented Mar 13, 2022

Related Issue(s)

Summary of Changes

  1. Refactor out package walking logic into own util
  2. Make prerender false by default
  3. Auto detect and install puppeteer
  4. Improve node modules lookup fallback handling
  5. Upgrade puppeteer to ^13.x

Alpha Release Test Plan

I think to be safe given the level of refactoring, would like to at least make sure this get tested with a few key repos

The plan would be to test against the following projects / workflows as alpha releases are iterated upon:

  1. thegreenhouse.io - upgrade v0.25.0 thegreenhouseio/www.thegreenhouse.io#269
  2. contributary.community - upgrade v0.25.0 ContributaryCommunity/www.contributary.community#108
  3. analogstudios.net - upgrade v0.25.0 AnalogStudiosRI/www.analogstudios.net#74
  4. projectevergreen.github.io - upgrade v0.25.0 projectevergreen.github.io#82
  5. greenwood-getting-started - prerender with static optimization enabled greenwood-getting-started#62
  6. greenwood-template-blog - upgrade latest greenwood with static optimizations greenwood-template-blog#4
  7. greenwood-starter-presentation - upgrade latest greenwood 0.25.0 thescientist13/greenwood-starter-presentation#56
  8. npx

This PR should NOT be squashed merged though when merging into master.

TODOs

  1. make prerender config option false by default #855
  2. alpha.0 - https://github.com/ProjectEvergreen/greenwood/releases/tag/v0.25.0-alpha.0
  3. (nice to have) auto-detect / install for puppeteer - Feature/issue 855 prerender default to false optional puppeteer #860
  4. alpha.1 with npx testing
  5. async import() puppeteer only if used when default prerendering #927
  6. alpha.2
  7. (test) nodejs fallback location - Enhancement/issue 919 node modules location lookup fallback #920
  8. Put puppeteer version in error message - include puppeteer version expectation in output and only auto-detect on build or serve commands #928
  9. (nice to have / make new issue) - have auto detect run on build command, not for develop command - include puppeteer version expectation in output and only auto-detect on build or serve commands #928
  10. alpha.3
  11. Enhancement/issue 916 upgrade puppeteer version #929

Questions

Tracked into my personal backlog

  1. Should greenwood-template-blog become more "static" (prerender and static options) or leave as is?
  2. (question / new issue) should we rely on puppeteer transitive dependency piggy-backing? How deeply should we test for puppeteer compat?

@thescientist13 thescientist13 changed the title extract import map generation logic into utility (#668) release/0.25.0 Mar 13, 2022
* extract package walk logic into utility

* lower thresholds

* remove removed config

* create import map merging function and apply to graphql plugin

* 538 refactor rollup and resource to use shared data structure

* post rebase fixes
* change prerender default to false and update specs accordingly

* debug and enable disabled specs

* restore specs

* decouple default prerender from custom prerender

* update prerender docs

* add optimizing step to getting started guide
@thescientist13 thescientist13 linked an issue Mar 18, 2022 that may be closed by this pull request
5 tasks
@thescientist13 thescientist13 added breaking SSR documentation Greenwood specific docs feature New feature or request labels Mar 18, 2022
* basic implementation

* WIP updating prerender dependent specs

* all specs passing

* enable package manager detection

* move puppeteer to optionalDependency

* move puppeteer to peerDependency

* normalize copyDirectory paths for windows

* document puppeteer auto and self install

* ignore generated lock files in test directories

* revert fallback TODO

* fix formatting fence

* make puppeteer optional peerDependency and update specs

* remove puppeteer from CLI direct dependencies

* have actual auto install in prerender spec

* update docs

* rm all clean up files
@thescientist13 thescientist13 linked an issue Apr 1, 2022 that may be closed by this pull request
5 tasks
@thescientist13 thescientist13 force-pushed the release/0.25.0 branch 2 times, most recently from 5da34e2 to a926f7d Compare April 1, 2022 23:26
@thescientist13
Copy link
Member Author

thescientist13 commented Apr 2, 2022

Awesome, initial tests indicate that puppeteer auto detection and installation is working!

Home Page Getting Started

Running the commands from the home page, no more puppeteer installing now! 🪶
Screen Shot 2022-04-01 at 7 45 44 PM

Compared to v0.24.0, we can see puppeteer coming down the wire 🏋️
Screen Shot 2022-04-01 at 7 49 43 PM

Existing Application

So, in my blog repo, I ran the upgrade to the latest, and, now, puppeteer is no longer a dependency

% yarn why puppeteer
yarn why v1.22.5
[1/4] 🤔  Why do we have the module "puppeteer"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
=> Found "puppeteer@10.2.0"
info Reasons this module exists
   - "@greenwood#cli" depends on it
   - Hoisted from "@greenwood#cli#puppeteer"
info Disk size without dependencies: "265.34MB"
info Disk size with unique dependencies: "268.52MB"
info Disk size with transitive dependencies: "270.29MB"
info Number of shared dependencies: 31
=> Found "@web/test-runner-puppeteer#puppeteer@13.4.0"
info This module exists because "@web#test-runner-puppeteer" depends on it.
info Disk size without dependencies: "249.38MB"
info Disk size with unique dependencies: "252.51MB"
info Disk size with transitive dependencies: "254.44MB"
info Number of shared dependencies: 32
✨  Done in 0.85s.
owenbuckley@Owens-MBP-2 www.thegreenhouse.io % yarn upgrade --scope @greenwood --latest
yarn upgrade v1.22.5
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning "@web/test-runner > @web/dev-server > @rollup/plugin-node-resolve@11.2.1" has unmet peer dependency "rollup@^1.20.0||^2.0.0".
warning " > @greenwood/plugin-google-analytics@0.25.0-alpha.1" has incorrect peer dependency "@greenwood/cli@^0.4.0".
warning " > @greenwood/plugin-graphql@0.25.0-alpha.1" has incorrect peer dependency "@greenwood/cli@^0.4.0".
warning "@greenwood/plugin-graphql > @rollup/plugin-alias@3.1.2" has unmet peer dependency "rollup@^1.20.0||^2.0.0".
warning " > @greenwood/plugin-import-css@0.25.0-alpha.1" has incorrect peer dependency "@greenwood/cli@^0.4.0".
warning " > @greenwood/plugin-import-css@0.25.0-alpha.1" has unmet peer dependency "postcss@^8.3.11".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss@4.0.2" has unmet peer dependency "postcss@8.x".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss > postcss-modules@4.2.2" has unmet peer dependency "postcss@^8.0.0".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss > postcss-modules > postcss-modules-extract-imports@3.0.0" has unmet peer dependency "postcss@^8.1.0".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss > postcss-modules > postcss-modules-local-by-default@4.0.0" has unmet peer dependency "postcss@^8.1.0".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss > postcss-modules > postcss-modules-scope@3.0.0" has unmet peer dependency "postcss@^8.1.0".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss > postcss-modules > postcss-modules-values@4.0.0" has unmet peer dependency "postcss@^8.1.0".
warning "@greenwood/plugin-import-css > rollup-plugin-postcss > postcss-modules > postcss-modules-local-by-default > icss-utils@5.1.0" has unmet peer dependency "postcss@^8.1.0".
warning " > @greenwood/plugin-postcss@0.25.0-alpha.1" has incorrect peer dependency "@greenwood/cli@^0.4.0".
warning " > @greenwood/plugin-postcss@0.25.0-alpha.1" has unmet peer dependency "postcss@^8.3.11".
warning "@greenwood/plugin-postcss > postcss-preset-env@7.0.1" has unmet peer dependency "postcss@^8.3".
[4/4] 🔨  Rebuilding all packages...
success Saved lockfile.
success Saved 5 new dependencies.
info Direct dependencies
├─ @greenwood/cli@0.25.0-alpha.1
├─ @greenwood/plugin-google-analytics@0.25.0-alpha.1
├─ @greenwood/plugin-graphql@0.25.0-alpha.1
├─ @greenwood/plugin-import-css@0.25.0-alpha.1
└─ @greenwood/plugin-postcss@0.25.0-alpha.1
info All dependencies
├─ @greenwood/cli@0.25.0-alpha.1
├─ @greenwood/plugin-google-analytics@0.25.0-alpha.1
├─ @greenwood/plugin-graphql@0.25.0-alpha.1
├─ @greenwood/plugin-import-css@0.25.0-alpha.1
└─ @greenwood/plugin-postcss@0.25.0-alpha.1
✨  Done in 11.53s.
owenbuckley@Owens-MBP-2 www.thegreenhouse.io % yarn why puppeteer
yarn why v1.22.5
[1/4] 🤔  Why do we have the module "puppeteer"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
=> Found "puppeteer@13.4.0"
info Reasons this module exists
   - "@web#test-runner-puppeteer" depends on it
   - Hoisted from "@web#test-runner-puppeteer#puppeteer"
info Disk size without dependencies: "249.56MB"
info Disk size with unique dependencies: "252.69MB"
info Disk size with transitive dependencies: "254.61MB"
info Number of shared dependencies: 28
✨  Done in 0.65s.
owenbuckley@Owens-MBP-2 www.thegreenhouse.io % yarn clean && yarn serve
yarn run v1.22.5
$ rimraf ./reports ./public ./greenwood
✨  Done in 0.24s.
yarn run v1.22.5
$ yarn clean && greenwood serve
$ rimraf ./reports ./public ./greenwood
-------------------------------------------------------
Welcome to Greenwood (v0.25.0-alpha.1) ♻️
-------------------------------------------------------
Initializing project config
Initializing project workspace contexts
Generating graph of workspace files...
building from local sources...
Running Greenwood with the serve command.
Started prerender server at localhost:51201
GraphQLServer started at http://localhost:4000/
pages to render
 /about/
 /blog/2017/03/26/
 /blog/2017/03/30/
 /blog/2017/04/10/
 /blog/2017/04/22/
 /blog/2017/05/05/
 /blog/2017/06/07/
 /blog/2017/09/10/
 /blog/2017/10/15/
 /blog/2018/01/24/
 /blog/2018/05/16/
 /blog/2018/06/06/
 /blog/2018/09/26/
 /blog/2018/10/28/
 /blog/2018/11/19/
 /blog/2020/04/07/
 /blog/2020/08/15/
 /blog/2020/10/28/
 /blog/
 /contact/
 /
 /projects/
 /404/
Prerendering pages at http://127.0.0.1:51201
prerendering page... /about/
prerendering page... /blog/2017/03/26/
prerendering page... /blog/2017/03/30/
prerendering page... /blog/2017/04/10/
prerendering page... /blog/2017/04/22/
prerendering page... /blog/2017/05/05/
prerendering page... /blog/2017/06/07/
prerendering page... /blog/2017/09/10/
prerendering page... /blog/2017/10/15/
prerendering page... /blog/2018/01/24/
prerendering page... /blog/2018/05/16/
prerendering page... /blog/2018/06/06/
prerendering page... /blog/2018/09/26/
prerendering page... /blog/2018/10/28/
prerendering page... /blog/2018/11/19/
prerendering page... /blog/2020/04/07/
prerendering page... /blog/2020/08/15/
prerendering page... /blog/2020/10/28/
prerendering page... /blog/
prerendering page... /contact/
prerendering page... /
prerendering page... /projects/
prerendering page... /404/
prerendering complete for page /blog/2017/04/22/.
prerendering complete for page /blog/2018/01/24/.
prerendering complete for page /blog/2018/05/16/.
prerendering complete for page /blog/2017/03/30/.
prerendering complete for page /blog/2017/03/26/.
prerendering complete for page /blog/2017/05/05/.
prerendering complete for page /404/.
prerendering complete for page /.
prerendering complete for page /blog/2017/09/10/.
prerendering complete for page /about/.
prerendering complete for page /blog/2020/10/28/.
prerendering complete for page /blog/2018/10/28/.
prerendering complete for page /contact/.
prerendering complete for page /blog/2018/09/26/.
prerendering complete for page /blog/2018/06/06/.
prerendering complete for page /blog/2017/04/10/.
prerendering complete for page /blog/2017/06/07/.
prerendering complete for page /blog/2020/08/15/.
prerendering complete for page /blog/2020/04/07/.
prerendering complete for page /blog/2017/10/15/.
prerendering complete for page /blog/.
prerendering complete for page /blog/2018/11/19/.
prerendering complete for page /projects/.
done prerendering all pages
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db

Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
copying directory... src/assets
copying file... src/assets/banner.jpg
copying file... src/assets/og-meta-preview.png
copying file... src/assets/blog-post-images/angular-shield.jpg
copying file... src/assets/blog-post-images/docker.png
copying file... src/assets/blog-post-images/git.png
copying file... src/assets/blog-post-images/github.png
copying file... src/assets/blog-post-images/minecraft-cloud.png
copying file... src/assets/blog-post-images/php.png
copying file... src/assets/blog-post-images/pwa-lighthouse.png
copying file... src/assets/blog-post-images/vue.png
copying file... src/assets/logos/default.svg
copying file... src/assets/logos/github.svg
copying file... src/assets/logos/linkedin.svg
copying file... src/assets/logos/medium.svg
copying file... src/assets/logos/meetup.svg
copying file... src/assets/logos/twitter.svg
copying file... src/favicon.ico
copying file... .greenwood/graph.json
Started server at localhost:8080

Screen Shot 2022-04-01 at 8 05 31 PM

Screen Shot 2022-04-01 at 8 05 01 PM


Unintentional, but I forgot about what happens if puppeteer is a dependency of something else. For example, in my blog project, you can see one of my devDependencies depends on it, thus Greenwood doesn't try and install it. Which seems fine, because it still works because it is there!

Not sure if we need to do anything more here or check more aggressively, but if it's there, it's there, and that's all that matters, right?

But, to be safe, I manually deleted node_modules/puppeteer locally and yes, it still works. 😎

% yarn clean && yarn serve
yarn run v1.22.5
$ rimraf ./reports ./public ./greenwood
  Done in 0.27s.
yarn run v1.22.5
$ yarn clean && greenwood serve
$ rimraf ./reports ./public ./greenwood
-------------------------------------------------------
Welcome to Greenwood (v0.25.0-alpha.1) ♻️
-------------------------------------------------------
Initializing project config
Initializing project workspace contexts
Generating graph of workspace files...
building from local sources...
Running Greenwood with the serve command.
prerender configuration detected but puppeteer is not installed.
attempting to auto-install puppeteer...
auto installation successful!
Started prerender server at localhost:51201
GraphQLServer started at http://localhost:4000/
pages to render
 /about/
 /blog/2017/03/26/
 /blog/2017/03/30/
 /blog/2017/04/10/
 /blog/2017/04/22/
 /blog/2017/05/05/
 /blog/2017/06/07/
 /blog/2017/09/10/
 /blog/2017/10/15/
 /blog/2018/01/24/
 /blog/2018/05/16/
 /blog/2018/06/06/
 /blog/2018/09/26/
 /blog/2018/10/28/
 /blog/2018/11/19/
 /blog/2020/04/07/
 /blog/2020/08/15/
 /blog/2020/10/28/
 /blog/
 /contact/
 /
 /projects/
 /404/
Prerendering pages at http://127.0.0.1:51201
prerendering page... /about/
prerendering page... /blog/2017/03/26/
prerendering page... /blog/2017/03/30/
prerendering page... /blog/2017/04/10/
prerendering page... /blog/2017/04/22/
prerendering page... /blog/2017/05/05/
prerendering page... /blog/2017/06/07/
prerendering page... /blog/2017/09/10/
prerendering page... /blog/2017/10/15/
prerendering page... /blog/2018/01/24/
prerendering page... /blog/2018/05/16/
prerendering page... /blog/2018/06/06/
prerendering page... /blog/2018/09/26/
prerendering page... /blog/2018/10/28/
prerendering page... /blog/2018/11/19/
prerendering page... /blog/2020/04/07/
prerendering page... /blog/2020/08/15/
prerendering page... /blog/2020/10/28/
prerendering page... /blog/
prerendering page... /contact/
prerendering page... /
prerendering page... /projects/
prerendering page... /404/
prerendering complete for page /blog/2017/04/22/.
prerendering complete for page /blog/2018/01/24/.
prerendering complete for page /projects/.
prerendering complete for page /404/.
prerendering complete for page /blog/2017/05/05/.
prerendering complete for page /blog/2017/03/26/.
prerendering complete for page /blog/2018/10/28/.
prerendering complete for page /about/.
prerendering complete for page /blog/2017/03/30/.
prerendering complete for page /blog/2017/09/10/.
prerendering complete for page /contact/.
prerendering complete for page /.
prerendering complete for page /blog/2018/06/06/.
prerendering complete for page /blog/2017/04/10/.
prerendering complete for page /blog/2017/06/07/.
prerendering complete for page /blog/2020/08/15/.
prerendering complete for page /blog/2017/10/15/.
prerendering complete for page /blog/2018/11/19/.
prerendering complete for page /blog/2018/09/26/.
prerendering complete for page /blog/2020/10/28/.
prerendering complete for page /blog/2020/04/07/.
prerendering complete for page /blog/2018/05/16/.
prerendering complete for page /blog/.
done prerendering all pages
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db

Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
copying directory... src/assets
copying file... src/assets/banner.jpg
copying file... src/assets/og-meta-preview.png
copying file... src/assets/logos/default.svg
copying file... src/assets/logos/github.svg
copying file... src/assets/logos/linkedin.svg
copying file... src/assets/logos/medium.svg
copying file... src/assets/logos/meetup.svg
copying file... src/assets/logos/twitter.svg
copying file... src/assets/blog-post-images/angular-shield.jpg
copying file... src/assets/blog-post-images/docker.png
copying file... src/assets/blog-post-images/git.png
copying file... src/assets/blog-post-images/github.png
copying file... src/assets/blog-post-images/minecraft-cloud.png
copying file... src/assets/blog-post-images/php.png
copying file... src/assets/blog-post-images/pwa-lighthouse.png
copying file... src/assets/blog-post-images/vue.png
copying file... src/favicon.ico
copying file... .greenwood/graph.json
Started server at localhost:8080

* support fallback location for node modules package resolution

* normalize path for windows

* fix up for windows
@thescientist13 thescientist13 marked this pull request as ready for review April 2, 2022 15:18
@thescientist13 thescientist13 added alpha.3 enhancement Improve something existing (e.g. no docs, new APIs, etc) labels Apr 2, 2022
@thescientist13 thescientist13 merged commit e6e42ba into master Apr 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment