5/20/2025 at 1:35:21 PM
I was excited about Deno precisely because it was a greenfield approach without backwards compatibility. Early on, they focused on reducing complexity and it worked. There were definitely some new pain points compared to Node, but I found them pretty manageable.At some point, rather than coming up with native solutions to those pain points, they retreated and started leaning on backwards compatibility as a workaround.
Today, Deno feels more complex than Node does because it contains both approaches. And now there are lots of edge cases where a Node package ought to work, but doesn’t because of one unimplemented API or option or a bug that exists only in Deno. My favorite testing framework, AVA, still isn’t supported.
I used to just ignore the npm compatibility layer and target Deno itself, but that’s become more cumbersome to do over time. For example, look at `deno run —help` and look at how many command line options and env vars there are. It’s exploded in the past few years. A lot of that is for npm interoperability. For me, it’s just a lot of noise.
The one area of Node compatibility that I want the most is support for ESLint configs in the Deno linter. Yet they don’t seem to want to do that.
I really want Deno to succeed, if for no other reason than because it’s pushing Node to do things that they should’ve done years ago, such as adding a permission system. I just don’t think the current vision for Deno is very coherent or consistent with its original purpose.
by sholladay
5/20/2025 at 4:44:53 PM
> My favorite testing framework, AVA, still isn’t supported.Have you checked recently? The docs (https://docs.deno.com/runtime/fundamentals/testing/) specifically mention AVA as being supported. Then again, I'd assume that most devs using Deno just use the built-in `deno test` instead of a third-party testing framework.
> The one area of Node compatibility that I want the most is support for ESLint configs in the Deno linter.
Again, have you checked recently? According to the docs this is supported: "Deno's built-in linter, `deno lint`, supports recommended set of rules from ESLint to provide comprehensive feedback on your code. (...) You can specify custom rules, plugins, and settings to tailor the linting process to your needs." (https://docs.deno.com/runtime/fundamentals/linting_and_forma...)
I've been using Deno for 6 years now. And I'm actually quite happy that most Deno projects don't have a custom testing and linting setup.
by mark_and_sweep
5/20/2025 at 11:34:18 PM
> And I'm actually quite happy that most Deno projects don't have a custom testing and linting setup.I feel similarly. The standard configurations (e.g. tsconfig, linting, formatting) and bolts-included tooling (test, lint, fmt, etc.) are what make Deno so great for developers.
I've started using Deno in my spare time for various projects - and it just _feels_ more productive. I go from idea to testing TypeScript in minutes - which never happened in Node land.
by FunnyLookinHat
5/21/2025 at 8:06:09 AM
> The standard configurations (e.g. tsconfig, linting, formatting) and bolts-included tooling (test, lint, fmt, etc.) are what make Deno so great for developers.And that's great for greenfield projects - although there's competition with Biome and Vite / Vitest for a lot of those - but the vast majority of Node use today is existing projects, and at least at one point Deno (and Bun, maybe others) were marketed (I think?) as a drop-in replacement for NodeJS. But maybe I'm misremembering.
by Cthulhu_
5/21/2025 at 3:29:24 AM
Why are you complaining about npm compatibility while also complaining that they don’t have enough compatibility? Sounds like you want it both ways — for it to be very simple and purposeful, but also to broadly support lots of options from the Node ecosystem.Their purpose is to be a single toolchain & system for JS, and they’re solving a lot of problems in that area. No need to configure huge number of tools for a reasonable professional, production setup — even built in Otel! And if that’s their goal, why would they spend time on complete eslint compatibility? That’s the old world.
by anon7000