v0.29.0
·
344 commits
to master
since this release
Overview
The v0.29.0 release is here! Please check out our blog post to learn about some of the great new features now available.
If using Yarn, you can can upgrade all your Greenwood packages at once
$ yarn upgrade --scope @greenwood --latestChangelog
https://github.com/ProjectEvergreen/greenwood/issues?q=label%3Av0.29.0
- Adapter Plugin API
- Vercel Adapter Plugin
- Netlify Adapter Plugin
- Data Loading Strategies
- refactor Workers out of SSR builds
- adapter SSR pages are rendering with incorrect content type header
- handle merging additional
Request/Responseinstance properties - custom loader hook not handling bare specifiers when resolving URLs (
invalid URL) - devServer proxy not returning content (when proxied response includes a
content-encodingheader) - templates with (inline) template strings breaks bundling of SSR pages
- custom imports bundling breaks when used in API routes and SSR pages
- upgrade plugin-typescript to TypeScript
5.x - add support for optimizing the CSS
:has/:ispseudo-selectors - add support for configuring a base path
- support resource plugin based transformations for non "standard" module formats (ex: TypeScript, GraphQL) for SSR
- Support "active links" in terminal output for server URLs - thanks @DevLab2425 !
Breaking Changes
Renderer Plugin
As part of the refactor for how Greenwood handles Worker threads, the API for creating a renderer plugin has changed a bit.
- The options have changed and
workerUrlhas been renamed toexecuteModuleUrl. - For the params into
executeRouteModulenow hasroute,labelandidreplaced with just thepagegraph data (which includes all of those and more) - The URL for
executeModuleUrlis now simply a function that produces the output the same way it did before, no need to bother with theWorkersabstraction. Justexportnow.
Before
import { parentPort } from 'worker_threads';
// ...
async function executeRouteModule({ moduleUrl, compilation, route, label, id, prerender, htmlContents, scripts }) {
// ...
parentPort.postMessage(data);
}
parentPort.on('message', async (task) => {
await executeRouteModule(task);
});After
// ...
async function executeRouteModule({ moduleUrl, compilation, page = {}, prerender = false, htmlContents = null, scripts = [] }) {
// ...
return data
}
export { executeRouteModule };GraphQL Plugin
Package Imports
All import statements for queries will have to have their import reference slightly updated to reference the full path in the package and will require an extension, e.x
// before
import client from '@greenwood/plugin-graphql/core/client';
import MenuQuery from '@greenwood/plugin-graphql/queries/menu';// after
import client from '@greenwood/plugin-graphql/src/core/client.js';
import MenuQuery from '@greenwood/plugin-graphql/src/queries/menu.gql';Children Query
ChildrenQuery calls will now expect a leading / slash for the parent variable
// before
const response = await client.query({
query: ChildrenQuery,
variables: {
parent: 'blog'
}
});// after
const response = await client.query({
query: ChildrenQuery,
variables: {
parent: '/blog'
}
});Known Issues
N / A
Diff
Diff looks big because repo was formatted post v0.28.4 release - #1119
$ git diff v0.28.5 v0.29.0 --stat | grep -v "www"
.eslintignore | 3 +-
.gitignore | 6 +-
.ls-lint.yml | 3 +-
lerna.json | 2 +-
package.json | 8 +-
packages/cli/package.json | 6 +-
packages/cli/src/commands/build.js | 9 +-
packages/cli/src/commands/develop.js | 6 +-
packages/cli/src/commands/serve.js | 7 +-
packages/cli/src/config/rollup.config.js | 237 +-
packages/cli/src/lib/api-route-worker.js | 23 +-
packages/cli/src/lib/execute-route-module.js | 44 +
packages/cli/src/lib/resource-utils.js | 100 +-
packages/cli/src/lib/ssr-route-worker.js | 42 +-
packages/cli/src/lib/templating-utils.js | 13 +-
packages/cli/src/lifecycles/bundle.js | 141 +-
packages/cli/src/lifecycles/compile.js | 4 -
packages/cli/src/lifecycles/config.js | 14 +-
packages/cli/src/lifecycles/graph.js | 54 +-
packages/cli/src/lifecycles/prerender.js | 26 +-
packages/cli/src/lifecycles/serve.js | 118 +-
packages/cli/src/loader.js | 24 +-
.../plugins/renderer/plugin-renderer-default.js | 2 +-
.../cli/src/plugins/resource/plugin-api-routes.js | 48 +-
.../cli/src/plugins/resource/plugin-dev-proxy.js | 20 +-
.../src/plugins/resource/plugin-standard-css.js | 4 +
.../src/plugins/resource/plugin-standard-font.js | 2 +-
.../src/plugins/resource/plugin-standard-html.js | 27 +-
.../src/plugins/resource/plugin-standard-json.js | 6 +-
.../src/plugins/resource/plugin-static-router.js | 24 +-
.../build.config-optimization-default.spec.js | 2 +-
.../fixtures/expected.css | 6 +-
.../src/styles/main.css | 8 +
.../build.config-optimization-inline.spec.js | 8 +-
.../build.config-optimization-none.spec.js | 2 +-
.../build.config-optimization-overrides.spec.js | 2 +-
.../build.config.static-router.spec.js | 9 +-
.../build.default.import-node-modules.spec.js | 4 +-
.../build.default.ssr-static-export.spec.js | 3 +-
.../src/pages/artists.js | 7 +-
.../build.default.workspace-404-markdown.spec.js | 2 +-
.../build.default.workspace-404.spec.js | 2 +-
...build.default.workspace-getting-started.spec.js | 6 +-
.../build.default.workspace-javascript-css.spec.js | 8 +-
...default.workspace-template-page-and-app.spec.js | 2 +-
.../build.default.workspace-template-page.spec.js | 2 +-
...build.default.workspace-templates-empty.spec.js | 8 +-
...efault.workspace-user-directory-mapping.spec.js | 4 +-
.../test/cases/build.default/build.default.spec.js | 11 +
.../build.config.plugins-adapter.spec.js | 125 +
.../cases/build.plugins.adapter/generic-adapter.js | 58 +
.../build.plugins.adapter/greenwood.config.js | 7 +
.../build.plugins.adapter/src/api/greeting.js | 12 +
.../build.plugins.adapter/src/components/card.js | 22 +
.../cases/build.plugins.adapter/src/pages/index.js | 24 +
.../build.plugins.context.spec.js | 5 +-
.../build.plugins.error-type.spec.js | 2 +-
.../develop.config.base-path.spec.js | 324 +
.../develop.config.base-path/greenwood.config.js | 8 +
.../cases/develop.config.base-path/package.json | 4 +
.../develop.config.base-path/src/api/greeting.js | 11 +
.../develop.config.base-path/src/assets/logo.png | Bin 0 -> 2171 bytes
.../src/components/card.js | 22 +
.../develop.config.base-path/src/pages/index.html | 16 +
.../develop.config.base-path/src/pages/users.js | 18 +
.../develop.config.base-path/src/styles/main.css | 3 +
.../develop.default.hud-disabled.spec.js | 36 +-
.../develop.default.hud.spec.js | 36 +-
.../cases/develop.default/develop.default.spec.js | 672 +--
.../test/cases/develop.default/src/api/fragment.js | 18 +
.../test/cases/develop.default/src/api/missing.js | 3 +
.../test/cases/develop.default/src/api/nothing.js | 6 +-
.../develop.default/src/api/submit-form-data.js | 11 +
.../cases/develop.default/src/api/submit-json.js | 12 +
.../cases/develop.default/src/components/card.js | 11 +
.../develop.plugins.context.spec.js | 69 +-
.../cli/test/cases/develop.spa/develop.spa.spec.js | 125 +-
.../cli/test/cases/develop.ssr/develop.ssr.spec.js | 100 +-
.../test/cases/develop.ssr/src/pages/artists.js | 4 +-
.../cli/test/cases/develop.ssr/src/pages/post.js | 20 +
.../serve.config.base-path/greenwood.config.js | 9 +
.../serve.config.base-path.spec.js | 471 ++
.../serve.config.base-path/src/api/greeting.js | 11 +
.../serve.config.base-path/src/assets/logo.png | Bin 0 -> 2171 bytes
.../serve.config.base-path/src/components/card.js | 22 +
.../serve.config.base-path/src/pages/about.md | 7 +
.../serve.config.base-path/src/pages/index.html | 16 +
.../serve.config.base-path/src/pages/users.js | 18 +
.../serve.config.base-path/src/styles/main.css | 3 +
.../serve.config.static-router.spec.js | 85 +-
.../serve.default.api/serve.default.api.spec.js | 179 +-
.../cases/serve.default.api/src/api/fragment.js | 8 +-
.../cases/serve.default.api/src/api/missing.js | 3 +
.../cases/serve.default.api/src/api/nothing.js | 4 +-
.../serve.default.api/src/api/submit-form-data.js | 11 +
.../cases/serve.default.api/src/api/submit-json.js | 12 +
.../serve.default.ssr-prerender-api-hybrid.spec.js | 49 +-
.../serve.default.ssr-prerender.spec.js | 24 +-
.../serve.default.ssr-static-export.spec.js | 28 +-
.../src/pages/artists.js | 7 +-
.../serve.default.ssr/serve.default.ssr.spec.js | 227 +-
.../cases/serve.default.ssr/src/components/card.js | 2 +
.../cases/serve.default.ssr/src/images/logo.svg | 45 +
.../cases/serve.default.ssr/src/pages/artists.js | 4 +-
.../test/cases/serve.default.ssr/src/pages/post.js | 20 +
.../cases/serve.default.ssr/src/templates/app.html | 6 +
.../test/cases/serve.default/serve.default.spec.js | 268 +-
.../cli/test/cases/serve.spa/serve.spa.spec.js | 75 +-
.../test/cases/theme-pack/theme-pack.build.spec.js | 5 +-
.../cases/theme-pack/theme-pack.develop.spec.js | 69 +-
packages/init/package.json | 2 +-
.../cases/develop.default/develop.default.spec.js | 25 +-
packages/plugin-adapter-netlify/README.md | 88 +
packages/plugin-adapter-netlify/package.json | 37 +
packages/plugin-adapter-netlify/src/index.js | 208 +
.../build.config.base-path.spec.js | 180 +
.../build.config.base-path/greenwood.config.js | 8 +
.../build.config.base-path/src/api/greeting.js | 11 +
.../build.config.base-path/src/pages/users.js | 24 +
.../test/cases/build.default/build.default.spec.js | 377 ++
.../test/cases/build.default/greenwood.config.js | 7 +
.../test/cases/build.default/src/api/fragment.js | 27 +
.../test/cases/build.default/src/api/greeting.js | 14 +
.../test/cases/build.default/src/api/search.js | 41 +
.../build.default/src/api/submit-form-data.js | 11 +
.../cases/build.default/src/api/submit-json.js | 14 +
.../cases/build.default/src/components/card.js | 27 +
.../test/cases/build.default/src/pages/artists.js | 25 +
.../test/cases/build.default/src/pages/post.js | 20 +
.../test/cases/build.default/src/pages/users.js | 27 +
.../cases/build.default/src/services/artists.js | 11 +
.../cases/build.default/src/services/message.js | 7 +
packages/plugin-adapter-vercel/README.md | 64 +
packages/plugin-adapter-vercel/package.json | 32 +
packages/plugin-adapter-vercel/src/index.js | 189 +
.../build.config.base-path.spec.js | 191 +
.../build.config.base-path/greenwood.config.js | 8 +
.../build.config.base-path/src/api/greeting.js | 11 +
.../build.config.base-path/src/pages/users.js | 24 +
.../test/cases/build.default/build.default.spec.js | 393 ++
.../test/cases/build.default/greenwood.config.js | 7 +
.../test/cases/build.default/src/api/fragment.js | 27 +
.../test/cases/build.default/src/api/greeting.js | 14 +
.../test/cases/build.default/src/api/search.js | 41 +
.../build.default/src/api/submit-form-data.js | 11 +
.../cases/build.default/src/api/submit-json.js | 14 +
.../cases/build.default/src/components/card.js | 27 +
.../test/cases/build.default/src/pages/artists.js | 25 +
.../test/cases/build.default/src/pages/post.js | 20 +
.../test/cases/build.default/src/pages/users.js | 27 +
.../cases/build.default/src/services/artists.js | 11 +
.../cases/build.default/src/services/message.js | 7 +
packages/plugin-babel/package.json | 4 +-
packages/plugin-google-analytics/package.json | 4 +-
.../test/cases/default/default.spec.js | 2 +-
.../option-anonymous/option-anonymous.spec.js | 2 +-
packages/plugin-graphql/README.md | 30 +-
packages/plugin-graphql/package.json | 5 +-
packages/plugin-graphql/src/core/client.js | 7 +-
packages/plugin-graphql/src/index.js | 28 +-
packages/plugin-graphql/src/schema/graph.js | 20 +-
.../cases/develop.default/develop.default.spec.js | 109 +-
.../exp-prerender.query-children.spec.js | 143 +
.../greenwood.config.js | 8 +
.../exp-prerender.query-children/package.json | 4 +
.../src/components/posts-list.js | 34 +
.../src/pages/blog/first-post/index.md | 8 +
.../src/pages/blog/second-post/index.md | 8 +
.../src/pages/index.html | 12 +
.../cases/qraphql-server/graphql-server.spec.js | 68 +-
.../query-children/src/components/posts-list.js | 6 +-
.../cases/query-config/src/components/footer.js | 4 +-
.../src/components/posts-list.js | 2 +-
.../cases/query-custom-schema/src/pages/index.html | 2 +-
.../query-graph/src/components/debug-output.js | 4 +-
.../test/cases/query-menu/src/components/header.js | 4 +-
.../test/unit/schema/graph.menu.spec.js | 116 +-
.../plugin-graphql/test/unit/schema/graph.spec.js | 9 +-
packages/plugin-import-commonjs/package.json | 4 +-
packages/plugin-import-css/package.json | 4 +-
.../cases/develop.default/develop.default.spec.js | 67 +-
.../exp-build.prerender.spec.js | 1 +
.../test/cases/exp-serve.ssr/exp-serve.ssr.spec.js | 152 +
.../test/cases/exp-serve.ssr/greenwood.config.js | 7 +
.../test/cases/exp-serve.ssr/package.json | 4 +
.../test/cases/exp-serve.ssr/src/api/fragment.js | 28 +
.../cases/exp-serve.ssr/src/components/card.css | 44 +
.../cases/exp-serve.ssr/src/components/card.js | 31 +
.../test/cases/exp-serve.ssr/src/pages/products.js | 31 +
.../cases/exp-serve.ssr/src/services/products.js | 11 +
.../test/cases/exp-serve.ssr/src/styles/some.css | 3 +
packages/plugin-import-json/package.json | 4 +-
.../cases/develop.default/develop.default.spec.js | 33 +-
.../exp-build.prerender.spec.js | 1 +
.../test/cases/exp-serve.ssr/exp-serve.ssr.spec.js | 130 +
.../test/cases/exp-serve.ssr/greenwood.config.js | 7 +
.../test/cases/exp-serve.ssr/package.json | 4 +
.../test/cases/exp-serve.ssr/src/api/fragment.js | 27 +
.../cases/exp-serve.ssr/src/components/card.js | 26 +
.../cases/exp-serve.ssr/src/data/products.json | 7 +
.../test/cases/exp-serve.ssr/src/pages/products.js | 26 +
packages/plugin-import-jsx/package.json | 6 +-
.../test/cases/default/default.prerender.spec.js | 2 +-
.../exp-build.prerender.spec.js | 1 +
packages/plugin-include-html/package.json | 4 +-
packages/plugin-polyfills/package.json | 4 +-
.../plugin-polyfills/test/cases/dsd/dsd.spec.js | 2 +-
packages/plugin-postcss/package.json | 4 +-
packages/plugin-renderer-lit/README.md | 11 +-
packages/plugin-renderer-lit/package.json | 4 +-
...route-worker-lit.js => execute-route-module.js} | 20 +-
packages/plugin-renderer-lit/src/index.js | 2 +-
.../test/cases/serve.default/serve.default.spec.js | 58 +-
.../test/cases/serve.default/src/pages/artists.js | 4 +-
packages/plugin-renderer-puppeteer/package.json | 4 +-
.../src/plugins/server.js | 2 +-
.../test/cases/build.default/build.default.spec.js | 2 +-
packages/plugin-typescript/package.json | 6 +-
.../cases/develop.default/develop.default.spec.js | 33 +-
.../exp-prerender.serve.ssr.spec.js | 103 +
.../exp-prerender.serve.ssr/greenwood.config.js | 8 +
.../cases/exp-prerender.serve.ssr/package.json | 4 +
.../src/components/card/card.ts | 26 +
.../exp-prerender.serve.ssr/src/pages/index.html | 16 +
.../test/cases/exp-serve.ssr/exp-serve.ssr.spec.js | 103 +
.../test/cases/exp-serve.ssr/greenwood.config.js | 7 +
.../test/cases/exp-serve.ssr/package.json | 4 +
.../test/cases/exp-serve.ssr/src/api/fragment.js | 33 +
.../exp-serve.ssr/src/components/card/card.ts | 33 +
.../exp-serve.ssr/src/components/card/logo.png | Bin 0 -> 2171 bytes
.../exp-serve.ssr/src/components/card/styles.ts | 7 +
.../test/cases/exp-serve.ssr/src/pages/index.html | 16 +
.../options.extend-config/src/scripts/main.ts | 11 +-
yarn.lock | 6297 ++++++++++++++++++--
256 files changed, 12951 insertions(+), 2595 deletions(-)