Note that this release will be the last one of the project. It will keep working for the foreseeable future, but won't receive any updates besides security fixes. On why we moved away from Node.js-using builds and how, see our "Step away from that Node.js" blog post. Scroll down for our recommended migration guide.
This release brings a host of dependency updates to keep up with the ecosystem, which unfortunately also cause breaking changes.
Breaking changes
Recommended Node.js version is now 24
Node.js v24 will enter active long-term support (LTS) phase within days, after which it will be supported until about April 2028. While you can use Node.js Extensions with earlier version (and notably v22, perhaps v20 should just work), we now recommend you use v24.
Breaking changes in linters and SASS
In the #144 pull request we updated all the NPM dependencies. This means, among others, that ESLint was updated from 8.47.0 to 9.37.0, PostCSS from 8.4.31 to 8.5.6, Prettier from 3.0.3 to 3.6.2, and SASS from 1.69.5 to 1.93.2.
While we tried to keep impact to projects consuming Node.js Extensions to a minimum as far as NE itself goes, since many of these are breaking releases, you need to expect at least a lot of new linter violations and SASS deprecations. See e.g. Lombiq/Orchard-Base-Theme#152 for the kinds of changes you may need to do in your own projects.
ESLint uses a new config file format. While we added support for this in a backward-compatible way, so your current config files will continue to work, note that a new, eslint.config.cjs file will be automatically created. You can remove this if not needed, or if you use just the default .eslintrc.js file (the old format) then remove the latter.
Upgrade PNPM from 8.15.9 to 9.15.9
Node.js Extensions used the old 8.x version of PNPM, so now we upgraded to 9.x. The only impact consuming projects may feel is the format of pnpm-lock.yaml files changing and packageManager being updated in their package.json files. This is automatic, however, and you shouldn't notice anything part from these files getting updated the first time you install Node.js Extensions v3.
As you may know, the current version of PNPM is 10.x. We choose not to upgrade to it, since it contains a lot of breaking changes that also severely impact all consuming projects. We don't see us upgrading to 10.x in the foreseeable future.
Migrating away from Node.js Extensions and Node builds
With modern browsers, CSS, and JS, for a lot of apps you don't actually need a client-side asset build pipeline at all. In our experience, this is the case at least. Here's how you can move your project to a no-build approach, without Node.js Extensions, or using Node.js at all:
- Migrate all SCSS to CSS. Be sure to fully utilize what modern CSS is capable of, which is most of what SCSS covers minus mixins. Put CSS files into the wwwroot folders directly.
- Move all JS files to the wwwroot folders. No need to copy them from an Assets folder.
- Use Microsoft Library Manager instead of NPM for third-party packages and remove any remaining Node references. You can see an example of us doing that here: https://github.com/Lombiq/Orchard-Chart.js/pull/103/files.
- Re-add CSS, JS, and MD linting with our Asset Linting GitHub Actions workflow. This uses the exact same default configuration as NE, and you also have the option to override those, similarly to NE.
Enjoy your builds now being a lot faster, and your development story being much simpler!
What's Changed
- OSOE-1115: Update Microsoft.NET.Test.Sdk to 17.14.0 by @Piedone in #132
- OSOE-1120: Supporting EOL commas in every linter workflow configuration for easier config formatting by @Piedone in #133
- OSOE-1123: Updating Microsoft.NET.Test.Sdk to 17.14.1 by @Piedone in #134
- OSOE-1126: Updating xUnit packages by @Piedone in #135
- ORCH-299: Adding demo video about Linting with GitHub Actions by @domonkosgabor in #138
- OSOE-1144: Updating xUnit xunit.v3 to v3.0.0 and xunit.runner.visualstudio to v3.1.3 by @Piedone in #139
- NEST-596: Exclude third party folders from markdown lint by @wAsnk in #137
- OSOE-1147: Updating Microsoft.Build packages by @Piedone in #140
- OSOE-1153: Update dependencies by @Piedone in #141
- OSOE-1164: Updating xUnit to latest by @Piedone in #142
- OSOE-1166: Update dependency Microsoft.NET.Test.Sdk to v18 by @Piedone in #143
- OSOE-954: Update NPM dependencies to latest in Lombiq.NodeJs.Extensions by @sarahelsaig in #144
- Update All packages by @renovate[bot] in #114
- Update All packages (major) by @renovate[bot] in #115
- OSOE-954: Update All packages by @sarahelsaig in #147
- Update All packages by @renovate[bot] in #145
- Update All packages (major) by @renovate[bot] in #146
- Update dependency eslint-plugin-n to v17 by @renovate[bot] in #148
- OSOE-1169: Update dependencies by @Piedone in #153
- Update dependency Microsoft.Build.Tasks.Core to 17.14.28 [SECURITY] by @renovate[bot] in #150
- Update dependency Microsoft.Build.Framework to 17.14.28 by @renovate[bot] in #152
- Update dependency Microsoft.Build.Utilities.Core to 17.14.28 [SECURITY] by @renovate[bot] in #151
- Update dependency eslint to v9.38.0 by @renovate[bot] in #156
- OSOE-1010: Upgrade PNPM to 9.15.9, improve docs by @Piedone in #155
- OSOE-1010: Fix lint workflow by @Piedone in #157
New Contributors
- @domonkosgabor made their first contribution in #138
Full Changelog: v2.2.0...v3.0.0