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 14.0.0 #5205
Comments
If we can use dynamic imports, Line 128 in e25b5a2
|
Does node@12 supports dynamic imports? If so, that'll be great as we are reliant lazy/dynamic loading for performance. |
Oh, I missed that the Updated image: |
I think the LTS release of node 12 supports ESM without a flag. See: |
@m-allanson I think we talk about |
Perhaps ESM (non-dynamic) with bundling will be our approach for 14.0.0. It'll give us:
Steps towards this:
|
Not ready yet, and I think will not ready in near future |
FYI. https://jestjs.io/docs/ecmascript-modules It seems Jest's mocks do not work with ESM: jestjs/jest#10025 |
Thoughts on a node 14 minimum in We're such a small team of volunteers that I think we may need to jump to a minimum of node 14 if we are to stand a chance of migrating to ESM to maintain compatibility with our dependencies. As a dev tool, I think we can be progressive in the node versions we support. We'd then be able to use dynamic imports for rules, syntaxes, formatters, plugins and processors, which will hopefully keep things simple and doable. If anyone fancies it, a proof of concept showing dynamic imports working (for just one of these parts) would be ace. (It'd also be good to know if either method B or C will work with transpiling dynamic imports and Jest.). |
The idea sounds attractive to me. But the one thing that I’m concerned about is that perhaps many people will still be using Node.js 12 until it will be End-Of-Life on 2022-04-30. For example, the following application will not be able to install stylelint 14:
Such applications must continue using stylelint 12 or upgrade to Node.js 14. The task may be hard for some applications... 🤔 There is a more flexible but a bit complex way to use dynamic imports and require Node.js 12 as a minimum. In that case, people using Node.js 12 would have to specify the |
Why is there a dilemma? With this level of support: {
"engines": {
"node": "^12.20 || >= 14.13"
}
} You can use everything to do with ESM in Node.js except top level await, which is available unflagged since v14.8.0: https://nodejs.org/dist/latest-v16.x/docs/api/esm.html#esm_modules_ecmascript_modules Conveniently, this is also matches the minimum Node.js versions that support package subpath patterns. I'm migrating all of my published packages to this level of Node.js support, and so are many other package maintainers (although some are lazy and incorrectly just update |
@jaydenseric Excellent idea! 👏🏼 It should resolve any concerns! |
Thanks for clearing that up. I hadn't realised dynamic imports are available in 12.20 without a flag. I think we're good to proceed with moving to ESM with: {
"engines": {
"node": "^12.20 || >= 14.13"
}
} Next steps:
If anyone fancies digging in, please do. |
One such package which has dropped support for node 10 is meow, which stylelint depends on. Version 9 is afflicted with this advisory in its dependency tree, which is resolved naturally in version 10. Version 10 of meow drops support for node 10 though, so updating to it would mean dropping node 10 support here too. |
Thanks. Meow 10.0.0 release notes and linked ESM migration guide:
|
I'm going to create separate issues for bits in the 14.0.0 release. I'll use this issue as an umbrella, and create an ordered checklist in the top post so that we have a clear set of steps. |
I've created a |
v14.0.0 may be a good chance to rename the main branch from |
You forgot #5173. Will it have to wait version 15? |
I can be included in a minor release due to our semver policy:
|
Our work to be done:
customSyntax
)configOverrides
option #5522I believe these are the steps to releasing a version without any security warnings.
Non-blocking work we or the community needs to do:
stylelint-config-scss-standard
Non-breaking nice-to-haves:
fs/promises
module #5271Non-blocking limitations:
Release:
Node 10 EOL is at the end of April. A lot of the packages we depend on will shift to Node 12 (and ESM) around then (see #5198 and sindresorhus/meta#15)
It'll be a major release of stylelint, so it's an opportunity to roll in other breaking changes. If you've got an itch to scratch that's a breaking change, then this is the time to do it!
We should remove deprecated code, e.g. #4899 and all the deprecated rules.
The text was updated successfully, but these errors were encountered: