Skip to content

v0.3.0-alpha.2

Pre-release
Pre-release
Compare
Choose a tag to compare
@thescientist13 thescientist13 released this 06 May 20:34
· 115 commits to master since this release

Overview

This release in the v0.30.0 release line adds support for native CSS and JSON imports within Greenwood and bundling of static assets referenced within CSS files.

In progress docs available here. Full release blog will come out with the final release.

If using Yarn, you can can upgrade all your Greenwood packages at once

$ yarn upgrade --scope @greenwood --latest

Changelog

https://github.com/ProjectEvergreen/greenwood/issues?q=label%3Av0.30.0+label%3Aalpha.2

  1. support resource plugin based transformations for standard module formats (ex: import JSON, CSS)
  2. support bundling of url properties (like for @font-face + src) during CSS file optimization

Breaking Changes

Minimum NodeJS Version

The new minimum NodeJS version for Greenwood is now v18.20.0. Make sure to update your CI and hosting scripts accordingly.

Custom Imports

This now means that using custom imports no longer requires the experimental flag, though a flag is still needed

# before
$ node --experimental-loader ./node_modules/@greenwood/cli/src/loader.js ./node_modules/.bin/greenwood <command>

# after
$ node --loader ./node_modules/@greenwood/cli/src/loader.js ./node_modules/.bin/greenwood <command>

Note

We hope that before our 1.0 release this flag will not be required.

Import CSS / JSON deprecations

Now that loading CSS and JSON are web standards, the following plugins will no longer be recieving updates and will be deprecated as part of this release.

Import Raw

However, if you still need to load arbitrary content as an ES Module like the CSS plugin provided, there is now a general purpose plugin called plugin-import-raw which can provided this functionality, e.g.

/* my-component.css */
h1 {
  color: red;
}
import styles from './my-component.css?type=raw'`;

console.log(styles); // h1 { color: red; }

Tip

If you were using these plugins within something like WTR, you'll want to modify your customizations accordingly by making sure to pass the Sec-Fetch-Dest header. See this file for reference.

Known Issues

  1. nested assets from an optimized CSS file are breaking the build
  2. theme pack CSS not being handled as raw CSS

Diff

$ git diff v0.30.0-alpha.1 v0.30.0-alpha.2 --stat | grep -v "www"
 .eslintrc.cjs                                      |  23 +-
 .github/workflows/{ci-exp.yml => ci-loaders.yml}   |   4 +-
 .../{ci-win-exp.yml => ci-win-loaders.yml}         |   4 +-
 .gitignore                                         |   1 +
 .ls-lint.yml                                       |   1 +
 .nvmrc                                             |   2 +-
 greenwood.config.js                                |  11 +-
 lerna.json                                         |   2 +-
 package.json                                       |  16 +-
 packages/cli/package.json                          |   9 +-
 packages/cli/src/commands/build.js                 |   4 +
 packages/cli/src/config/rollup.config.js           |  75 +++-
 packages/cli/src/lib/resource-utils.js             |  11 +-
 packages/cli/src/lifecycles/bundle.js              |  25 +-
 packages/cli/src/lifecycles/prerender.js           |   4 +
 packages/cli/src/lifecycles/serve.js               |  36 ++
 packages/cli/src/loader.js                         |  49 ++-
 .../src/plugins/resource/plugin-node-modules.js    |   7 +-
 .../src/plugins/resource/plugin-standard-css.js    |  63 ++-
 .../src/plugins/resource/plugin-standard-json.js   |  18 +
 .../build.config-optimization-default.spec.js      |  63 ++-
 .../fixtures/expected.css                          |   4 +-
 .../src/images/link.png                            | Bin 0 -> 4777 bytes
 .../src/images/webcomponents.jpg                   | Bin 0 -> 8143 bytes
 .../src/pages/index.html                           |   9 +
 .../src/styles/main.css                            |   1 +
 .../src/system/variables.css                       |   6 +-
 .../theme-pack-context-plugin.js                   |  13 +-
 .../develop.plugins.context/greenwood.config.js    |   4 +-
 .../loaders-build.import-attributes.spec.js        |  77 ++++
 .../src/components/card/card.css                   |   3 +
 .../src/components/card/card.js                    |  27 ++
 .../src/components/card/card.json                  |   5 +
 .../src/pages/index.html                           |  11 +
 .../greenwood.config.js                            |   3 +
 ...aders-build.prerender-import-attributes.spec.js |  97 +++++
 .../package.json                                   |   3 +
 .../src/components/hero/hero.css                   |  18 +
 .../src/components/hero/hero.js                    |  40 ++
 .../src/components/hero/hero.json                  |   3 +
 .../src/index.html                                 |  12 +
 .../loaders-develop.ssr-import-attributes.spec.js  | 186 +++++++++
 .../src/api/fragment.js                            |  17 +
 .../src/components/card/card.css                   |   3 +
 .../src/components/card/card.js                    |  27 ++
 .../src/components/card/card.json                  |   5 +
 .../src/pages/greeting.js                          |  10 +
 ...ers-serve.default.ssr-import-attributes.spec.js | 167 ++++++++
 .../src/api/fragment.js                            |  17 +
 .../src/components/card/card.css                   |   3 +
 .../src/components/card/card.js                    |  27 ++
 .../src/components/card/card.json                  |   5 +
 .../src/pages/greeting.js                          |  10 +
 .../serve.config.base-path.spec.js                 |   4 +-
 .../src/images/webcomponents.jpg                   | Bin 0 -> 8143 bytes
 .../serve.config.base-path/src/styles/main.css     |   1 +
 packages/init/package.json                         |   2 +-
 packages/plugin-adapter-netlify/package.json       |   4 +-
 packages/plugin-adapter-vercel/package.json        |   4 +-
 packages/plugin-babel/package.json                 |   4 +-
 packages/plugin-babel/src/index.js                 |   4 +-
 packages/plugin-google-analytics/package.json      |   4 +-
 packages/plugin-graphql/README.md                  |   4 +-
 packages/plugin-graphql/package.json               |   4 +-
 .../greenwood.config.js                            |   0
 .../loaders-prerender.query-children.spec.js}      |   0
 .../package.json                                   |   0
 .../src/components/posts-list.js                   |   2 +-
 .../src/pages/blog/first-post/index.md             |   0
 .../src/pages/blog/second-post/index.md            |   0
 .../src/pages/index.html                           |   0
 packages/plugin-import-commonjs/package.json       |   4 +-
 packages/plugin-import-css/README.md               |   2 +
 packages/plugin-import-css/package.json            |   8 +-
 .../test/cases/default/default.spec.js             |   2 +-
 .../cases/develop.default/develop.default.spec.js  |   2 +-
 .../exp-build.prerender.spec.js                    |   2 +-
 .../test/cases/exp-serve.ssr/exp-serve.ssr.spec.js |   2 +-
 packages/plugin-import-json/README.md              |   2 +
 packages/plugin-import-json/package.json           |   8 +-
 .../test/cases/default/default.spec.js             |   2 +-
 .../cases/develop.default/develop.default.spec.js  |   2 +-
 .../exp-build.prerender.spec.js                    |   2 +-
 .../test/cases/exp-serve.ssr/exp-serve.ssr.spec.js |   2 +-
 packages/plugin-import-jsx/README.md               |  11 +-
 packages/plugin-import-jsx/package.json            |   6 +-
 packages/plugin-import-jsx/src/index.js            |   7 +-
 .../test/cases/default/src/templates/app.html      |   2 +-
 .../greenwood.config.js                            |   0
 .../loaders-build.prerender.spec.js}               |   3 +-
 .../package.json                                   |   0
 .../src/components/footer.jsx                      |   0
 .../test/cases/loaders-build.prerender/src/main.js |   1 +
 .../src/pages/index.md                             |   0
 .../src/templates/app.html                         |   2 +-
 packages/plugin-import-raw/README.md               |  63 +++
 packages/plugin-import-raw/package.json            |  31 ++
 packages/plugin-import-raw/src/index.js            |  67 +++
 .../cases/build.matchers/build.matchers.spec.js    |  84 ++++
 .../test/cases/build.matchers/greenwood.config.js  |  12 +
 .../test/cases/build.matchers/src/main.js          |   3 +
 .../test/cases/build.matchers/src/pages/index.html |  12 +
 .../test/cases/default/default.spec.js             |  83 ++++
 .../test/cases/default/greenwood.config.js         |   8 +
 .../test/cases/default/src/main.js                 |   3 +
 .../test/cases/default/src/pages/index.html        |  12 +
 .../test/cases/default/src/styles.css              |   3 +
 .../cases/develop.default/develop.default.spec.js  | 126 ++++++
 .../test/cases/develop.default/greenwood.config.js |   7 +
 .../test/cases/develop.default/package.json        |   4 +
 .../test/cases/develop.default/src/main.css        |  12 +
 .../test/cases/develop.default/src/styles.css.js   |   1 +
 .../loaders-build.prerender/greenwood.config.js    |   8 +
 .../loaders-build.prerender.spec.js                |  90 ++++
 .../cases/loaders-build.prerender/package.json     |   4 +
 .../src/components/footer.css                      |   1 +
 .../src/components/footer.js                       |  25 ++
 .../loaders-build.prerender/src/pages/index.md     |   3 +
 .../loaders-build.prerender/src/templates/app.html |  12 +
 .../cases/loaders-serve.ssr/greenwood.config.js    |   7 +
 .../loaders-serve.ssr/loaders-serve.ssr.spec.js    | 152 +++++++
 .../test/cases/loaders-serve.ssr/package.json      |   4 +
 .../cases/loaders-serve.ssr/src/api/fragment.js    |  28 ++
 .../loaders-serve.ssr/src/components/card.css      |  44 ++
 .../cases/loaders-serve.ssr/src/components/card.js |  31 ++
 .../cases/loaders-serve.ssr/src/pages/products.js  |  31 ++
 .../loaders-serve.ssr/src/services/products.js     |  11 +
 .../cases/loaders-serve.ssr/src/styles/some.css    |   3 +
 packages/plugin-include-html/package.json          |   4 +-
 packages/plugin-polyfills/package.json             |   4 +-
 packages/plugin-postcss/README.md                  |   2 -
 packages/plugin-postcss/package.json               |   4 +-
 packages/plugin-postcss/src/index.js               |   8 +-
 packages/plugin-renderer-lit/README.md             |  12 +-
 packages/plugin-renderer-lit/package.json          |   4 +-
 .../build.prerender.getting-started.spec.js        |   6 +-
 .../greenwood.config.js                            |   9 +
 ...aders-build.prerender.import-attributes.spec.js | 193 +++++++++
 .../package.json                                   |   7 +
 .../src/components/header/header.css               |   5 +
 .../src/components/header/header.js                |  27 ++
 .../src/components/header/nav.json                 |   3 +
 .../src/pages/index.html                           |  19 +
 .../test/cases/serve.default/serve.default.spec.js |  10 +-
 packages/plugin-renderer-puppeteer/package.json    |   4 +-
 packages/plugin-typescript/package.json            |   4 +-
 .../greenwood.config.js                            |   0
 .../loaders-serve.prerender-ssr.spec.js}           |   0
 .../package.json                                   |   0
 .../src/components/card/card.ts                    |   0
 .../src/pages/index.html                           |   0
 .../greenwood.config.js                            |   0
 .../loaders-serve.ssr.spec.js}                     |   0
 .../package.json                                   |   0
 .../src/api/fragment.js                            |   0
 .../src/components/card/card.ts                    |   0
 .../src/components/card/logo.png                   | Bin
 .../src/components/card/styles.ts                  |   0
 .../src/pages/index.html                           |   0
 tsconfig.json                                      |   5 +-
 yarn.lock                                          | 462 +++++++++++++++------
 173 files changed, 2943 insertions(+), 359 deletions(-)