Skip to content

Commit d656a77

Browse files
content: v0.33.0 release blog post (#241)
1 parent 0615084 commit d656a77

3 files changed

Lines changed: 148 additions & 1 deletion

File tree

Lines changed: 6 additions & 0 deletions
Loading
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: Release - v0.33.0
3+
abstract: TypeScript for all and an improved Greenwood init scaffolding experience.
4+
published: 2025-9-13
5+
coverImage: /assets/typescript-square.svg
6+
layout: blog
7+
---
8+
9+
# Greenwood v0.33.0
10+
11+
**Published: Sept 13th, 2025**
12+
13+
<!-- <img src="/assets/typescript.svg" style="display:block; width: 90%; margin: 10px auto;" alt="TypeScript logo"/> -->
14+
15+
## What's New
16+
17+
A new Greenwood release is here and we are excited to highlight a few of the key features available in this release. These include full native TypeScript support (no longer experimental!), an overhaul of Greenwood's new project scaffolding CLI, and a new standalone markdown plugin. The new minimum version of NodeJS has now been bumped to **>= 22.18.0**.
18+
19+
Along with a set of enhancements and bug fixes, this release continues our effort to improve ecosystem compatibility some fixes to our adapter plugins and continuing to refine our import map generation capabilities. Thank you so much to everyone who got involved with us for this release including two new first-time contributors! It means a lot to us and we appreciate your support of Greenwood. πŸ’š
20+
21+
> Please refer to the [release notes](https://github.com/ProjectEvergreen/greenwood/releases/tag/v0.33.0) for the complete changelog and overview of breaking changes.
22+
23+
## Native TypeScript Support
24+
25+
With NodeJS **22.18.0**, TypeScript support in Greenwood is no longer experimental and requires no flags.
26+
27+
```json5
28+
// before
29+
{
30+
scripts: {
31+
build: "'NODE_OPTIONS=--experimental-strip-types' greenwood build",
32+
},
33+
}
34+
```
35+
36+
```json5
37+
// after
38+
{
39+
scripts: {
40+
build: "greenwood build",
41+
},
42+
}
43+
```
44+
45+
We've also formalized our [_tsconfig.json_ settings](/docs/resources/typescript/#setup), updating our required options and recommended settings:
46+
47+
<!-- prettier-ignore-start -->
48+
49+
```json5
50+
{
51+
"compilerOptions": {
52+
// minimum required configuration
53+
"target": "es2020",
54+
"module": "preserve",
55+
"moduleResolution": "bundler",
56+
"allowImportingTsExtensions": true,
57+
"noEmit": true,
58+
59+
// additional recommended configuration
60+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
61+
"verbatimModuleSyntax": true,
62+
"erasableSyntaxOnly": true,
63+
},
64+
65+
"exclude": ["./public/", "./greenwood/", "node_modules"],
66+
}
67+
```
68+
69+
<!-- prettier-ignore-end -->
70+
71+
Don't want to set this all up yourself? We've got you, as this can all be automatically generated for you through Greenwood's init scaffolding CLI. Wait, TypeScript in the init CLI? Yes, you heard that right, so let's tell you all about it! πŸ‘‡
72+
73+
## Init Scaffolding
74+
75+
The Init scaffolding CLI has been improved to be a more robust and prompt based experience; walking you through selecting a number of options for creating and customizing your next Greenwood project. Now, when scaffolding out a new Greenwood project, you're able to specify the name / output directory, support for TypeScript, and package manager.
76+
77+
<video width="100%" controls>
78+
<source src="//dzsbnrzvzfaq5.cloudfront.net/greenwood-init-latest.mp4" type="video/mp4">
79+
</video>
80+
81+
It's as easy as running:
82+
83+
```shell
84+
$ npx @greenwood/init@latest
85+
```
86+
87+
As all the prompted options are available as CLI flags, if you know what you want, you can one shot the entire scaffolding all in one command! For example, to automatically create and name a project with TypeScript and PNPM, you could use this command:
88+
89+
```shell
90+
$ npx @greenwood/init@latest --name my-app --ts --i pnpm
91+
```
92+
93+
> Check out our [Init setup docs](/docs/introduction/setup/#init) to see the full list of options.
94+
95+
## Standalone Markdown Plugin
96+
97+
Although a breaking change, we've made the decision to move markdown support outside of the Greenwood CLI and into its own standalone plugin, still based on the [**unified**](https://unifiedjs.com/) ecosystem. There were a few motivations for this change:
98+
99+
- Markdown support required _seven_ dependencies, which is a lot for something not every project might need.
100+
- There are many flavors and implementations of markdown, and so this allows any user to swap out the implementation with their own preference.
101+
- It validates in a meaningful way that any file format could be a custom page format, like YAML or JSON.
102+
103+
Upgrading is super easy, just install **@greenwood/plugin-markdown** and add it your Greenwood configuration file, passing any markdown plugins as options to the plugin itself.
104+
105+
```js
106+
// before
107+
export default {
108+
markdown: {
109+
plugins: ["@mapbox/rehype-prism", "rehype-autolink-headings", "remark-gfm"],
110+
},
111+
};
112+
```
113+
114+
```js
115+
// after
116+
import { greenwoodPluginMarkdown } from "@greenwood/plugin-markdown";
117+
118+
export default {
119+
plugins: [
120+
greenwoodPluginMarkdown({
121+
plugins: ["@mapbox/rehype-prism", "rehype-autolink-headings", "remark-gfm"],
122+
}),
123+
],
124+
};
125+
```
126+
127+
> Check out [the (new) docs page](/docs/plugins/markdown/) for all information on adopting the plugin.
128+
129+
## Honorable Mentions
130+
131+
In addition to these key features, we would also like to share some additional noteworthy items as part of this release:
132+
133+
- πŸ“¦ Combined with the move to making markdown a standalone plugin, we were able remove **eight** dependencies total from the Greenwood CLI.
134+
- πŸ’ͺ Greenwood now supports bare CSS `@import` specifiers for those packages that have an export maps. So now, something like this would work without needing to specify the full path to _node_modules_; `@import "open-props/sizes"`.
135+
- βš™οΈ Made an enhancement to more efficiently generate SSR page and layout contents in renderer plugins by not rendering all the content all the time. Now, just the content that is needed for a given operation is executed.
136+
- πŸƒ Undertook a refactoring effort to enable greater concurrency in Greenwood's asset bundling, page generation, and pre-rendering operations (thank you kind contributor! πŸ†).
137+
- πŸ› Fixed an issue where SSR pages were not participating in the layout / page merging hierarchy, in which SSR pages didn't merge correctly into page and / or app layouts. However, there was also a breaking change as part of this in which Greenwood has now removed default layouts and pages content.
138+
139+
---
140+
141+
As always, we're excited to see where the community can take Greenwood and are always available to chat on [GitHub](https://github.com/ProjectEvergreen/greenwood) or [Discord](/discord/). See you for the next release! ✌️

β€Žsrc/pages/index.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ imports:
1010
- ../styles/home.css
1111
---
1212

13-
<app-latest-post link="/blog/release/v0-32-0/" title="We just released v0.32.0"></app-latest-post>
13+
<app-latest-post link="/blog/release/v0-33-0/" title="We just released v0.33.0"></app-latest-post>
1414

1515
<app-hero-banner></app-hero-banner>
1616

0 commit comments

Comments
Β (0)