← Back to context

Comment by flohofwoe

15 hours ago

> ...pretty much any functionality provided to deno is available for node as well.

Unfortunately Node still can't do something like this out of the box (AFAIK at least):

    import { Bla } from "npm:bla@^5";

Such direct imports are basically the killer feature of Deno for simple standalone tooling scripts in otherwise non-JS/TS projects, e.g. it made TS a perfect replacement for Python even without a "batteries included" standard library.

Deno also has a builtin TS type checker, linter, formatter, test runner with coverage support, package manager, language server etc etc... In node these are all separate (and often 3rd-party) tools.

This doesn't seem like a big deal. Don't you just npm install whatever you need and then change the import names?

  • I don't want the install step. That's redundant. Just a .ts script I can run via `deno run bla.ts` and which directly pulls in any dependency it needs from the web.

this one is actually a bad pattern to avoid.

  • Only when you have no control over the version you're pulling in, but the semver resolution works as expected. Also we're talking about small standalone 'shell scripts', not 'real projects'. Think 'bla.sh', just with a .ts extension. Deno is really great for such small helper scripts.

    • > Also we're talking about small standalone 'shell scripts', not 'real projects'. Think 'bla.sh', just with a .ts extension. Deno is really great for such small helper scripts.

      Okay. Now I'm confused and my head hurts. You want to randomly download dependencies for a "shell script" at the time of invocation?

      I think I need to lie down.

      1 reply →

FWIW, almost this exact syntax for imports (without the `npm:` prefix) is supported for standalone scripts with Bun.

  • Bun is not an alternative, it was also acquihired and will probably become an internal project of Anthropic for claude code.